algebra.free_algebraMathlib.Algebra.FreeAlgebra

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -376,7 +376,7 @@ theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebr
 theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
     (w : (f : FreeAlgebra R X → A) ∘ ι R = (g : FreeAlgebra R X → A) ∘ ι R) : f = g :=
   by
-  rw [← lift_symm_apply, ← lift_symm_apply] at w 
+  rw [← lift_symm_apply, ← lift_symm_apply] at w
   exact (lift R).symm.Injective w
 #align free_algebra.hom_ext FreeAlgebra.hom_ext
 -/
@@ -395,7 +395,7 @@ noncomputable def equivMonoidAlgebraFreeMonoid :
       apply MonoidAlgebra.algHom_ext; intro x
       apply FreeMonoid.recOn x
       · simp; rfl
-      · intro x y ih; simp at ih ; simp [ih])
+      · intro x y ih; simp at ih; simp [ih])
     (by ext; simp)
 #align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoid
 -/
@@ -470,8 +470,8 @@ theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap
   let f1 : FreeAlgebra R X →ₐ[R] R := lift R 1
   have hf0 : f0 (ι R x) = 0 := lift_ι_apply _ _
   have hf1 : f1 (ι R x) = 1 := lift_ι_apply _ _
-  rw [h, f0.commutes, Algebra.id.map_eq_self] at hf0 
-  rw [h, f1.commutes, Algebra.id.map_eq_self] at hf1 
+  rw [h, f0.commutes, Algebra.id.map_eq_self] at hf0
+  rw [h, f1.commutes, Algebra.id.map_eq_self] at hf1
   exact zero_ne_one (hf0.symm.trans hf1)
 #align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMap
 -/
@@ -524,7 +524,7 @@ theorem induction {C : FreeAlgebra R X → Prop}
     simp [of, Subtype.coind]
   -- finding a proof is finding an element of the subalgebra
   convert Subtype.prop (lift R of a)
-  simp [AlgHom.ext_iff] at of_id 
+  simp [AlgHom.ext_iff] at of_id
   exact of_id a
 #align free_algebra.induction FreeAlgebra.induction
 -/
Diff
@@ -444,7 +444,14 @@ theorem algebraMap_eq_one_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 1 ↔
 #print FreeAlgebra.ι_injective /-
 -- this proof is copied from the approach in `free_abelian_group.of_injective`
 theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgebra R X) :=
-  fun x y hoxy => by_contradiction <| by classical
+  fun x y hoxy =>
+  by_contradiction <| by
+    classical exact fun hxy : x ≠ y =>
+      let f : FreeAlgebra R X →ₐ[R] R := lift R fun z => if x = z then (1 : R) else 0
+      have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
+      have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
+      have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
+      one_ne_zero <| hfy1.symm.trans hfy0
 #align free_algebra.ι_injective FreeAlgebra.ι_injective
 -/
 
Diff
@@ -444,14 +444,7 @@ theorem algebraMap_eq_one_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 1 ↔
 #print FreeAlgebra.ι_injective /-
 -- this proof is copied from the approach in `free_abelian_group.of_injective`
 theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgebra R X) :=
-  fun x y hoxy =>
-  by_contradiction <| by
-    classical exact fun hxy : x ≠ y =>
-      let f : FreeAlgebra R X →ₐ[R] R := lift R fun z => if x = z then (1 : R) else 0
-      have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
-      have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
-      have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
-      one_ne_zero <| hfy1.symm.trans hfy0
+  fun x y hoxy => by_contradiction <| by classical
 #align free_algebra.ι_injective FreeAlgebra.ι_injective
 -/
 
Diff
@@ -116,13 +116,13 @@ def hasOne : One (Pre R X) :=
 #align free_algebra.pre.has_one FreeAlgebra.Pre.hasOne
 -/
 
-#print FreeAlgebra.Pre.hasSmul /-
+#print FreeAlgebra.Pre.hasSMul /-
 /-- Scalar multiplication defined as multiplication by the image of elements from `R`.
 Note: Used for notation only.
 -/
-def hasSmul : SMul R (Pre R X) :=
+def hasSMul : SMul R (Pre R X) :=
   ⟨fun r m => mul (ofScalar r) m⟩
-#align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmul
+#align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSMul
 -/
 
 end Pre
Diff
@@ -71,7 +71,7 @@ inductive Pre
 namespace Pre
 
 instance : Inhabited (Pre R X) :=
-  ⟨of_scalar 0⟩
+  ⟨ofScalar 0⟩
 
 #print FreeAlgebra.Pre.hasCoeGenerator /-
 -- Note: These instances are only used to simplify the notation.
@@ -84,7 +84,7 @@ def hasCoeGenerator : Coe X (Pre R X) :=
 #print FreeAlgebra.Pre.hasCoeSemiring /-
 /-- Coercion from `R` to `pre R X`. Note: Used for notation only. -/
 def hasCoeSemiring : Coe R (Pre R X) :=
-  ⟨of_scalar⟩
+  ⟨ofScalar⟩
 #align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiring
 -/
 
@@ -105,14 +105,14 @@ def hasAdd : Add (Pre R X) :=
 #print FreeAlgebra.Pre.hasZero /-
 /-- Zero in `pre R X` defined as the image of `0` from `R`. Note: Used for notation only. -/
 def hasZero : Zero (Pre R X) :=
-  ⟨of_scalar 0⟩
+  ⟨ofScalar 0⟩
 #align free_algebra.pre.has_zero FreeAlgebra.Pre.hasZero
 -/
 
 #print FreeAlgebra.Pre.hasOne /-
 /-- One in `pre R X` defined as the image of `1` from `R`. Note: Used for notation only. -/
 def hasOne : One (Pre R X) :=
-  ⟨of_scalar 1⟩
+  ⟨ofScalar 1⟩
 #align free_algebra.pre.has_one FreeAlgebra.Pre.hasOne
 -/
 
@@ -121,7 +121,7 @@ def hasOne : One (Pre R X) :=
 Note: Used for notation only.
 -/
 def hasSmul : SMul R (Pre R X) :=
-  ⟨fun r m => mul (of_scalar r) m⟩
+  ⟨fun r m => mul (ofScalar r) m⟩
 #align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmul
 -/
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2020 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Adam Topaz
 -/
-import Mathbin.Algebra.Algebra.Subalgebra.Basic
-import Mathbin.Algebra.MonoidAlgebra.Basic
+import Algebra.Algebra.Subalgebra.Basic
+import Algebra.MonoidAlgebra.Basic
 
 #align_import algebra.free_algebra from "leanprover-community/mathlib"@"aa3a420527e0fbfd0f6615b95b761254a9166e12"
 
Diff
@@ -252,7 +252,7 @@ private def lift_aux (f : X → A) : FreeAlgebra R X →ₐ[R] A
       by
       induction h
       · exact (algebraMap R A).map_add h_r h_s
-      · exact (algebraMap R A).map_mul h_r h_s
+      · exact (algebraMap R A).map_hMul h_r h_s
       · apply Algebra.commutes
       · change _ + _ + _ = _ + (_ + _)
         rw [add_assoc]
@@ -513,7 +513,7 @@ theorem induction {C : FreeAlgebra R X → Prop}
   -- the arguments are enough to construct a subalgebra, and a mapping into it from X
   let s : Subalgebra R (FreeAlgebra R X) :=
     { carrier := C
-      mul_mem' := h_mul
+      hMul_mem' := h_mul
       add_mem' := h_add
       algebraMap_mem' := h_grade0 }
   let of : X → s := Subtype.coind (ι R) h_grade1
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2020 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Adam Topaz
-
-! This file was ported from Lean 3 source module algebra.free_algebra
-! leanprover-community/mathlib commit aa3a420527e0fbfd0f6615b95b761254a9166e12
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Algebra.Subalgebra.Basic
 import Mathbin.Algebra.MonoidAlgebra.Basic
 
+#align_import algebra.free_algebra from "leanprover-community/mathlib"@"aa3a420527e0fbfd0f6615b95b761254a9166e12"
+
 /-!
 # Free Algebras
 
Diff
@@ -60,6 +60,7 @@ variable (X : Type _)
 
 namespace FreeAlgebra
 
+#print FreeAlgebra.Pre /-
 /-- This inductive type is used to express representatives of the free algebra.
 -/
 inductive Pre
@@ -68,32 +69,41 @@ inductive Pre
   | add : pre → pre → pre
   | mul : pre → pre → pre
 #align free_algebra.pre FreeAlgebra.Pre
+-/
 
 namespace Pre
 
 instance : Inhabited (Pre R X) :=
   ⟨of_scalar 0⟩
 
+#print FreeAlgebra.Pre.hasCoeGenerator /-
 -- Note: These instances are only used to simplify the notation.
 /-- Coercion from `X` to `pre R X`. Note: Used for notation only. -/
 def hasCoeGenerator : Coe X (Pre R X) :=
   ⟨of⟩
 #align free_algebra.pre.has_coe_generator FreeAlgebra.Pre.hasCoeGenerator
+-/
 
+#print FreeAlgebra.Pre.hasCoeSemiring /-
 /-- Coercion from `R` to `pre R X`. Note: Used for notation only. -/
 def hasCoeSemiring : Coe R (Pre R X) :=
   ⟨of_scalar⟩
 #align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiring
+-/
 
+#print FreeAlgebra.Pre.hasMul /-
 /-- Multiplication in `pre R X` defined as `pre.mul`. Note: Used for notation only. -/
 def hasMul : Mul (Pre R X) :=
   ⟨mul⟩
 #align free_algebra.pre.has_mul FreeAlgebra.Pre.hasMul
+-/
 
+#print FreeAlgebra.Pre.hasAdd /-
 /-- Addition in `pre R X` defined as `pre.add`. Note: Used for notation only. -/
 def hasAdd : Add (Pre R X) :=
   ⟨add⟩
 #align free_algebra.pre.has_add FreeAlgebra.Pre.hasAdd
+-/
 
 #print FreeAlgebra.Pre.hasZero /-
 /-- Zero in `pre R X` defined as the image of `0` from `R`. Note: Used for notation only. -/
@@ -109,12 +119,14 @@ def hasOne : One (Pre R X) :=
 #align free_algebra.pre.has_one FreeAlgebra.Pre.hasOne
 -/
 
+#print FreeAlgebra.Pre.hasSmul /-
 /-- Scalar multiplication defined as multiplication by the image of elements from `R`.
 Note: Used for notation only.
 -/
 def hasSmul : SMul R (Pre R X) :=
   ⟨fun r m => mul (of_scalar r) m⟩
 #align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmul
+-/
 
 end Pre
 
@@ -227,9 +239,11 @@ irreducible_def ι : X → FreeAlgebra R X := fun m => Quot.mk _ m
 #align free_algebra.ι FreeAlgebra.ι
 -/
 
+#print FreeAlgebra.quot_mk_eq_ι /-
 @[simp]
 theorem quot_mk_eq_ι (m : X) : Quot.mk (FreeAlgebra.Rel R X) m = ι R m := by rw [ι]
 #align free_algebra.quot_mk_eq_ι FreeAlgebra.quot_mk_eq_ι
+-/
 
 variable {A : Type _} [Semiring A] [Algebra R A]
 
@@ -277,6 +291,7 @@ private def lift_aux (f : X → A) : FreeAlgebra R X →ₐ[R] A
   map_add' := by rintro ⟨⟩ ⟨⟩; rfl
   commutes' := by tauto
 
+#print FreeAlgebra.lift /-
 /-- Given a function `f : X → A` where `A` is an `R`-algebra, `lift R f` is the unique lift
 of `f` to a morphism of `R`-algebras `free_algebra R X → A`.
 -/
@@ -304,32 +319,43 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
         change lift_aux R (F ∘ ι R) (Quot.mk _ _ * Quot.mk _ _) = F (Quot.mk _ _ * Quot.mk _ _)
         rw [AlgHom.map_mul, AlgHom.map_mul, ha, hb] }
 #align free_algebra.lift FreeAlgebra.lift
+-/
 
+#print FreeAlgebra.liftAux_eq /-
 @[simp]
 theorem liftAux_eq (f : X → A) : liftAux R f = lift R f := by rw [lift]; rfl
 #align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eq
+-/
 
+#print FreeAlgebra.lift_symm_apply /-
 @[simp]
 theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R := by rw [lift];
   rfl
 #align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_apply
+-/
 
 variable {R X}
 
+#print FreeAlgebra.ι_comp_lift /-
 @[simp]
 theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f := by ext;
   rw [ι, lift]; rfl
 #align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_lift
+-/
 
+#print FreeAlgebra.lift_ι_apply /-
 @[simp]
 theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x := by rw [ι, lift]; rfl
 #align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_apply
+-/
 
+#print FreeAlgebra.lift_unique /-
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
     (g : FreeAlgebra R X → A) ∘ ι R = f ↔ g = lift R f := by rw [← (lift R).symm_apply_eq, lift];
   rfl
 #align free_algebra.lift_unique FreeAlgebra.lift_unique
+-/
 
 /-!
 Since we have set the basic definitions as `@[irreducible]`, from this point onwards one
@@ -337,6 +363,7 @@ should only use the universal properties of the free algebra, and consider the a
 as a quotient of an inductive type as completely hidden. -/
 
 
+#print FreeAlgebra.lift_comp_ι /-
 -- Marking `free_algebra` irreducible makes `ring` instances inaccessible on quotients.
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
 -- For now, we avoid this by not marking it irreducible.
@@ -344,7 +371,9 @@ as a quotient of an inductive type as completely hidden. -/
 theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebra R X → A) ∘ ι R) = g :=
   by rw [← lift_symm_apply]; exact (lift R).apply_symm_apply g
 #align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ι
+-/
 
+#print FreeAlgebra.hom_ext /-
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
 theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
@@ -353,7 +382,9 @@ theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
   rw [← lift_symm_apply, ← lift_symm_apply] at w 
   exact (lift R).symm.Injective w
 #align free_algebra.hom_ext FreeAlgebra.hom_ext
+-/
 
+#print FreeAlgebra.equivMonoidAlgebraFreeMonoid /-
 /-- The free algebra on `X` is "just" the monoid algebra on the free monoid on `X`.
 
 This would be useful when constructing linear maps out of a free algebra,
@@ -370,38 +401,50 @@ noncomputable def equivMonoidAlgebraFreeMonoid :
       · intro x y ih; simp at ih ; simp [ih])
     (by ext; simp)
 #align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoid
+-/
 
 instance [Nontrivial R] : Nontrivial (FreeAlgebra R X) :=
   equivMonoidAlgebraFreeMonoid.Surjective.Nontrivial
 
 section
 
+#print FreeAlgebra.algebraMapInv /-
 /-- The left-inverse of `algebra_map`. -/
 def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
   lift R (0 : X → R)
 #align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInv
+-/
 
+#print FreeAlgebra.algebraMap_leftInverse /-
 theorem algebraMap_leftInverse :
     Function.LeftInverse algebraMapInv (algebraMap R <| FreeAlgebra R X) := fun x => by
   simp [algebra_map_inv]
 #align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverse
+-/
 
+#print FreeAlgebra.algebraMap_inj /-
 @[simp]
 theorem algebraMap_inj (x y : R) :
     algebraMap R (FreeAlgebra R X) x = algebraMap R (FreeAlgebra R X) y ↔ x = y :=
   algebraMap_leftInverse.Injective.eq_iff
 #align free_algebra.algebra_map_inj FreeAlgebra.algebraMap_inj
+-/
 
+#print FreeAlgebra.algebraMap_eq_zero_iff /-
 @[simp]
 theorem algebraMap_eq_zero_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 0 ↔ x = 0 :=
   map_eq_zero_iff (algebraMap _ _) algebraMap_leftInverse.Injective
 #align free_algebra.algebra_map_eq_zero_iff FreeAlgebra.algebraMap_eq_zero_iff
+-/
 
+#print FreeAlgebra.algebraMap_eq_one_iff /-
 @[simp]
 theorem algebraMap_eq_one_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 1 ↔ x = 1 :=
   map_eq_one_iff (algebraMap _ _) algebraMap_leftInverse.Injective
 #align free_algebra.algebra_map_eq_one_iff FreeAlgebra.algebraMap_eq_one_iff
+-/
 
+#print FreeAlgebra.ι_injective /-
 -- this proof is copied from the approach in `free_abelian_group.of_injective`
 theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgebra R X) :=
   fun x y hoxy =>
@@ -413,12 +456,16 @@ theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgeb
       have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
       one_ne_zero <| hfy1.symm.trans hfy0
 #align free_algebra.ι_injective FreeAlgebra.ι_injective
+-/
 
+#print FreeAlgebra.ι_inj /-
 @[simp]
 theorem ι_inj [Nontrivial R] (x y : X) : ι R x = ι R y ↔ x = y :=
   ι_injective.eq_iff
 #align free_algebra.ι_inj FreeAlgebra.ι_inj
+-/
 
+#print FreeAlgebra.ι_ne_algebraMap /-
 @[simp]
 theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap R _ r := fun h =>
   by
@@ -430,16 +477,21 @@ theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap
   rw [h, f1.commutes, Algebra.id.map_eq_self] at hf1 
   exact zero_ne_one (hf0.symm.trans hf1)
 #align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMap
+-/
 
+#print FreeAlgebra.ι_ne_zero /-
 @[simp]
 theorem ι_ne_zero [Nontrivial R] (x : X) : ι R x ≠ 0 :=
   ι_ne_algebraMap x 0
 #align free_algebra.ι_ne_zero FreeAlgebra.ι_ne_zero
+-/
 
+#print FreeAlgebra.ι_ne_one /-
 @[simp]
 theorem ι_ne_one [Nontrivial R] (x : X) : ι R x ≠ 1 :=
   ι_ne_algebraMap x 1
 #align free_algebra.ι_ne_one FreeAlgebra.ι_ne_one
+-/
 
 end
 
@@ -449,6 +501,7 @@ end FreeAlgebra
 `has_coe_to_sort` below. Closing it and reopening it fixes it... -/
 namespace FreeAlgebra
 
+#print FreeAlgebra.induction /-
 /-- An induction principle for the free algebra.
 
 If `C` holds for the `algebra_map` of `r : R` into `free_algebra R X`, the `ι` of `x : X`, and is
@@ -477,6 +530,7 @@ theorem induction {C : FreeAlgebra R X → Prop}
   simp [AlgHom.ext_iff] at of_id 
   exact of_id a
 #align free_algebra.induction FreeAlgebra.induction
+-/
 
 end FreeAlgebra
 
Diff
@@ -407,11 +407,11 @@ theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgeb
   fun x y hoxy =>
   by_contradiction <| by
     classical exact fun hxy : x ≠ y =>
-        let f : FreeAlgebra R X →ₐ[R] R := lift R fun z => if x = z then (1 : R) else 0
-        have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
-        have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
-        have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
-        one_ne_zero <| hfy1.symm.trans hfy0
+      let f : FreeAlgebra R X →ₐ[R] R := lift R fun z => if x = z then (1 : R) else 0
+      have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
+      have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
+      have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
+      one_ne_zero <| hfy1.symm.trans hfy0
 #align free_algebra.ι_injective FreeAlgebra.ι_injective
 
 @[simp]
Diff
@@ -118,8 +118,8 @@ def hasSmul : SMul R (Pre R X) :=
 
 end Pre
 
-attribute [local instance]
-  pre.has_coe_generator pre.has_coe_semiring pre.has_mul pre.has_add pre.has_zero pre.has_one pre.has_smul
+attribute [local instance] pre.has_coe_generator pre.has_coe_semiring pre.has_mul pre.has_add
+  pre.has_zero pre.has_one pre.has_smul
 
 #print FreeAlgebra.liftFun /-
 /-- Given a function from `X` to an `R`-algebra `A`, `lift_fun` provides a lift of `f` to a function
@@ -175,8 +175,8 @@ def FreeAlgebra :=
 
 namespace FreeAlgebra
 
-attribute [local instance]
-  pre.has_coe_generator pre.has_coe_semiring pre.has_mul pre.has_add pre.has_zero pre.has_one pre.has_smul
+attribute [local instance] pre.has_coe_generator pre.has_coe_semiring pre.has_mul pre.has_add
+  pre.has_zero pre.has_one pre.has_smul
 
 instance : Semiring (FreeAlgebra R X)
     where
@@ -295,12 +295,12 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
       case of_scalar =>
         change algebraMap _ _ x = F (algebraMap _ _ x)
         rw [AlgHom.commutes F x]
-      case
-        add a b ha hb =>
+      case add a b ha
+        hb =>
         change lift_aux R (F ∘ ι R) (Quot.mk _ _ + Quot.mk _ _) = F (Quot.mk _ _ + Quot.mk _ _)
         rw [AlgHom.map_add, AlgHom.map_add, ha, hb]
-      case
-        mul a b ha hb =>
+      case mul a b ha
+        hb =>
         change lift_aux R (F ∘ ι R) (Quot.mk _ _ * Quot.mk _ _) = F (Quot.mk _ _ * Quot.mk _ _)
         rw [AlgHom.map_mul, AlgHom.map_mul, ha, hb] }
 #align free_algebra.lift FreeAlgebra.lift
@@ -350,7 +350,7 @@ theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebr
 theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
     (w : (f : FreeAlgebra R X → A) ∘ ι R = (g : FreeAlgebra R X → A) ∘ ι R) : f = g :=
   by
-  rw [← lift_symm_apply, ← lift_symm_apply] at w
+  rw [← lift_symm_apply, ← lift_symm_apply] at w 
   exact (lift R).symm.Injective w
 #align free_algebra.hom_ext FreeAlgebra.hom_ext
 
@@ -367,7 +367,7 @@ noncomputable def equivMonoidAlgebraFreeMonoid :
       apply MonoidAlgebra.algHom_ext; intro x
       apply FreeMonoid.recOn x
       · simp; rfl
-      · intro x y ih; simp at ih; simp [ih])
+      · intro x y ih; simp at ih ; simp [ih])
     (by ext; simp)
 #align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoid
 
@@ -426,8 +426,8 @@ theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap
   let f1 : FreeAlgebra R X →ₐ[R] R := lift R 1
   have hf0 : f0 (ι R x) = 0 := lift_ι_apply _ _
   have hf1 : f1 (ι R x) = 1 := lift_ι_apply _ _
-  rw [h, f0.commutes, Algebra.id.map_eq_self] at hf0
-  rw [h, f1.commutes, Algebra.id.map_eq_self] at hf1
+  rw [h, f0.commutes, Algebra.id.map_eq_self] at hf0 
+  rw [h, f1.commutes, Algebra.id.map_eq_self] at hf1 
   exact zero_ne_one (hf0.symm.trans hf1)
 #align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMap
 
@@ -474,7 +474,7 @@ theorem induction {C : FreeAlgebra R X → Prop}
     simp [of, Subtype.coind]
   -- finding a proof is finding an element of the subalgebra
   convert Subtype.prop (lift R of a)
-  simp [AlgHom.ext_iff] at of_id
+  simp [AlgHom.ext_iff] at of_id 
   exact of_id a
 #align free_algebra.induction FreeAlgebra.induction
 
Diff
@@ -60,12 +60,6 @@ variable (X : Type _)
 
 namespace FreeAlgebra
 
-/- warning: free_algebra.pre -> FreeAlgebra.Pre is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R], Type.{u2} -> Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  Type.{u1} -> Type.{u2} -> Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align free_algebra.pre FreeAlgebra.Preₓ'. -/
 /-- This inductive type is used to express representatives of the free algebra.
 -/
 inductive Pre
@@ -80,46 +74,22 @@ namespace Pre
 instance : Inhabited (Pre R X) :=
   ⟨of_scalar 0⟩
 
-/- warning: free_algebra.pre.has_coe_generator -> FreeAlgebra.Pre.hasCoeGenerator is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Coe.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
-but is expected to have type
-  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Coe.{succ u2, max (succ u2) (succ u1)} _inst_1 (FreeAlgebra.Pre.{u1, u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_coe_generator FreeAlgebra.Pre.hasCoeGeneratorₓ'. -/
 -- Note: These instances are only used to simplify the notation.
 /-- Coercion from `X` to `pre R X`. Note: Used for notation only. -/
 def hasCoeGenerator : Coe X (Pre R X) :=
   ⟨of⟩
 #align free_algebra.pre.has_coe_generator FreeAlgebra.Pre.hasCoeGenerator
 
-/- warning: free_algebra.pre.has_coe_semiring -> FreeAlgebra.Pre.hasCoeSemiring is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Coe.{succ u1, max (succ u1) (succ u2)} R (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
-but is expected to have type
-  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Coe.{succ u1, max (succ u2) (succ u1)} R (FreeAlgebra.Pre.{u1, u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiringₓ'. -/
 /-- Coercion from `R` to `pre R X`. Note: Used for notation only. -/
 def hasCoeSemiring : Coe R (Pre R X) :=
   ⟨of_scalar⟩
 #align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiring
 
-/- warning: free_algebra.pre.has_mul -> FreeAlgebra.Pre.hasMul is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Mul.{max u1 u2} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
-but is expected to have type
-  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Mul.{max u2 u1} (FreeAlgebra.Pre.{u1, u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_mul FreeAlgebra.Pre.hasMulₓ'. -/
 /-- Multiplication in `pre R X` defined as `pre.mul`. Note: Used for notation only. -/
 def hasMul : Mul (Pre R X) :=
   ⟨mul⟩
 #align free_algebra.pre.has_mul FreeAlgebra.Pre.hasMul
 
-/- warning: free_algebra.pre.has_add -> FreeAlgebra.Pre.hasAdd is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Add.{max u1 u2} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
-but is expected to have type
-  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Add.{max u2 u1} (FreeAlgebra.Pre.{u1, u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_add FreeAlgebra.Pre.hasAddₓ'. -/
 /-- Addition in `pre R X` defined as `pre.add`. Note: Used for notation only. -/
 def hasAdd : Add (Pre R X) :=
   ⟨add⟩
@@ -139,12 +109,6 @@ def hasOne : One (Pre R X) :=
 #align free_algebra.pre.has_one FreeAlgebra.Pre.hasOne
 -/
 
-/- warning: free_algebra.pre.has_smul -> FreeAlgebra.Pre.hasSmul is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), SMul.{u1, max u1 u2} R (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
-but is expected to have type
-  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), SMul.{u1, max u2 u1} R (FreeAlgebra.Pre.{u1, u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmulₓ'. -/
 /-- Scalar multiplication defined as multiplication by the image of elements from `R`.
 Note: Used for notation only.
 -/
@@ -263,12 +227,6 @@ irreducible_def ι : X → FreeAlgebra R X := fun m => Quot.mk _ m
 #align free_algebra.ι FreeAlgebra.ι
 -/
 
-/- warning: free_algebra.quot_mk_eq_ι -> FreeAlgebra.quot_mk_eq_ι is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (m : X), Eq.{max (succ u1) (succ u2)} (Quot.{max (succ u1) (succ u2)} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (FreeAlgebra.Rel.{u1, u2} R _inst_1 X)) (Quot.mk.{max (succ u1) (succ u2)} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (FreeAlgebra.Rel.{u1, u2} R _inst_1 X) ((fun (a : Type.{u2}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u2, max (succ u1) (succ u2)} a b] => self.0) X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (HasLiftT.mk.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (CoeTCₓ.coe.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (coeBase.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (FreeAlgebra.Pre.hasCoeGenerator.{u1, u2} R _inst_1 X)))) m)) (FreeAlgebra.ι.{u1, u2} R _inst_1 X m)
-but is expected to have type
-  forall (R : Type.{u2}) [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (m : X), Eq.{max (succ u2) (succ u1)} (Quot.{max (succ u2) (succ u1)} (FreeAlgebra.Pre.{u2, u1} R X) (FreeAlgebra.Rel.{u2, u1} R _inst_1 X)) (Quot.mk.{max (succ u2) (succ u1)} (FreeAlgebra.Pre.{u2, u1} R X) (FreeAlgebra.Rel.{u2, u1} R _inst_1 X) (FreeAlgebra.Pre.of.{u2, u1} R X m)) (FreeAlgebra.ι.{u2, u1} R _inst_1 X m)
-Case conversion may be inaccurate. Consider using '#align free_algebra.quot_mk_eq_ι FreeAlgebra.quot_mk_eq_ιₓ'. -/
 @[simp]
 theorem quot_mk_eq_ι (m : X) : Quot.mk (FreeAlgebra.Rel R X) m = ι R m := by rw [ι]
 #align free_algebra.quot_mk_eq_ι FreeAlgebra.quot_mk_eq_ι
@@ -319,12 +277,6 @@ private def lift_aux (f : X → A) : FreeAlgebra R X →ₐ[R] A
   map_add' := by rintro ⟨⟩ ⟨⟩; rfl
   commutes' := by tauto
 
-/- warning: free_algebra.lift -> FreeAlgebra.lift is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2], Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)
-but is expected to have type
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2], Equiv.{max (succ u2) (succ u3), max (succ u3) (succ (max u2 u1))} (X -> A) (AlgHom.{u1, max u2 u1, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u2} R _inst_1 X) _inst_3)
-Case conversion may be inaccurate. Consider using '#align free_algebra.lift FreeAlgebra.liftₓ'. -/
 /-- Given a function `f : X → A` where `A` is an `R`-algebra, `lift R f` is the unique lift
 of `f` to a morphism of `R`-algebras `free_algebra R X → A`.
 -/
@@ -353,19 +305,10 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
         rw [AlgHom.map_mul, AlgHom.map_mul, ha, hb] }
 #align free_algebra.lift FreeAlgebra.lift
 
-/- warning: free_algebra.lift_aux_eq -> FreeAlgebra.liftAux_eq is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.2396039455.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
-but is expected to have type
-  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
-Case conversion may be inaccurate. Consider using '#align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eqₓ'. -/
 @[simp]
 theorem liftAux_eq (f : X → A) : liftAux R f = lift R f := by rw [lift]; rfl
 #align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eq
 
-/- warning: free_algebra.lift_symm_apply -> FreeAlgebra.lift_symm_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_applyₓ'. -/
 @[simp]
 theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R := by rw [lift];
   rfl
@@ -373,24 +316,15 @@ theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F
 
 variable {R X}
 
-/- warning: free_algebra.ι_comp_lift -> FreeAlgebra.ι_comp_lift is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_liftₓ'. -/
 @[simp]
 theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f := by ext;
   rw [ι, lift]; rfl
 #align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_lift
 
-/- warning: free_algebra.lift_ι_apply -> FreeAlgebra.lift_ι_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_applyₓ'. -/
 @[simp]
 theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x := by rw [ι, lift]; rfl
 #align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_apply
 
-/- warning: free_algebra.lift_unique -> FreeAlgebra.lift_unique is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.lift_unique FreeAlgebra.lift_uniqueₓ'. -/
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
     (g : FreeAlgebra R X → A) ∘ ι R = f ↔ g = lift R f := by rw [← (lift R).symm_apply_eq, lift];
@@ -403,9 +337,6 @@ should only use the universal properties of the free algebra, and consider the a
 as a quotient of an inductive type as completely hidden. -/
 
 
-/- warning: free_algebra.lift_comp_ι -> FreeAlgebra.lift_comp_ι is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ιₓ'. -/
 -- Marking `free_algebra` irreducible makes `ring` instances inaccessible on quotients.
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
 -- For now, we avoid this by not marking it irreducible.
@@ -414,9 +345,6 @@ theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebr
   by rw [← lift_symm_apply]; exact (lift R).apply_symm_apply g
 #align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ι
 
-/- warning: free_algebra.hom_ext -> FreeAlgebra.hom_ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.hom_ext FreeAlgebra.hom_extₓ'. -/
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
 theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
@@ -426,12 +354,6 @@ theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
   exact (lift R).symm.Injective w
 #align free_algebra.hom_ext FreeAlgebra.hom_ext
 
-/- warning: free_algebra.equiv_monoid_algebra_free_monoid -> FreeAlgebra.equivMonoidAlgebraFreeMonoid is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgEquiv.{u1, max u1 u2, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (MonoidAlgebra.semiring.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.cancelMonoid.{u2} X)))) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.algebra.{u1, u2, u1} R (FreeMonoid.{u2} X) R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.cancelMonoid.{u2} X))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgEquiv.{u1, max u2 u1, max u2 u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.semiring.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} X)))) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.algebra.{u1, u2, u1} R (FreeMonoid.{u2} X) R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} X))))
-Case conversion may be inaccurate. Consider using '#align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoidₓ'. -/
 /-- The free algebra on `X` is "just" the monoid algebra on the free monoid on `X`.
 
 This would be useful when constructing linear maps out of a free algebra,
@@ -454,65 +376,32 @@ instance [Nontrivial R] : Nontrivial (FreeAlgebra R X) :=
 
 section
 
-/- warning: free_algebra.algebra_map_inv -> FreeAlgebra.algebraMapInv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgHom.{u1, max u2 u1, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInvₓ'. -/
 /-- The left-inverse of `algebra_map`. -/
 def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
   lift R (0 : X → R)
 #align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInv
 
-/- warning: free_algebra.algebra_map_left_inverse -> FreeAlgebra.algebraMap_leftInverse is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverseₓ'. -/
 theorem algebraMap_leftInverse :
     Function.LeftInverse algebraMapInv (algebraMap R <| FreeAlgebra R X) := fun x => by
   simp [algebra_map_inv]
 #align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverse
 
-/- warning: free_algebra.algebra_map_inj -> FreeAlgebra.algebraMap_inj is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R) (y : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) y)) (Eq.{succ u1} R x y)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R) (y : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) y)) (Eq.{succ u2} R x y)
-Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_inj FreeAlgebra.algebraMap_injₓ'. -/
 @[simp]
 theorem algebraMap_inj (x y : R) :
     algebraMap R (FreeAlgebra R X) x = algebraMap R (FreeAlgebra R X) y ↔ x = y :=
   algebraMap_leftInverse.Injective.eq_iff
 #align free_algebra.algebra_map_inj FreeAlgebra.algebraMap_inj
 
-/- warning: free_algebra.algebra_map_eq_zero_iff -> FreeAlgebra.algebraMap_eq_zero_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (Zero.zero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (MulZeroClass.toHasZero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))))))
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 0 (Zero.toOfNat0.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (MonoidWithZero.toZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_eq_zero_iff FreeAlgebra.algebraMap_eq_zero_iffₓ'. -/
 @[simp]
 theorem algebraMap_eq_zero_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 0 ↔ x = 0 :=
   map_eq_zero_iff (algebraMap _ _) algebraMap_leftInverse.Injective
 #align free_algebra.algebra_map_eq_zero_iff FreeAlgebra.algebraMap_eq_zero_iff
 
-/- warning: free_algebra.algebra_map_eq_one_iff -> FreeAlgebra.algebraMap_eq_one_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (One.one.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddMonoidWithOne.toOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))))))
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 1 (One.toOfNat1.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toOne.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_eq_one_iff FreeAlgebra.algebraMap_eq_one_iffₓ'. -/
 @[simp]
 theorem algebraMap_eq_one_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 1 ↔ x = 1 :=
   map_eq_one_iff (algebraMap _ _) algebraMap_leftInverse.Injective
 #align free_algebra.algebra_map_eq_one_iff FreeAlgebra.algebraMap_eq_one_iff
 
-/- warning: free_algebra.ι_injective -> FreeAlgebra.ι_injective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R], Function.Injective.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R], Function.Injective.{succ u1, max (succ u2) (succ u1)} X (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X)
-Case conversion may be inaccurate. Consider using '#align free_algebra.ι_injective FreeAlgebra.ι_injectiveₓ'. -/
 -- this proof is copied from the approach in `free_abelian_group.of_injective`
 theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgebra R X) :=
   fun x y hoxy =>
@@ -525,23 +414,11 @@ theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgeb
         one_ne_zero <| hfy1.symm.trans hfy0
 #align free_algebra.ι_injective FreeAlgebra.ι_injective
 
-/- warning: free_algebra.ι_inj -> FreeAlgebra.ι_inj is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X) (y : X), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (FreeAlgebra.ι.{u1, u2} R _inst_1 X y)) (Eq.{succ u2} X x y)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X) (y : X), Iff (Eq.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (FreeAlgebra.ι.{u2, u1} R _inst_1 X y)) (Eq.{succ u1} X x y)
-Case conversion may be inaccurate. Consider using '#align free_algebra.ι_inj FreeAlgebra.ι_injₓ'. -/
 @[simp]
 theorem ι_inj [Nontrivial R] (x y : X) : ι R x = ι R y ↔ x = y :=
   ι_injective.eq_iff
 #align free_algebra.ι_inj FreeAlgebra.ι_inj
 
-/- warning: free_algebra.ι_ne_algebra_map -> FreeAlgebra.ι_ne_algebraMap is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X) (r : R), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) r)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X) (r : R), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (FunLike.coe.{max (succ u2) (succ (max u2 u1)), succ u2, succ (max u2 u1)} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)
-Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMapₓ'. -/
 @[simp]
 theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap R _ r := fun h =>
   by
@@ -554,23 +431,11 @@ theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap
   exact zero_ne_one (hf0.symm.trans hf1)
 #align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMap
 
-/- warning: free_algebra.ι_ne_zero -> FreeAlgebra.ι_ne_zero is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (Zero.zero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (MulZeroClass.toHasZero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (OfNat.ofNat.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) 0 (Zero.toOfNat0.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toMonoidWithZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))
-Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_zero FreeAlgebra.ι_ne_zeroₓ'. -/
 @[simp]
 theorem ι_ne_zero [Nontrivial R] (x : X) : ι R x ≠ 0 :=
   ι_ne_algebraMap x 0
 #align free_algebra.ι_ne_zero FreeAlgebra.ι_ne_zero
 
-/- warning: free_algebra.ι_ne_one -> FreeAlgebra.ι_ne_one is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (One.one.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddMonoidWithOne.toOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (OfNat.ofNat.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) 1 (One.toOfNat1.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toOne.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))
-Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_one FreeAlgebra.ι_ne_oneₓ'. -/
 @[simp]
 theorem ι_ne_one [Nontrivial R] (x : X) : ι R x ≠ 1 :=
   ι_ne_algebraMap x 1
@@ -584,12 +449,6 @@ end FreeAlgebra
 `has_coe_to_sort` below. Closing it and reopening it fixes it... -/
 namespace FreeAlgebra
 
-/- warning: free_algebra.induction -> FreeAlgebra.induction is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}) {C : (FreeAlgebra.{u1, u2} R _inst_1 X) -> Prop}, (forall (r : R), C (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X) (b : FreeAlgebra.{u1, u2} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (instHMul.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Distrib.toHasMul.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X) (b : FreeAlgebra.{u1, u2} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (instHAdd.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Distrib.toHasAdd.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X), C a)
-but is expected to have type
-  forall (R : Type.{u2}) [_inst_1 : CommSemiring.{u2} R] (X : Type.{u1}) {C : (FreeAlgebra.{u2, u1} R _inst_1 X) -> Prop}, (forall (r : R), C (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Distrib.toAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X), C a)
-Case conversion may be inaccurate. Consider using '#align free_algebra.induction FreeAlgebra.inductionₓ'. -/
 /-- An induction principle for the free algebra.
 
 If `C` holds for the `algebra_map` of `r : R` into `free_algebra R X`, the `ι` of `x : X`, and is
Diff
@@ -217,43 +217,23 @@ attribute [local instance]
 instance : Semiring (FreeAlgebra R X)
     where
   add := Quot.map₂ (· + ·) (fun _ _ _ => Rel.add_compat_right) fun _ _ _ => Rel.add_compat_left
-  add_assoc := by
-    rintro ⟨⟩ ⟨⟩ ⟨⟩
-    exact Quot.sound rel.add_assoc
+  add_assoc := by rintro ⟨⟩ ⟨⟩ ⟨⟩; exact Quot.sound rel.add_assoc
   zero := Quot.mk _ 0
-  zero_add := by
-    rintro ⟨⟩
-    exact Quot.sound rel.zero_add
+  zero_add := by rintro ⟨⟩; exact Quot.sound rel.zero_add
   add_zero := by
     rintro ⟨⟩
     change Quot.mk _ _ = _
     rw [Quot.sound rel.add_comm, Quot.sound rel.zero_add]
-  add_comm := by
-    rintro ⟨⟩ ⟨⟩
-    exact Quot.sound rel.add_comm
+  add_comm := by rintro ⟨⟩ ⟨⟩; exact Quot.sound rel.add_comm
   mul := Quot.map₂ (· * ·) (fun _ _ _ => Rel.mul_compat_right) fun _ _ _ => Rel.mul_compat_left
-  mul_assoc := by
-    rintro ⟨⟩ ⟨⟩ ⟨⟩
-    exact Quot.sound rel.mul_assoc
+  mul_assoc := by rintro ⟨⟩ ⟨⟩ ⟨⟩; exact Quot.sound rel.mul_assoc
   one := Quot.mk _ 1
-  one_mul := by
-    rintro ⟨⟩
-    exact Quot.sound rel.one_mul
-  mul_one := by
-    rintro ⟨⟩
-    exact Quot.sound rel.mul_one
-  left_distrib := by
-    rintro ⟨⟩ ⟨⟩ ⟨⟩
-    exact Quot.sound rel.left_distrib
-  right_distrib := by
-    rintro ⟨⟩ ⟨⟩ ⟨⟩
-    exact Quot.sound rel.right_distrib
-  zero_mul := by
-    rintro ⟨⟩
-    exact Quot.sound rel.zero_mul
-  mul_zero := by
-    rintro ⟨⟩
-    exact Quot.sound rel.mul_zero
+  one_mul := by rintro ⟨⟩; exact Quot.sound rel.one_mul
+  mul_one := by rintro ⟨⟩; exact Quot.sound rel.mul_one
+  left_distrib := by rintro ⟨⟩ ⟨⟩ ⟨⟩; exact Quot.sound rel.left_distrib
+  right_distrib := by rintro ⟨⟩ ⟨⟩ ⟨⟩; exact Quot.sound rel.right_distrib
+  zero_mul := by rintro ⟨⟩; exact Quot.sound rel.zero_mul
+  mul_zero := by rintro ⟨⟩; exact Quot.sound rel.mul_zero
 
 instance : Inhabited (FreeAlgebra R X) :=
   ⟨0⟩
@@ -268,9 +248,7 @@ instance : Algebra R (FreeAlgebra R X)
   map_mul' _ _ := Quot.sound Rel.mul_scalar
   map_zero' := rfl
   map_add' _ _ := Quot.sound Rel.add_scalar
-  commutes' _ := by
-    rintro ⟨⟩
-    exact Quot.sound rel.central_scalar
+  commutes' _ := by rintro ⟨⟩; exact Quot.sound rel.central_scalar
   smul_def' _ _ := rfl
 
 instance {S : Type _} [CommRing S] : Ring (FreeAlgebra S X) :=
@@ -335,18 +313,10 @@ private def lift_aux (f : X → A) : FreeAlgebra R X →ₐ[R] A
         change lift_fun R X f _ * lift_fun R X f _ = _
         rw [h_ih]
         rfl
-  map_one' := by
-    change algebraMap _ _ _ = _
-    simp
-  map_mul' := by
-    rintro ⟨⟩ ⟨⟩
-    rfl
-  map_zero' := by
-    change algebraMap _ _ _ = _
-    simp
-  map_add' := by
-    rintro ⟨⟩ ⟨⟩
-    rfl
+  map_one' := by change algebraMap _ _ _ = _; simp
+  map_mul' := by rintro ⟨⟩ ⟨⟩; rfl
+  map_zero' := by change algebraMap _ _ _ = _; simp
+  map_add' := by rintro ⟨⟩ ⟨⟩; rfl
   commutes' := by tauto
 
 /- warning: free_algebra.lift -> FreeAlgebra.lift is a dubious translation:
@@ -361,10 +331,7 @@ of `f` to a morphism of `R`-algebras `free_algebra R X → A`.
 irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
   { toFun := liftAux R
     invFun := fun F => F ∘ ι R
-    left_inv := fun f => by
-      ext
-      rw [ι]
-      rfl
+    left_inv := fun f => by ext; rw [ι]; rfl
     right_inv := fun F => by
       ext x
       rcases x with ⟨⟩
@@ -393,19 +360,14 @@ but is expected to have type
   forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eqₓ'. -/
 @[simp]
-theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
-  by
-  rw [lift]
-  rfl
+theorem liftAux_eq (f : X → A) : liftAux R f = lift R f := by rw [lift]; rfl
 #align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eq
 
 /- warning: free_algebra.lift_symm_apply -> FreeAlgebra.lift_symm_apply is a dubious translation:
 <too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_applyₓ'. -/
 @[simp]
-theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R :=
-  by
-  rw [lift]
+theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R := by rw [lift];
   rfl
 #align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_apply
 
@@ -415,21 +377,15 @@ variable {R X}
 <too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_liftₓ'. -/
 @[simp]
-theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f :=
-  by
-  ext
-  rw [ι, lift]
-  rfl
+theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f := by ext;
+  rw [ι, lift]; rfl
 #align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_lift
 
 /- warning: free_algebra.lift_ι_apply -> FreeAlgebra.lift_ι_apply is a dubious translation:
 <too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_applyₓ'. -/
 @[simp]
-theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
-  by
-  rw [ι, lift]
-  rfl
+theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x := by rw [ι, lift]; rfl
 #align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_apply
 
 /- warning: free_algebra.lift_unique -> FreeAlgebra.lift_unique is a dubious translation:
@@ -437,9 +393,7 @@ theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_unique FreeAlgebra.lift_uniqueₓ'. -/
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
-    (g : FreeAlgebra R X → A) ∘ ι R = f ↔ g = lift R f :=
-  by
-  rw [← (lift R).symm_apply_eq, lift]
+    (g : FreeAlgebra R X → A) ∘ ι R = f ↔ g = lift R f := by rw [← (lift R).symm_apply_eq, lift];
   rfl
 #align free_algebra.lift_unique FreeAlgebra.lift_unique
 
@@ -457,9 +411,7 @@ Case conversion may be inaccurate. Consider using '#align free_algebra.lift_comp
 -- For now, we avoid this by not marking it irreducible.
 @[simp]
 theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebra R X → A) ∘ ι R) = g :=
-  by
-  rw [← lift_symm_apply]
-  exact (lift R).apply_symm_apply g
+  by rw [← lift_symm_apply]; exact (lift R).apply_symm_apply g
 #align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ι
 
 /- warning: free_algebra.hom_ext -> FreeAlgebra.hom_ext is a dubious translation:
@@ -492,14 +444,9 @@ noncomputable def equivMonoidAlgebraFreeMonoid :
     (by
       apply MonoidAlgebra.algHom_ext; intro x
       apply FreeMonoid.recOn x
-      · simp
-        rfl
-      · intro x y ih
-        simp at ih
-        simp [ih])
-    (by
-      ext
-      simp)
+      · simp; rfl
+      · intro x y ih; simp at ih; simp [ih])
+    (by ext; simp)
 #align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoid
 
 instance [Nontrivial R] : Nontrivial (FreeAlgebra R X) :=
Diff
@@ -348,7 +348,6 @@ private def lift_aux (f : X → A) : FreeAlgebra R X →ₐ[R] A
     rintro ⟨⟩ ⟨⟩
     rfl
   commutes' := by tauto
-#align free_algebra.lift_aux free_algebra.lift_aux
 
 /- warning: free_algebra.lift -> FreeAlgebra.lift is a dubious translation:
 lean 3 declaration is
@@ -401,10 +400,7 @@ theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
 #align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eq
 
 /- warning: free_algebra.lift_symm_apply -> FreeAlgebra.lift_symm_apply is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (F : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u3)} (X -> A) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) => (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) -> X -> A) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) F) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))
-but is expected to have type
-  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (F : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) F) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) _x) (Equiv.instFunLikeEquiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) F) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_applyₓ'. -/
 @[simp]
 theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R :=
@@ -416,10 +412,7 @@ theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F
 variable {R X}
 
 /- warning: free_algebra.ι_comp_lift -> FreeAlgebra.ι_comp_lift is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u3}} {A : Type.{u2}} [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u3) (succ u2)} (X -> A) (Function.comp.{succ u3, max (succ u1) (succ u3), succ u2} X (FreeAlgebra.{u1, u3} R _inst_1 X) A (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u1, u3} R _inst_1 X) (fun (_x : FreeAlgebra.{u1, u3} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u1, u3} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (SMulZeroClass.toSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toZero.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u1, u2} R A (AddMonoid.toZero.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} R A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribMulAction.toDistribSMul.{u1, u2} R A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, max u1 u3, u2, max (max u1 u3) u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u1, max u1 u3, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ (max u3 u1))} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u3, u2} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u3} R _inst_1 X)) f
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_liftₓ'. -/
 @[simp]
 theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f :=
@@ -430,10 +423,7 @@ theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R
 #align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_lift
 
 /- warning: free_algebra.lift_ι_apply -> FreeAlgebra.lift_ι_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) (f x)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u2, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (FunLike.coe.{max (max (succ u2) (succ u1)) (succ u3), max (succ u2) (succ u1), succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (SMulZeroClass.toSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u3} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u3, max (max u2 u1) u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u2, max u2 u1, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ (max u1 u2))} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u2, u1, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (f x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_applyₓ'. -/
 @[simp]
 theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
@@ -443,10 +433,7 @@ theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
 #align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_apply
 
 /- warning: free_algebra.lift_unique -> FreeAlgebra.lift_unique is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f) (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f))
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) f) (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) g (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_unique FreeAlgebra.lift_uniqueₓ'. -/
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
@@ -463,10 +450,7 @@ as a quotient of an inductive type as completely hidden. -/
 
 
 /- warning: free_algebra.lift_comp_ι -> FreeAlgebra.lift_comp_ι is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) g
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (max (succ u3) (succ u2)) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (a : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) a) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) g
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ιₓ'. -/
 -- Marking `free_algebra` irreducible makes `ring` instances inaccessible on quotients.
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
@@ -479,10 +463,7 @@ theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebr
 #align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ι
 
 /- warning: free_algebra.hom_ext -> FreeAlgebra.hom_ext is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] {f : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) f g)
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] {f : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) f) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) -> (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.hom_ext FreeAlgebra.hom_extₓ'. -/
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
@@ -538,10 +519,7 @@ def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
 #align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInv
 
 /- warning: free_algebra.algebra_map_left_inverse -> FreeAlgebra.algebraMap_leftInverse is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, Function.LeftInverse.{succ u1, max (succ u1) (succ u2)} R (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ (max u1 u2)) (succ u1), max (succ (max u1 u2)) (succ u1)} (AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (fun (_x : AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> R) ([anonymous].{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (FreeAlgebra.algebraMapInv.{u1, u2} R _inst_1 X)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)))
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}}, Function.LeftInverse.{succ u2, max (succ u1) (succ u2)} R (FreeAlgebra.{u2, u1} R _inst_1 X) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u2, u1} R _inst_1 X) => R) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (SMulZeroClass.toSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u2} R R (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribSMul.toSMulZeroClass.{u2, u2} R R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribMulAction.toDistribSMul.{u2, u2} R R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u1 u2, u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1) (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (AlgHom.algHomClass.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)))))) (FreeAlgebra.algebraMapInv.{u2, u1} R _inst_1 X)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverseₓ'. -/
 theorem algebraMap_leftInverse :
     Function.LeftInverse algebraMapInv (algebraMap R <| FreeAlgebra R X) := fun x => by
Diff
@@ -404,7 +404,7 @@ theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
 lean 3 declaration is
   forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (F : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u3)} (X -> A) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) => (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) -> X -> A) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) F) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))
 but is expected to have type
-  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (F : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) F) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) _x) (Equiv.instFunLikeEquiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) F) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))
+  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (F : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) F) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) _x) (Equiv.instFunLikeEquiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) F) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_applyₓ'. -/
 @[simp]
 theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R :=
@@ -419,7 +419,7 @@ variable {R X}
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u3}} {A : Type.{u2}} [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u3) (succ u2)} (X -> A) (Function.comp.{succ u3, max (succ u1) (succ u3), succ u2} X (FreeAlgebra.{u1, u3} R _inst_1 X) A (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u1, u3} R _inst_1 X) (fun (_x : FreeAlgebra.{u1, u3} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u1, u3} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (SMulZeroClass.toSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toZero.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u1, u2} R A (AddMonoid.toZero.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} R A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribMulAction.toDistribSMul.{u1, u2} R A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, max u1 u3, u2, max (max u1 u3) u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u1, max u1 u3, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ (max u3 u1))} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u3, u2} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u3} R _inst_1 X)) f
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u3}} {A : Type.{u2}} [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u3) (succ u2)} (X -> A) (Function.comp.{succ u3, max (succ u1) (succ u3), succ u2} X (FreeAlgebra.{u1, u3} R _inst_1 X) A (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u1, u3} R _inst_1 X) (fun (_x : FreeAlgebra.{u1, u3} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u1, u3} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (SMulZeroClass.toSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toZero.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u1, u2} R A (AddMonoid.toZero.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} R A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribMulAction.toDistribSMul.{u1, u2} R A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, max u1 u3, u2, max (max u1 u3) u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u1, max u1 u3, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ (max u3 u1))} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u3, u2} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u3} R _inst_1 X)) f
 Case conversion may be inaccurate. Consider using '#align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_liftₓ'. -/
 @[simp]
 theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f :=
@@ -433,7 +433,7 @@ theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) (f x)
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u2, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (FunLike.coe.{max (max (succ u2) (succ u1)) (succ u3), max (succ u2) (succ u1), succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (SMulZeroClass.toSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u3} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u3, max (max u2 u1) u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u2, max u2 u1, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ (max u1 u2))} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u2, u1, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (f x)
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u2, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (FunLike.coe.{max (max (succ u2) (succ u1)) (succ u3), max (succ u2) (succ u1), succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (SMulZeroClass.toSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u3} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u3, max (max u2 u1) u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u2, max u2 u1, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ (max u1 u2))} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u2, u1, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (f x)
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_applyₓ'. -/
 @[simp]
 theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
@@ -446,7 +446,7 @@ theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f) (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f))
 but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) f) (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) g (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f))
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) f) (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) g (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f))
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_unique FreeAlgebra.lift_uniqueₓ'. -/
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
@@ -466,7 +466,7 @@ as a quotient of an inductive type as completely hidden. -/
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) g
 but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (max (succ u3) (succ u2)) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (a : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) a) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) g
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (max (succ u3) (succ u2)) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (a : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) a) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) g
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ιₓ'. -/
 -- Marking `free_algebra` irreducible makes `ring` instances inaccessible on quotients.
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
@@ -482,7 +482,7 @@ theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebr
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] {f : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) f g)
 but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] {f : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) f) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) -> (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) f g)
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] {f : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) f) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) -> (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) f g)
 Case conversion may be inaccurate. Consider using '#align free_algebra.hom_ext FreeAlgebra.hom_extₓ'. -/
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
@@ -541,7 +541,7 @@ def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, Function.LeftInverse.{succ u1, max (succ u1) (succ u2)} R (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ (max u1 u2)) (succ u1), max (succ (max u1 u2)) (succ u1)} (AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (fun (_x : AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> R) ([anonymous].{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (FreeAlgebra.algebraMapInv.{u1, u2} R _inst_1 X)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)))
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}}, Function.LeftInverse.{succ u2, max (succ u1) (succ u2)} R (FreeAlgebra.{u2, u1} R _inst_1 X) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => R) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (SMulZeroClass.toSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u2} R R (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribSMul.toSMulZeroClass.{u2, u2} R R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribMulAction.toDistribSMul.{u2, u2} R R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u1 u2, u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1) (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (AlgHom.algHomClass.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)))))) (FreeAlgebra.algebraMapInv.{u2, u1} R _inst_1 X)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}}, Function.LeftInverse.{succ u2, max (succ u1) (succ u2)} R (FreeAlgebra.{u2, u1} R _inst_1 X) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : FreeAlgebra.{u2, u1} R _inst_1 X) => R) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (SMulZeroClass.toSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u2} R R (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribSMul.toSMulZeroClass.{u2, u2} R R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribMulAction.toDistribSMul.{u2, u2} R R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u1 u2, u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1) (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (AlgHom.algHomClass.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)))))) (FreeAlgebra.algebraMapInv.{u2, u1} R _inst_1 X)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))
 Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverseₓ'. -/
 theorem algebraMap_leftInverse :
     Function.LeftInverse algebraMapInv (algebraMap R <| FreeAlgebra R X) := fun x => by
Diff
@@ -391,7 +391,7 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
 lean 3 declaration is
   forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.2396039455.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
 but is expected to have type
-  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
+  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eqₓ'. -/
 @[simp]
 theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
@@ -404,7 +404,7 @@ theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
 lean 3 declaration is
   forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (F : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u3)} (X -> A) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) => (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) -> X -> A) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) F) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))
 but is expected to have type
-  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (F : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) F) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) _x) (Equiv.instFunLikeEquiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) F) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))
+  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (F : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) F) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) _x) (Equiv.instFunLikeEquiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) F) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_applyₓ'. -/
 @[simp]
 theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R :=
@@ -419,7 +419,7 @@ variable {R X}
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u3}} {A : Type.{u2}} [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u3) (succ u2)} (X -> A) (Function.comp.{succ u3, max (succ u1) (succ u3), succ u2} X (FreeAlgebra.{u1, u3} R _inst_1 X) A (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u1, u3} R _inst_1 X) (fun (_x : FreeAlgebra.{u1, u3} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u1, u3} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (SMulZeroClass.toSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toZero.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u1, u2} R A (AddMonoid.toZero.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} R A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribMulAction.toDistribSMul.{u1, u2} R A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, max u1 u3, u2, max (max u1 u3) u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u1, max u1 u3, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ (max u3 u1))} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u3, u2} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u3} R _inst_1 X)) f
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u3}} {A : Type.{u2}} [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u3) (succ u2)} (X -> A) (Function.comp.{succ u3, max (succ u1) (succ u3), succ u2} X (FreeAlgebra.{u1, u3} R _inst_1 X) A (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u1, u3} R _inst_1 X) (fun (_x : FreeAlgebra.{u1, u3} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u1, u3} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (SMulZeroClass.toSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toZero.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u1, u2} R A (AddMonoid.toZero.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} R A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribMulAction.toDistribSMul.{u1, u2} R A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, max u1 u3, u2, max (max u1 u3) u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u1, max u1 u3, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ (max u3 u1))} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u3, u2} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u3} R _inst_1 X)) f
 Case conversion may be inaccurate. Consider using '#align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_liftₓ'. -/
 @[simp]
 theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f :=
@@ -433,7 +433,7 @@ theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) (f x)
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u2, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (FunLike.coe.{max (max (succ u2) (succ u1)) (succ u3), max (succ u2) (succ u1), succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (SMulZeroClass.toSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u3} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u3, max (max u2 u1) u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u2, max u2 u1, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ (max u1 u2))} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u2, u1, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (f x)
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u2, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (FunLike.coe.{max (max (succ u2) (succ u1)) (succ u3), max (succ u2) (succ u1), succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (SMulZeroClass.toSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u3} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u3, max (max u2 u1) u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u2, max u2 u1, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ (max u1 u2))} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u2, u1, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (f x)
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_applyₓ'. -/
 @[simp]
 theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
@@ -446,7 +446,7 @@ theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f) (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f))
 but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) f) (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) g (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f))
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) f) (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) g (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f))
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_unique FreeAlgebra.lift_uniqueₓ'. -/
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
@@ -466,7 +466,7 @@ as a quotient of an inductive type as completely hidden. -/
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) g
 but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (max (succ u3) (succ u2)) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (a : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) a) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) g
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (max (succ u3) (succ u2)) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (a : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) a) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) g
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ιₓ'. -/
 -- Marking `free_algebra` irreducible makes `ring` instances inaccessible on quotients.
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
@@ -541,7 +541,7 @@ def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, Function.LeftInverse.{succ u1, max (succ u1) (succ u2)} R (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ (max u1 u2)) (succ u1), max (succ (max u1 u2)) (succ u1)} (AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (fun (_x : AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> R) ([anonymous].{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (FreeAlgebra.algebraMapInv.{u1, u2} R _inst_1 X)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)))
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}}, Function.LeftInverse.{succ u2, max (succ u1) (succ u2)} R (FreeAlgebra.{u2, u1} R _inst_1 X) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => R) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (SMulZeroClass.toSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u2} R R (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribSMul.toSMulZeroClass.{u2, u2} R R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribMulAction.toDistribSMul.{u2, u2} R R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u1 u2, u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1) (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (AlgHom.algHomClass.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)))))) (FreeAlgebra.algebraMapInv.{u2, u1} R _inst_1 X)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}}, Function.LeftInverse.{succ u2, max (succ u1) (succ u2)} R (FreeAlgebra.{u2, u1} R _inst_1 X) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => R) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (SMulZeroClass.toSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u2} R R (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribSMul.toSMulZeroClass.{u2, u2} R R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribMulAction.toDistribSMul.{u2, u2} R R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u1 u2, u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1) (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (AlgHom.algHomClass.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)))))) (FreeAlgebra.algebraMapInv.{u2, u1} R _inst_1 X)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))
 Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverseₓ'. -/
 theorem algebraMap_leftInverse :
     Function.LeftInverse algebraMapInv (algebraMap R <| FreeAlgebra R X) := fun x => by
@@ -552,7 +552,7 @@ theorem algebraMap_leftInverse :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R) (y : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) y)) (Eq.{succ u1} R x y)
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R) (y : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) y)) (Eq.{succ u2} R x y)
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R) (y : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) y)) (Eq.{succ u2} R x y)
 Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_inj FreeAlgebra.algebraMap_injₓ'. -/
 @[simp]
 theorem algebraMap_inj (x y : R) :
@@ -564,7 +564,7 @@ theorem algebraMap_inj (x y : R) :
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (Zero.zero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (MulZeroClass.toHasZero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))))))
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 0 (Zero.toOfNat0.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (MonoidWithZero.toZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R _inst_1)))))
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 0 (Zero.toOfNat0.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (MonoidWithZero.toZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R _inst_1)))))
 Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_eq_zero_iff FreeAlgebra.algebraMap_eq_zero_iffₓ'. -/
 @[simp]
 theorem algebraMap_eq_zero_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 0 ↔ x = 0 :=
@@ -575,7 +575,7 @@ theorem algebraMap_eq_zero_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 0 
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (One.one.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddMonoidWithOne.toOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))))))
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 1 (One.toOfNat1.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toOne.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 1 (One.toOfNat1.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toOne.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))
 Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_eq_one_iff FreeAlgebra.algebraMap_eq_one_iffₓ'. -/
 @[simp]
 theorem algebraMap_eq_one_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 1 ↔ x = 1 :=
@@ -615,7 +615,7 @@ theorem ι_inj [Nontrivial R] (x y : X) : ι R x = ι R y ↔ x = y :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X) (r : R), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) r)
 but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X) (r : R), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (FunLike.coe.{max (succ u2) (succ (max u2 u1)), succ u2, succ (max u2 u1)} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X) (r : R), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (FunLike.coe.{max (succ u2) (succ (max u2 u1)), succ u2, succ (max u2 u1)} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)
 Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMapₓ'. -/
 @[simp]
 theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap R _ r := fun h =>
@@ -663,7 +663,7 @@ namespace FreeAlgebra
 lean 3 declaration is
   forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}) {C : (FreeAlgebra.{u1, u2} R _inst_1 X) -> Prop}, (forall (r : R), C (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X) (b : FreeAlgebra.{u1, u2} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (instHMul.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Distrib.toHasMul.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X) (b : FreeAlgebra.{u1, u2} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (instHAdd.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Distrib.toHasAdd.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X), C a)
 but is expected to have type
-  forall (R : Type.{u2}) [_inst_1 : CommSemiring.{u2} R] (X : Type.{u1}) {C : (FreeAlgebra.{u2, u1} R _inst_1 X) -> Prop}, (forall (r : R), C (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Distrib.toAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X), C a)
+  forall (R : Type.{u2}) [_inst_1 : CommSemiring.{u2} R] (X : Type.{u1}) {C : (FreeAlgebra.{u2, u1} R _inst_1 X) -> Prop}, (forall (r : R), C (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Distrib.toAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X), C a)
 Case conversion may be inaccurate. Consider using '#align free_algebra.induction FreeAlgebra.inductionₓ'. -/
 /-- An induction principle for the free algebra.
 
Diff
@@ -389,7 +389,7 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
 
 /- warning: free_algebra.lift_aux_eq -> FreeAlgebra.liftAux_eq is a dubious translation:
 lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.3391014519.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.2396039455.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
 but is expected to have type
   forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eqₓ'. -/
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Adam Topaz
 
 ! This file was ported from Lean 3 source module algebra.free_algebra
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
+! leanprover-community/mathlib commit aa3a420527e0fbfd0f6615b95b761254a9166e12
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Algebra.MonoidAlgebra.Basic
 /-!
 # Free Algebras
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Given a commutative semiring `R`, and a type `X`, we construct the free unital, associative
 `R`-algebra on `X`.
 
@@ -386,7 +389,7 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
 
 /- warning: free_algebra.lift_aux_eq -> FreeAlgebra.liftAux_eq is a dubious translation:
 lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.1865498249.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.3391014519.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
 but is expected to have type
   forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
 Case conversion may be inaccurate. Consider using '#align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eqₓ'. -/
Diff
@@ -57,6 +57,12 @@ variable (X : Type _)
 
 namespace FreeAlgebra
 
+/- warning: free_algebra.pre -> FreeAlgebra.Pre is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R], Type.{u2} -> Sort.{max (succ u1) (succ u2)}
+but is expected to have type
+  Type.{u1} -> Type.{u2} -> Sort.{max (succ u1) (succ u2)}
+Case conversion may be inaccurate. Consider using '#align free_algebra.pre FreeAlgebra.Preₓ'. -/
 /-- This inductive type is used to express representatives of the free algebra.
 -/
 inductive Pre
@@ -71,37 +77,71 @@ namespace Pre
 instance : Inhabited (Pre R X) :=
   ⟨of_scalar 0⟩
 
+/- warning: free_algebra.pre.has_coe_generator -> FreeAlgebra.Pre.hasCoeGenerator is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Coe.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
+but is expected to have type
+  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Coe.{succ u2, max (succ u2) (succ u1)} _inst_1 (FreeAlgebra.Pre.{u1, u2} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_coe_generator FreeAlgebra.Pre.hasCoeGeneratorₓ'. -/
 -- Note: These instances are only used to simplify the notation.
 /-- Coercion from `X` to `pre R X`. Note: Used for notation only. -/
 def hasCoeGenerator : Coe X (Pre R X) :=
   ⟨of⟩
 #align free_algebra.pre.has_coe_generator FreeAlgebra.Pre.hasCoeGenerator
 
+/- warning: free_algebra.pre.has_coe_semiring -> FreeAlgebra.Pre.hasCoeSemiring is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Coe.{succ u1, max (succ u1) (succ u2)} R (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
+but is expected to have type
+  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Coe.{succ u1, max (succ u2) (succ u1)} R (FreeAlgebra.Pre.{u1, u2} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiringₓ'. -/
 /-- Coercion from `R` to `pre R X`. Note: Used for notation only. -/
 def hasCoeSemiring : Coe R (Pre R X) :=
   ⟨of_scalar⟩
 #align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiring
 
+/- warning: free_algebra.pre.has_mul -> FreeAlgebra.Pre.hasMul is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Mul.{max u1 u2} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
+but is expected to have type
+  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Mul.{max u2 u1} (FreeAlgebra.Pre.{u1, u2} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_mul FreeAlgebra.Pre.hasMulₓ'. -/
 /-- Multiplication in `pre R X` defined as `pre.mul`. Note: Used for notation only. -/
 def hasMul : Mul (Pre R X) :=
   ⟨mul⟩
 #align free_algebra.pre.has_mul FreeAlgebra.Pre.hasMul
 
+/- warning: free_algebra.pre.has_add -> FreeAlgebra.Pre.hasAdd is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), Add.{max u1 u2} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
+but is expected to have type
+  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), Add.{max u2 u1} (FreeAlgebra.Pre.{u1, u2} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_add FreeAlgebra.Pre.hasAddₓ'. -/
 /-- Addition in `pre R X` defined as `pre.add`. Note: Used for notation only. -/
 def hasAdd : Add (Pre R X) :=
   ⟨add⟩
 #align free_algebra.pre.has_add FreeAlgebra.Pre.hasAdd
 
+#print FreeAlgebra.Pre.hasZero /-
 /-- Zero in `pre R X` defined as the image of `0` from `R`. Note: Used for notation only. -/
 def hasZero : Zero (Pre R X) :=
   ⟨of_scalar 0⟩
 #align free_algebra.pre.has_zero FreeAlgebra.Pre.hasZero
+-/
 
+#print FreeAlgebra.Pre.hasOne /-
 /-- One in `pre R X` defined as the image of `1` from `R`. Note: Used for notation only. -/
 def hasOne : One (Pre R X) :=
   ⟨of_scalar 1⟩
 #align free_algebra.pre.has_one FreeAlgebra.Pre.hasOne
+-/
 
+/- warning: free_algebra.pre.has_smul -> FreeAlgebra.Pre.hasSmul is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}), SMul.{u1, max u1 u2} R (FreeAlgebra.Pre.{u1, u2} R _inst_1 X)
+but is expected to have type
+  forall (R : Type.{u1}) (_inst_1 : Type.{u2}), SMul.{u1, max u2 u1} R (FreeAlgebra.Pre.{u1, u2} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmulₓ'. -/
 /-- Scalar multiplication defined as multiplication by the image of elements from `R`.
 Note: Used for notation only.
 -/
@@ -114,13 +154,16 @@ end Pre
 attribute [local instance]
   pre.has_coe_generator pre.has_coe_semiring pre.has_mul pre.has_add pre.has_zero pre.has_one pre.has_smul
 
+#print FreeAlgebra.liftFun /-
 /-- Given a function from `X` to an `R`-algebra `A`, `lift_fun` provides a lift of `f` to a function
 from `pre R X` to `A`. This is mainly used in the construction of `free_algebra.lift`.
 -/
 def liftFun {A : Type _} [Semiring A] [Algebra R A] (f : X → A) : Pre R X → A := fun t =>
   Pre.recOn t f (algebraMap _ _) (fun _ _ => (· + ·)) fun _ _ => (· * ·)
 #align free_algebra.lift_fun FreeAlgebra.liftFun
+-/
 
+#print FreeAlgebra.Rel /-
 /-- An inductively defined relation on `pre R X` used to force the initial algebra structure on
 the associated quotient.
 -/
@@ -151,14 +194,17 @@ inductive Rel : Pre R X → Pre R X → Prop-- force `of_scalar` to be a central
   | mul_compat_left {a b c : Pre R X} : Rel a b → Rel (a * c) (b * c)
   | mul_compat_right {a b c : Pre R X} : Rel a b → Rel (c * a) (c * b)
 #align free_algebra.rel FreeAlgebra.Rel
+-/
 
 end FreeAlgebra
 
+#print FreeAlgebra /-
 /-- The free algebra for the type `X` over the commutative semiring `R`.
 -/
 def FreeAlgebra :=
   Quot (FreeAlgebra.Rel R X)
 #align free_algebra FreeAlgebra
+-/
 
 namespace FreeAlgebra
 
@@ -229,11 +275,19 @@ instance {S : Type _} [CommRing S] : Ring (FreeAlgebra S X) :=
 
 variable {X}
 
+#print FreeAlgebra.ι /-
 /-- The canonical function `X → free_algebra R X`.
 -/
 irreducible_def ι : X → FreeAlgebra R X := fun m => Quot.mk _ m
 #align free_algebra.ι FreeAlgebra.ι
+-/
 
+/- warning: free_algebra.quot_mk_eq_ι -> FreeAlgebra.quot_mk_eq_ι is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (m : X), Eq.{max (succ u1) (succ u2)} (Quot.{max (succ u1) (succ u2)} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (FreeAlgebra.Rel.{u1, u2} R _inst_1 X)) (Quot.mk.{max (succ u1) (succ u2)} (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (FreeAlgebra.Rel.{u1, u2} R _inst_1 X) ((fun (a : Type.{u2}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u2, max (succ u1) (succ u2)} a b] => self.0) X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (HasLiftT.mk.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (CoeTCₓ.coe.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (coeBase.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.Pre.{u1, u2} R _inst_1 X) (FreeAlgebra.Pre.hasCoeGenerator.{u1, u2} R _inst_1 X)))) m)) (FreeAlgebra.ι.{u1, u2} R _inst_1 X m)
+but is expected to have type
+  forall (R : Type.{u2}) [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (m : X), Eq.{max (succ u2) (succ u1)} (Quot.{max (succ u2) (succ u1)} (FreeAlgebra.Pre.{u2, u1} R X) (FreeAlgebra.Rel.{u2, u1} R _inst_1 X)) (Quot.mk.{max (succ u2) (succ u1)} (FreeAlgebra.Pre.{u2, u1} R X) (FreeAlgebra.Rel.{u2, u1} R _inst_1 X) (FreeAlgebra.Pre.of.{u2, u1} R X m)) (FreeAlgebra.ι.{u2, u1} R _inst_1 X m)
+Case conversion may be inaccurate. Consider using '#align free_algebra.quot_mk_eq_ι FreeAlgebra.quot_mk_eq_ιₓ'. -/
 @[simp]
 theorem quot_mk_eq_ι (m : X) : Quot.mk (FreeAlgebra.Rel R X) m = ι R m := by rw [ι]
 #align free_algebra.quot_mk_eq_ι FreeAlgebra.quot_mk_eq_ι
@@ -293,6 +347,12 @@ private def lift_aux (f : X → A) : FreeAlgebra R X →ₐ[R] A
   commutes' := by tauto
 #align free_algebra.lift_aux free_algebra.lift_aux
 
+/- warning: free_algebra.lift -> FreeAlgebra.lift is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2], Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)
+but is expected to have type
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2], Equiv.{max (succ u2) (succ u3), max (succ u3) (succ (max u2 u1))} (X -> A) (AlgHom.{u1, max u2 u1, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u2} R _inst_1 X) _inst_3)
+Case conversion may be inaccurate. Consider using '#align free_algebra.lift FreeAlgebra.liftₓ'. -/
 /-- Given a function `f : X → A` where `A` is an `R`-algebra, `lift R f` is the unique lift
 of `f` to a morphism of `R`-algebras `free_algebra R X → A`.
 -/
@@ -324,6 +384,12 @@ irreducible_def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
         rw [AlgHom.map_mul, AlgHom.map_mul, ha, hb] }
 #align free_algebra.lift FreeAlgebra.lift
 
+/- warning: free_algebra.lift_aux_eq -> FreeAlgebra.liftAux_eq is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (_Private.1865498249.liftAux.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3 f) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)
+but is expected to have type
+  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (_private.Mathlib.Algebra.FreeAlgebra.0.FreeAlgebra.liftAux.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3 f) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f)
+Case conversion may be inaccurate. Consider using '#align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eqₓ'. -/
 @[simp]
 theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
   by
@@ -331,6 +397,12 @@ theorem liftAux_eq (f : X → A) : liftAux R f = lift R f :=
   rfl
 #align free_algebra.lift_aux_eq FreeAlgebra.liftAux_eq
 
+/- warning: free_algebra.lift_symm_apply -> FreeAlgebra.lift_symm_apply is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (F : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u3)} (X -> A) (coeFn.{max 1 (max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)) (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3), max (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3)} (Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (fun (_x : Equiv.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) => (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) -> X -> A) (Equiv.hasCoeToFun.{max (succ (max u1 u2)) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) F) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))
+but is expected to have type
+  forall (R : Type.{u3}) [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (F : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) F) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) => X -> A) _x) (Equiv.instFunLikeEquiv.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (X -> A)) (Equiv.symm.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3)) F) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) F) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))
+Case conversion may be inaccurate. Consider using '#align free_algebra.lift_symm_apply FreeAlgebra.lift_symm_applyₓ'. -/
 @[simp]
 theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F ∘ ι R :=
   by
@@ -340,6 +412,12 @@ theorem lift_symm_apply (F : FreeAlgebra R X →ₐ[R] A) : (lift R).symm F = F
 
 variable {R X}
 
+/- warning: free_algebra.ι_comp_lift -> FreeAlgebra.ι_comp_lift is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u3}} {A : Type.{u2}} [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] (f : X -> A), Eq.{max (succ u3) (succ u2)} (X -> A) (Function.comp.{succ u3, max (succ u1) (succ u3), succ u2} X (FreeAlgebra.{u1, u3} R _inst_1 X) A (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u1, u3} R _inst_1 X) (fun (_x : FreeAlgebra.{u1, u3} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u1, u3} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (SMulZeroClass.toSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toZero.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u1, u2} R A (AddMonoid.toZero.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} R A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))))) (DistribMulAction.toDistribSMul.{u1, u2} R A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)))) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u1 u3) u2, u1, max u1 u3, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u1, u3} R _inst_1 X) A (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (Module.toDistribMulAction.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u3} (FreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X)))) (Algebra.toModule.{u1, max u1 u3} R (FreeAlgebra.{u1, u3} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X))) (Module.toDistribMulAction.{u1, u2} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A _inst_2))) (Algebra.toModule.{u1, u2} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u1, max u1 u3, u2, max (max u1 u3) u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u1, max u1 u3, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (Equiv.{max (succ u3) (succ u2), max (succ u2) (succ (max u3 u1))} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u3), max (max (succ u1) (succ u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u3 u1, u2} R (FreeAlgebra.{u1, u3} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u3} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u3, u2} R _inst_1 X A _inst_2 _inst_3) f)) (FreeAlgebra.ι.{u1, u3} R _inst_1 X)) f
+Case conversion may be inaccurate. Consider using '#align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_liftₓ'. -/
 @[simp]
 theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R = f :=
   by
@@ -348,6 +426,12 @@ theorem ι_comp_lift (f : X → A) : (lift R f : FreeAlgebra R X → A) ∘ ι R
   rfl
 #align free_algebra.ι_comp_lift FreeAlgebra.ι_comp_lift
 
+/- warning: free_algebra.lift_ι_apply -> FreeAlgebra.lift_ι_apply is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) (f x)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u2, u3} R A _inst_1 _inst_2] (f : X -> A) (x : X), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (FunLike.coe.{max (max (succ u2) (succ u1)) (succ u3), max (succ u2) (succ u1), succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (SMulZeroClass.toSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u2, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u2, u3} R A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u2 u1) u3, u2, max u2 u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) R (FreeAlgebra.{u2, u1} R _inst_1 X) A (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (Module.toDistribMulAction.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u3} R A (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u2, u3} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u2 u1, u3, max (max u2 u1) u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3 ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) f) (AlgHom.algHomClass.{u2, max u2 u1, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3))))) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ (max u1 u2))} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (max (succ u2) (succ u3)) (succ u1)} (X -> A) (AlgHom.{u2, max u1 u2, u3} R (FreeAlgebra.{u2, u1} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u2, u1, u3} R _inst_1 X A _inst_2 _inst_3) f) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) (f x)
+Case conversion may be inaccurate. Consider using '#align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_applyₓ'. -/
 @[simp]
 theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
   by
@@ -355,6 +439,12 @@ theorem lift_ι_apply (f : X → A) (x) : lift R f (ι R x) = f x :=
   rfl
 #align free_algebra.lift_ι_apply FreeAlgebra.lift_ι_apply
 
+/- warning: free_algebra.lift_unique -> FreeAlgebra.lift_unique is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) f) (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) f))
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (f : X -> A) (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Iff (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) f) (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) g (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) f))
+Case conversion may be inaccurate. Consider using '#align free_algebra.lift_unique FreeAlgebra.lift_uniqueₓ'. -/
 @[simp]
 theorem lift_unique (f : X → A) (g : FreeAlgebra R X →ₐ[R] A) :
     (g : FreeAlgebra R X → A) ∘ ι R = f ↔ g = lift R f :=
@@ -369,6 +459,12 @@ should only use the universal properties of the free algebra, and consider the a
 as a quotient of an inductive type as completely hidden. -/
 
 
+/- warning: free_algebra.lift_comp_ι -> FreeAlgebra.lift_comp_ι is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] (g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3), Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (coeFn.{max 1 (max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)) (max (succ (max u1 u2)) (succ u3)) (succ u2) (succ u3), max (max (succ u2) (succ u3)) (succ (max u1 u2)) (succ u3)} (Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (fun (_x : Equiv.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) => (X -> A) -> (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (Equiv.hasCoeToFun.{max (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (X -> A) (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u1, u2, u3} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) g
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] (g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3), Eq.{max (max (succ u3) (succ u2)) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (a : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) a) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) (FunLike.coe.{max (max (succ u3) (succ u1)) (succ u2), max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ (max u2 u3))} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (X -> A) (fun (_x : X -> A) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : X -> A) => AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (max (succ u3) (succ u1)) (succ u2)} (X -> A) (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3)) (FreeAlgebra.lift.{u3, u2, u1} R _inst_1 X A _inst_2 _inst_3) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) g
+Case conversion may be inaccurate. Consider using '#align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ιₓ'. -/
 -- Marking `free_algebra` irreducible makes `ring` instances inaccessible on quotients.
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
 -- For now, we avoid this by not marking it irreducible.
@@ -379,6 +475,12 @@ theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebr
   exact (lift R).apply_symm_apply g
 #align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ι
 
+/- warning: free_algebra.hom_ext -> FreeAlgebra.hom_ext is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} {A : Type.{u3}} [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] {f : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u3)} (X -> A) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) f) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u1) (succ u2), succ u3} X (FreeAlgebra.{u1, u2} R _inst_1 X) A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) (fun (_x : AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> A) ([anonymous].{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) g) (FreeAlgebra.ι.{u1, u2} R _inst_1 X))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R (FreeAlgebra.{u1, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) _inst_2 (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) _inst_3) f g)
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : CommSemiring.{u3} R] {X : Type.{u2}} {A : Type.{u1}} [_inst_2 : Semiring.{u1} A] [_inst_3 : Algebra.{u3, u1} R A _inst_1 _inst_2] {f : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3} {g : AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3}, (Eq.{max (succ u2) (succ u1)} (X -> A) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) f) (FreeAlgebra.ι.{u3, u2} R _inst_1 X)) (Function.comp.{succ u2, max (succ u3) (succ u2), succ u1} X (FreeAlgebra.{u3, u2} R _inst_1 X) A (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u2), succ u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (FreeAlgebra.{u3, u2} R _inst_1 X) (fun (_x : FreeAlgebra.{u3, u2} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u3, u2} R _inst_1 X) => A) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (SMulZeroClass.toSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toZero.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u3, u1} R A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u3, u1} R A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))))) (DistribMulAction.toDistribSMul.{u3, u1} R A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)))) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max (max u3 u2) u1, u3, max u3 u2, u1} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) R (FreeAlgebra.{u3, u2} R _inst_1 X) A (MonoidWithZero.toMonoid.{u3} R (Semiring.toMonoidWithZero.{u3} R (CommSemiring.toSemiring.{u3} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2)) (Module.toDistribMulAction.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u3 u2} (FreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X)))) (Algebra.toModule.{u3, max u3 u2} R (FreeAlgebra.{u3, u2} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X))) (Module.toDistribMulAction.{u3, u1} R A (CommSemiring.toSemiring.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_2))) (Algebra.toModule.{u3, u1} R A _inst_1 _inst_2 _inst_3)) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u3, max u3 u2, u1, max (max u3 u2) u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3 (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) (AlgHom.algHomClass.{u3, max u3 u2, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3))))) g) (FreeAlgebra.ι.{u3, u2} R _inst_1 X))) -> (Eq.{max (max (succ u3) (succ u2)) (succ u1)} (AlgHom.{u3, max u2 u3, u1} R (FreeAlgebra.{u3, u2} R _inst_1 X) A _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_2 (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u3, u2} R _inst_1 X) _inst_3) f g)
+Case conversion may be inaccurate. Consider using '#align free_algebra.hom_ext FreeAlgebra.hom_extₓ'. -/
 /-- See note [partially-applied ext lemmas]. -/
 @[ext]
 theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
@@ -388,6 +490,12 @@ theorem hom_ext {f g : FreeAlgebra R X →ₐ[R] A}
   exact (lift R).symm.Injective w
 #align free_algebra.hom_ext FreeAlgebra.hom_ext
 
+/- warning: free_algebra.equiv_monoid_algebra_free_monoid -> FreeAlgebra.equivMonoidAlgebraFreeMonoid is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgEquiv.{u1, max u1 u2, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (MonoidAlgebra.semiring.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.cancelMonoid.{u2} X)))) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.algebra.{u1, u2, u1} R (FreeMonoid.{u2} X) R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.cancelMonoid.{u2} X))))
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgEquiv.{u1, max u2 u1, max u2 u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1)) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.semiring.{u1, u2} R (FreeMonoid.{u2} X) (CommSemiring.toSemiring.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} X)))) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (MonoidAlgebra.algebra.{u1, u2, u1} R (FreeMonoid.{u2} X) R _inst_1 (CommSemiring.toSemiring.{u1} R _inst_1) (Algebra.id.{u1} R _inst_1) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} X) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} X) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} X))))
+Case conversion may be inaccurate. Consider using '#align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoidₓ'. -/
 /-- The free algebra on `X` is "just" the monoid algebra on the free monoid on `X`.
 
 This would be useful when constructing linear maps out of a free algebra,
@@ -415,32 +523,68 @@ instance [Nontrivial R] : Nontrivial (FreeAlgebra R X) :=
 
 section
 
+/- warning: free_algebra.algebra_map_inv -> FreeAlgebra.algebraMapInv is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, AlgHom.{u1, max u2 u1, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInvₓ'. -/
 /-- The left-inverse of `algebra_map`. -/
 def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
   lift R (0 : X → R)
 #align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInv
 
+/- warning: free_algebra.algebra_map_left_inverse -> FreeAlgebra.algebraMap_leftInverse is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}}, Function.LeftInverse.{succ u1, max (succ u1) (succ u2)} R (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ (max u1 u2)) (succ u1), max (succ (max u1 u2)) (succ u1)} (AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (fun (_x : AlgHom.{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) => (FreeAlgebra.{u1, u2} R _inst_1 X) -> R) ([anonymous].{u1, max u1 u2, u1} R (FreeAlgebra.{u1, u2} R _inst_1 X) R _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (CommSemiring.toSemiring.{u1} R _inst_1) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X) (Algebra.id.{u1} R _inst_1)) (FreeAlgebra.algebraMapInv.{u1, u2} R _inst_1 X)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)))
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}}, Function.LeftInverse.{succ u2, max (succ u1) (succ u2)} R (FreeAlgebra.{u2, u1} R _inst_1 X) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), succ u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (FreeAlgebra.{u2, u1} R _inst_1 X) (fun (_x : FreeAlgebra.{u2, u1} R _inst_1 X) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : FreeAlgebra.{u2, u1} R _inst_1 X) => R) _x) (SMulHomClass.toFunLike.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (SMulZeroClass.toSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toZero.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribSMul.toSMulZeroClass.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (AddMonoid.toAddZeroClass.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (DistribMulAction.toDistribSMul.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (SMulZeroClass.toSMul.{u2, u2} R R (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribSMul.toSMulZeroClass.{u2, u2} R R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))) (DistribMulAction.toDistribSMul.{u2, u2} R R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1)))))) (DistribMulActionHomClass.toSMulHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (NonUnitalAlgHomClass.toDistribMulActionHomClass.{max u1 u2, u2, max u1 u2, u2} (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) R (FreeAlgebra.{u2, u1} R _inst_1 X) R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (Module.toDistribMulAction.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (Algebra.toModule.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (Module.toDistribMulAction.{u2, u2} R R (CommSemiring.toSemiring.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (Algebra.toModule.{u2, u2} R R _inst_1 (CommSemiring.toSemiring.{u2} R _inst_1) (Algebra.id.{u2} R _inst_1))) (AlgHom.instNonUnitalAlgHomClassToMonoidToMonoidWithZeroToSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToNonUnitalNonAssocSemiringToNonAssocSemiringToDistribMulActionToAddCommMonoidToModuleToDistribMulActionToAddCommMonoidToModule.{u2, max u1 u2, u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1) (AlgHom.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)) (AlgHom.algHomClass.{u2, max u1 u2, u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) R _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (CommSemiring.toSemiring.{u2} R _inst_1) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (Algebra.id.{u2} R _inst_1)))))) (FreeAlgebra.algebraMapInv.{u2, u1} R _inst_1 X)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))
+Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverseₓ'. -/
 theorem algebraMap_leftInverse :
     Function.LeftInverse algebraMapInv (algebraMap R <| FreeAlgebra R X) := fun x => by
   simp [algebra_map_inv]
 #align free_algebra.algebra_map_left_inverse FreeAlgebra.algebraMap_leftInverse
 
+/- warning: free_algebra.algebra_map_inj -> FreeAlgebra.algebraMap_inj is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R) (y : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) y)) (Eq.{succ u1} R x y)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R) (y : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) y)) (Eq.{succ u2} R x y)
+Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_inj FreeAlgebra.algebraMap_injₓ'. -/
 @[simp]
 theorem algebraMap_inj (x y : R) :
     algebraMap R (FreeAlgebra R X) x = algebraMap R (FreeAlgebra R X) y ↔ x = y :=
   algebraMap_leftInverse.Injective.eq_iff
 #align free_algebra.algebra_map_inj FreeAlgebra.algebraMap_inj
 
+/- warning: free_algebra.algebra_map_eq_zero_iff -> FreeAlgebra.algebraMap_eq_zero_iff is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (Zero.zero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (MulZeroClass.toHasZero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))))))
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 0 (Zero.toOfNat0.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (MonoidWithZero.toZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_eq_zero_iff FreeAlgebra.algebraMap_eq_zero_iffₓ'. -/
 @[simp]
 theorem algebraMap_eq_zero_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 0 ↔ x = 0 :=
   map_eq_zero_iff (algebraMap _ _) algebraMap_leftInverse.Injective
 #align free_algebra.algebra_map_eq_zero_iff FreeAlgebra.algebraMap_eq_zero_iff
 
+/- warning: free_algebra.algebra_map_eq_one_iff -> FreeAlgebra.algebraMap_eq_one_iff is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} (x : R), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (One.one.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddMonoidWithOne.toOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))))))
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} (x : R), Iff (Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) x) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) 1 (One.toOfNat1.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (Semiring.toOne.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) x) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) (Eq.{succ u2} R x (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align free_algebra.algebra_map_eq_one_iff FreeAlgebra.algebraMap_eq_one_iffₓ'. -/
 @[simp]
 theorem algebraMap_eq_one_iff (x : R) : algebraMap R (FreeAlgebra R X) x = 1 ↔ x = 1 :=
   map_eq_one_iff (algebraMap _ _) algebraMap_leftInverse.Injective
 #align free_algebra.algebra_map_eq_one_iff FreeAlgebra.algebraMap_eq_one_iff
 
+/- warning: free_algebra.ι_injective -> FreeAlgebra.ι_injective is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R], Function.Injective.{succ u2, max (succ u1) (succ u2)} X (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R], Function.Injective.{succ u1, max (succ u2) (succ u1)} X (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X)
+Case conversion may be inaccurate. Consider using '#align free_algebra.ι_injective FreeAlgebra.ι_injectiveₓ'. -/
 -- this proof is copied from the approach in `free_abelian_group.of_injective`
 theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgebra R X) :=
   fun x y hoxy =>
@@ -453,11 +597,23 @@ theorem ι_injective [Nontrivial R] : Function.Injective (ι R : X → FreeAlgeb
         one_ne_zero <| hfy1.symm.trans hfy0
 #align free_algebra.ι_injective FreeAlgebra.ι_injective
 
+/- warning: free_algebra.ι_inj -> FreeAlgebra.ι_inj is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X) (y : X), Iff (Eq.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (FreeAlgebra.ι.{u1, u2} R _inst_1 X y)) (Eq.{succ u2} X x y)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X) (y : X), Iff (Eq.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (FreeAlgebra.ι.{u2, u1} R _inst_1 X y)) (Eq.{succ u1} X x y)
+Case conversion may be inaccurate. Consider using '#align free_algebra.ι_inj FreeAlgebra.ι_injₓ'. -/
 @[simp]
 theorem ι_inj [Nontrivial R] (x y : X) : ι R x = ι R y ↔ x = y :=
   ι_injective.eq_iff
 #align free_algebra.ι_inj FreeAlgebra.ι_inj
 
+/- warning: free_algebra.ι_ne_algebra_map -> FreeAlgebra.ι_ne_algebraMap is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X) (r : R), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) r)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X) (r : R), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (FunLike.coe.{max (succ u2) (succ (max u2 u1)), succ u2, succ (max u2 u1)} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)
+Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMapₓ'. -/
 @[simp]
 theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap R _ r := fun h =>
   by
@@ -470,11 +626,23 @@ theorem ι_ne_algebraMap [Nontrivial R] (x : X) (r : R) : ι R x ≠ algebraMap
   exact zero_ne_one (hf0.symm.trans hf1)
 #align free_algebra.ι_ne_algebra_map FreeAlgebra.ι_ne_algebraMap
 
+/- warning: free_algebra.ι_ne_zero -> FreeAlgebra.ι_ne_zero is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 0 (Zero.zero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (MulZeroClass.toHasZero.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toMulZeroClass.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (OfNat.ofNat.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) 0 (Zero.toOfNat0.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (MonoidWithZero.toZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toMonoidWithZero.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))
+Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_zero FreeAlgebra.ι_ne_zeroₓ'. -/
 @[simp]
 theorem ι_ne_zero [Nontrivial R] (x : X) : ι R x ≠ 0 :=
   ι_ne_algebraMap x 0
 #align free_algebra.ι_ne_zero FreeAlgebra.ι_ne_zero
 
+/- warning: free_algebra.ι_ne_one -> FreeAlgebra.ι_ne_one is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {X : Type.{u2}} [_inst_4 : Nontrivial.{u1} R] (x : X), Ne.{max (succ u1) (succ u2)} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.ι.{u1, u2} R _inst_1 X x) (OfNat.ofNat.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (OfNat.mk.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) 1 (One.one.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddMonoidWithOne.toOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))))))))
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : CommSemiring.{u2} R] {X : Type.{u1}} [_inst_4 : Nontrivial.{u2} R] (x : X), Ne.{max (succ u2) (succ u1)} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.ι.{u2, u1} R _inst_1 X x) (OfNat.ofNat.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) 1 (One.toOfNat1.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toOne.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))
+Case conversion may be inaccurate. Consider using '#align free_algebra.ι_ne_one FreeAlgebra.ι_ne_oneₓ'. -/
 @[simp]
 theorem ι_ne_one [Nontrivial R] (x : X) : ι R x ≠ 1 :=
   ι_ne_algebraMap x 1
@@ -488,6 +656,12 @@ end FreeAlgebra
 `has_coe_to_sort` below. Closing it and reopening it fixes it... -/
 namespace FreeAlgebra
 
+/- warning: free_algebra.induction -> FreeAlgebra.induction is a dubious translation:
+lean 3 declaration is
+  forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (X : Type.{u2}) {C : (FreeAlgebra.{u1, u2} R _inst_1 X) -> Prop}, (forall (r : R), C (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (fun (_x : RingHom.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) => R -> (FreeAlgebra.{u1, u2} R _inst_1 X)) (RingHom.hasCoeToFun.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X))) (algebraMap.{u1, max u1 u2} R (FreeAlgebra.{u1, u2} R _inst_1 X) _inst_1 (FreeAlgebra.semiring.{u1, u2} R _inst_1 X) (FreeAlgebra.algebra.{u1, u2} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u1, u2} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X) (b : FreeAlgebra.{u1, u2} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (instHMul.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Distrib.toHasMul.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X) (b : FreeAlgebra.{u1, u2} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.{u1, u2} R _inst_1 X) (instHAdd.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Distrib.toHasAdd.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u1, u2} R _inst_1 X) (FreeAlgebra.semiring.{u1, u2} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u1, u2} R _inst_1 X), C a)
+but is expected to have type
+  forall (R : Type.{u2}) [_inst_1 : CommSemiring.{u2} R] (X : Type.{u1}) {C : (FreeAlgebra.{u2, u1} R _inst_1 X) -> Prop}, (forall (r : R), C (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => FreeAlgebra.{u2, u1} R _inst_1 X) _x) (MulHomClass.toFunLike.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, max u2 u1} (RingHom.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))) R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) (RingHom.instRingHomClassRingHom.{u2, max u2 u1} R (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) (algebraMap.{u2, max u1 u2} R (FreeAlgebra.{u2, u1} R _inst_1 X) _inst_1 (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instAlgebraFreeAlgebraInstSemiringFreeAlgebra.{u2, u1} R _inst_1 X)) r)) -> (forall (x : X), C (FreeAlgebra.ι.{u2, u1} R _inst_1 X x)) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X) (b : FreeAlgebra.{u2, u1} R _inst_1 X), (C a) -> (C b) -> (C (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.{u2, u1} R _inst_1 X) (instHAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Distrib.toAdd.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonUnitalNonAssocSemiring.toDistrib.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (Semiring.toNonAssocSemiring.{max u2 u1} (FreeAlgebra.{u2, u1} R _inst_1 X) (FreeAlgebra.instSemiringFreeAlgebra.{u2, u1} R _inst_1 X)))))) a b))) -> (forall (a : FreeAlgebra.{u2, u1} R _inst_1 X), C a)
+Case conversion may be inaccurate. Consider using '#align free_algebra.induction FreeAlgebra.inductionₓ'. -/
 /-- An induction principle for the free algebra.
 
 If `C` holds for the `algebra_map` of `r : R` into `free_algebra R X`, the `ι` of `x : X`, and is
Diff
@@ -143,8 +143,8 @@ inductive Rel : Pre R X → Pre R X → Prop-- force `of_scalar` to be a central
   right_distrib {a b c : Pre R X} :
     Rel ((a + b) * c) (a * c + b * c)-- other relations needed for semiring
 
-  | zero_mul {a : Pre R X} : Rel (0 * a) 0
-  | mul_zero {a : Pre R X} : Rel (a * 0) 0-- compatibility
+  | MulZeroClass.zero_mul {a : Pre R X} : Rel (0 * a) 0
+  | MulZeroClass.mul_zero {a : Pre R X} : Rel (a * 0) 0-- compatibility
 
   | add_compat_left {a b c : Pre R X} : Rel a b → Rel (a + c) (b + c)
   | add_compat_right {a b c : Pre R X} : Rel a b → Rel (c + a) (c + b)

Changes in mathlib4

mathlib3
mathlib4
change the order of operation in zsmulRec and nsmulRec (#11451)

We change the following field in the definition of an additive commutative monoid:

 nsmul_succ : ∀ (n : ℕ) (x : G),
-  AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+  AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x

where the latter is more natural

We adjust the definitions of ^ in monoids, groups, etc. Originally there was a warning comment about why this natural order was preferred

use x * npowRec n x and not npowRec n x * x in the definition to make sure that definitional unfolding of npowRec is blocked, to avoid deep recursion issues.

but it seems to no longer apply.

Remarks on the PR :

  • pow_succ and pow_succ' have switched their meanings.
  • Most of the time, the proofs were adjusted by priming/unpriming one lemma, or exchanging left and right; a few proofs were more complicated to adjust.
  • In particular, [Mathlib/NumberTheory/RamificationInertia.lean] used Ideal.IsPrime.mul_mem_pow which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul.
  • the docstring for Cauchy condensation test in [Mathlib/Analysis/PSeries.lean] was mathematically incorrect, I added the mention that the function is antitone.
Diff
@@ -237,7 +237,7 @@ instance instAddCommMonoid : AddCommMonoid (FreeAlgebra R X) where
   nsmul_succ n := by
     rintro ⟨a⟩
     dsimp only [HSMul.hSMul, instSMul, Quot.map]
-    rw [map_add, map_one, add_comm, mk_mul, mk_mul, ← one_add_mul (_ : FreeAlgebra R X)]
+    rw [map_add, map_one, mk_mul, mk_mul, ← add_one_mul (_ : FreeAlgebra R X)]
     congr 1
     exact Quot.sound Rel.add_scalar
 
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -51,7 +51,6 @@ inductively defined relation `FreeAlgebra.Rel`. Explicitly, the construction inv
 
 
 variable (R : Type*) [CommSemiring R]
-
 variable (X : Type*)
 
 namespace FreeAlgebra
chore: prepare Lean version bump with explicit simp (#10999)

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

Diff
@@ -579,7 +579,7 @@ theorem induction {C : FreeAlgebra R X → Prop}
   -- the mapping through the subalgebra is the identity
   have of_id : AlgHom.id R (FreeAlgebra R X) = s.val.comp (lift R of) := by
     ext
-    simp [Subtype.coind]
+    simp [of, Subtype.coind]
   -- finding a proof is finding an element of the subalgebra
   suffices a = lift R of a by
     rw [this]
chore(diamonds): appropriate transparency levels for diamond checks (#10910)

Currently, we have multiple "no-diamond" tests of the form

example : x = y := rfl

where X and Y are instances of some class. The problem is that since simp and type class synthesis operate at reducible_and_instances transparency this check means little.

We went through all the mentions of diamonds and either added with_reducible_and_instancse or added a reference to the issue #10906.

Co-authored-by: Kevin Buzzard <k.buzzard@imperial.ac.uk>

Diff
@@ -266,7 +266,8 @@ instance instAlgebra {A} [CommSemiring A] [Algebra R A] : Algebra R (FreeAlgebra
     exact Quot.sound Rel.central_scalar
   smul_def' _ _ := rfl
 
--- verify there is no diamond
+-- verify there is no diamond at `default` transparency but we will need
+-- `reducible_and_instances` which currently fails #10906
 variable (S : Type) [CommSemiring S] in
 example : (algebraNat : Algebra ℕ (FreeAlgebra S X)) = instAlgebra _ _ := rfl
 
@@ -287,7 +288,8 @@ instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A] [Algebra R A
 instance {S : Type*} [CommRing S] : Ring (FreeAlgebra S X) :=
   Algebra.semiringToRing S
 
--- verify there is no diamond
+-- verify there is no diamond but we will need
+-- `reducible_and_instances` which currently fails #10906
 variable (S : Type) [CommRing S] in
 example : (algebraInt _ : Algebra ℤ (FreeAlgebra S X)) = instAlgebra _ _ := rfl
 
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -579,8 +579,8 @@ theorem induction {C : FreeAlgebra R X → Prop}
     ext
     simp [Subtype.coind]
   -- finding a proof is finding an element of the subalgebra
-  suffices : a = lift R of a
-  · rw [this]
+  suffices a = lift R of a by
+    rw [this]
     exact Subtype.prop (lift R of a)
   simp [AlgHom.ext_iff] at of_id
   exact of_id a
feat: tensor algebra of free module over integral domain is a domain (#9890)

Provide instances

  • Nontrivial (TensorAlgebra R M) when M is a module over a nontrivial semiring R
  • NoZeroDivisors (FreeAlgebra R X) when R is a commutative semiring with no zero-divisors and X any type
  • IsDomain (FreeAlgebra R X) when R is an integral domain and X is any type
  • TwoUniqueProds (FreeMonoid X) where X is any type (this provides NoZeroDivisors (MonoidAlgebra R (FreeMonoid X)) when R is a semiring and X any type, via TwoUniqueProds.toUniqueProds and MonoidAlgebra.instNoZeroDivisorsOfUniqueProds)
  • NoZeroDivisors (TensorAlgebra R M) when M is a free module over a commutative semiring R with no zero-divisors
  • IsDomain (TensorAlgebra R M) when M is a free module over an integral domain R

In Algebra.Group.UniqueProds:

  • Rename UniqueProds.mulHom_image_of_injective to UniqueProds.of_injective_mulHom.
  • New lemmas UniqueMul.of_mulHom_image, UniqueProds.of_mulHom, TwoUniqueProds.of_mulHom show the relevant property holds in the domain of a multiplicative homomorphism if it holds in the codomain, under a certain hypothesis on the homomorphism.

Co-authored-by: Richard Copley <rcopley@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -5,7 +5,7 @@ Authors: Scott Morrison, Adam Topaz, Eric Wieser
 -/
 import Mathlib.Algebra.Algebra.Subalgebra.Basic
 import Mathlib.Algebra.Algebra.Tower
-import Mathlib.Algebra.MonoidAlgebra.Basic
+import Mathlib.Algebra.MonoidAlgebra.NoZeroDivisors
 import Mathlib.RingTheory.Adjoin.Basic
 
 #align_import algebra.free_algebra from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
@@ -471,9 +471,18 @@ noncomputable def equivMonoidAlgebraFreeMonoid :
       simp)
 #align free_algebra.equiv_monoid_algebra_free_monoid FreeAlgebra.equivMonoidAlgebraFreeMonoid
 
+/-- `FreeAlgebra R X` is nontrivial when `R` is. -/
 instance [Nontrivial R] : Nontrivial (FreeAlgebra R X) :=
   equivMonoidAlgebraFreeMonoid.surjective.nontrivial
 
+/-- `FreeAlgebra R X` has no zero-divisors when `R` has no zero-divisors. -/
+instance instNoZeroDivisors [NoZeroDivisors R] : NoZeroDivisors (FreeAlgebra R X) :=
+  equivMonoidAlgebraFreeMonoid.toMulEquiv.noZeroDivisors
+
+/-- `FreeAlgebra R X` is a domain when `R` is an integral domain. -/
+instance instIsDomain {R X} [CommRing R] [IsDomain R] : IsDomain (FreeAlgebra R X) :=
+  NoZeroDivisors.to_isDomain _
+
 section
 
 /-- The left-inverse of `algebraMap`. -/
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -6,7 +6,6 @@ Authors: Scott Morrison, Adam Topaz, Eric Wieser
 import Mathlib.Algebra.Algebra.Subalgebra.Basic
 import Mathlib.Algebra.Algebra.Tower
 import Mathlib.Algebra.MonoidAlgebra.Basic
-import Mathlib.Algebra.Free
 import Mathlib.RingTheory.Adjoin.Basic
 
 #align_import algebra.free_algebra from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
style: use cases x with | ... instead of cases x; case => ... (#9321)

This converts usages of the pattern

cases h
case inl h' => ...
case inr h' => ...

which derive from mathported code, to the "structured cases" syntax:

cases h with
| inl h' => ...
| inr h' => ...

The case where the subgoals are handled with · instead of case is more contentious (and much more numerous) so I left those alone. This pattern also appears with cases', induction, induction', and rcases. Furthermore, there is a similar transformation for by_cases:

by_cases h : cond
case pos => ...
case neg => ...

is replaced by:

if h : cond then
  ...
else
  ...

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -371,21 +371,21 @@ def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
     right_inv := fun F ↦ by
       ext t
       rcases t with ⟨x⟩
-      induction x
-      case of =>
+      induction x with
+      | of =>
         change ((F : FreeAlgebra R X → A) ∘ ι R) _ = _
         simp only [Function.comp_apply, ι_def]
-      case ofScalar x =>
+      | ofScalar x =>
         change algebraMap _ _ x = F (algebraMap _ _ x)
         rw [AlgHom.commutes F _]
-      case add a b ha hb =>
+      | add a b ha hb =>
         -- Porting note: it is necessary to declare fa and fb explicitly otherwise Lean refuses
         -- to consider `Quot.mk (Rel R X) ·` as element of FreeAlgebra R X
         let fa : FreeAlgebra R X := Quot.mk (Rel R X) a
         let fb : FreeAlgebra R X := Quot.mk (Rel R X) b
         change liftAux R (F ∘ ι R) (fa + fb) = F (fa + fb)
         rw [AlgHom.map_add, AlgHom.map_add, ha, hb]
-      case mul a b ha hb =>
+      | mul a b ha hb =>
         let fa : FreeAlgebra R X := Quot.mk (Rel R X) a
         let fb : FreeAlgebra R X := Quot.mk (Rel R X) b
         change liftAux R (F ∘ ι R) (fa * fb) = F (fa * fb)
chore: Nsmul -> NSMul, Zpow -> ZPow, etc (#9067)

Normalising to naming convention rule number 6.

Diff
@@ -98,13 +98,13 @@ def hasOne : One (Pre R X) := ⟨ofScalar 1⟩
 /-- Scalar multiplication defined as multiplication by the image of elements from `R`.
 Note: Used for notation only.
 -/
-def hasSmul : SMul R (Pre R X) := ⟨fun r m ↦ mul (ofScalar r) m⟩
-#align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmul
+def hasSMul : SMul R (Pre R X) := ⟨fun r m ↦ mul (ofScalar r) m⟩
+#align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSMul
 
 end Pre
 
 attribute [local instance] Pre.hasCoeGenerator Pre.hasCoeSemiring Pre.hasMul Pre.hasAdd
-  Pre.hasZero Pre.hasOne Pre.hasSmul
+  Pre.hasZero Pre.hasOne Pre.hasSMul
 
 /-- Given a function from `X` to an `R`-algebra `A`, `lift_fun` provides a lift of `f` to a function
 from `Pre R X` to `A`. This is mainly used in the construction of `FreeAlgebra.lift`.
@@ -164,7 +164,7 @@ def FreeAlgebra :=
 namespace FreeAlgebra
 
 attribute [local instance] Pre.hasCoeGenerator Pre.hasCoeSemiring Pre.hasMul Pre.hasAdd
-  Pre.hasZero Pre.hasOne Pre.hasSmul
+  Pre.hasZero Pre.hasOne Pre.hasSMul
 
 /-! Define the basic operations-/
 
chore: space after (#8178)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -239,7 +239,7 @@ instance instAddCommMonoid : AddCommMonoid (FreeAlgebra R X) where
   nsmul_succ n := by
     rintro ⟨a⟩
     dsimp only [HSMul.hSMul, instSMul, Quot.map]
-    rw [map_add, map_one, add_comm, mk_mul, mk_mul, ←one_add_mul (_ : FreeAlgebra R X)]
+    rw [map_add, map_one, add_comm, mk_mul, mk_mul, ← one_add_mul (_ : FreeAlgebra R X)]
     congr 1
     exact Quot.sound Rel.add_scalar
 
@@ -276,10 +276,10 @@ instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     IsScalarTower R S (FreeAlgebra A X) where
   smul_assoc r s x := by
     change algebraMap S A (r • s) • x = algebraMap R A _ • (algebraMap S A _ • x)
-    rw [←smul_assoc]
+    rw [← smul_assoc]
     congr
     simp only [Algebra.algebraMap_eq_smul_one, smul_eq_mul]
-    rw [smul_assoc, ←smul_one_mul]
+    rw [smul_assoc, ← smul_one_mul]
 
 instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A] [Algebra R A] [Algebra S A] :
     SMulCommClass R S (FreeAlgebra A X) where
@@ -593,7 +593,7 @@ variable {A : Type*} [Semiring A] [Algebra R A]
 /-- Noncommutative version of `Algebra.adjoin_range_eq_range_aeval`. -/
 theorem _root_.Algebra.adjoin_range_eq_range_freeAlgebra_lift (f : X → A) :
     Algebra.adjoin R (Set.range f) = (FreeAlgebra.lift R f).range := by
-  simp only [← Algebra.map_top, ←adjoin_range_ι, AlgHom.map_adjoin, ← Set.range_comp,
+  simp only [← Algebra.map_top, ← adjoin_range_ι, AlgHom.map_adjoin, ← Set.range_comp,
     (· ∘ ·), lift_ι_apply]
 
 /-- Noncommutative version of `Algebra.adjoin_range_eq_range`. -/
fix: lean4-ify names of inductive constructors (#8652)

These inductive types carry data, so these should be functionCase not theorem_case.

It seems that mathport didn't do this.

Diff
@@ -61,14 +61,14 @@ namespace FreeAlgebra
 -/
 inductive Pre
   | of : X → Pre
-  | of_scalar : R → Pre
+  | ofScalar : R → Pre
   | add : Pre → Pre → Pre
   | mul : Pre → Pre → Pre
 #align free_algebra.pre FreeAlgebra.Pre
 
 namespace Pre
 
-instance : Inhabited (Pre R X) := ⟨of_scalar 0⟩
+instance : Inhabited (Pre R X) := ⟨ofScalar 0⟩
 
 -- Note: These instances are only used to simplify the notation.
 /-- Coercion from `X` to `Pre R X`. Note: Used for notation only. -/
@@ -76,7 +76,7 @@ def hasCoeGenerator : Coe X (Pre R X) := ⟨of⟩
 #align free_algebra.pre.has_coe_generator FreeAlgebra.Pre.hasCoeGenerator
 
 /-- Coercion from `R` to `Pre R X`. Note: Used for notation only. -/
-def hasCoeSemiring : Coe R (Pre R X) := ⟨of_scalar⟩
+def hasCoeSemiring : Coe R (Pre R X) := ⟨ofScalar⟩
 #align free_algebra.pre.has_coe_semiring FreeAlgebra.Pre.hasCoeSemiring
 
 /-- Multiplication in `Pre R X` defined as `Pre.mul`. Note: Used for notation only. -/
@@ -88,17 +88,17 @@ def hasAdd : Add (Pre R X) := ⟨add⟩
 #align free_algebra.pre.has_add FreeAlgebra.Pre.hasAdd
 
 /-- Zero in `Pre R X` defined as the image of `0` from `R`. Note: Used for notation only. -/
-def hasZero : Zero (Pre R X) := ⟨of_scalar 0⟩
+def hasZero : Zero (Pre R X) := ⟨ofScalar 0⟩
 #align free_algebra.pre.has_zero FreeAlgebra.Pre.hasZero
 
 /-- One in `Pre R X` defined as the image of `1` from `R`. Note: Used for notation only. -/
-def hasOne : One (Pre R X) := ⟨of_scalar 1⟩
+def hasOne : One (Pre R X) := ⟨ofScalar 1⟩
 #align free_algebra.pre.has_one FreeAlgebra.Pre.hasOne
 
 /-- Scalar multiplication defined as multiplication by the image of elements from `R`.
 Note: Used for notation only.
 -/
-def hasSmul : SMul R (Pre R X) := ⟨fun r m ↦ mul (of_scalar r) m⟩
+def hasSmul : SMul R (Pre R X) := ⟨fun r m ↦ mul (ofScalar r) m⟩
 #align free_algebra.pre.has_smul FreeAlgebra.Pre.hasSmul
 
 end Pre
@@ -115,14 +115,14 @@ def liftFun {A : Type*} [Semiring A] [Algebra R A] (f : X → A) :
   | .of t => f t
   | .add a b => liftFun f a + liftFun f b
   | .mul a b => liftFun f a * liftFun f b
-  | .of_scalar c => algebraMap _ _ c
+  | .ofScalar c => algebraMap _ _ c
 #align free_algebra.lift_fun FreeAlgebra.liftFun
 
 /-- An inductively defined relation on `Pre R X` used to force the initial algebra structure on
 the associated quotient.
 -/
 inductive Rel : Pre R X → Pre R X → Prop
-  -- force `of_scalar` to be a central semiring morphism
+  -- force `ofScalar` to be a central semiring morphism
   | add_scalar {r s : R} : Rel (↑(r + s)) (↑r + ↑s)
   | mul_scalar {r s : R} : Rel (↑(r * s)) (↑r * ↑s)
   | central_scalar {r : R} {a : Pre R X} : Rel (r * a) (a * r)
@@ -375,7 +375,7 @@ def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
       case of =>
         change ((F : FreeAlgebra R X → A) ∘ ι R) _ = _
         simp only [Function.comp_apply, ι_def]
-      case of_scalar x =>
+      case ofScalar x =>
         change algebraMap _ _ x = F (algebraMap _ _ x)
         rw [AlgHom.commutes F _]
       case add a b ha hb =>
fix(LinearAlgebra/{Free,Tensor,Clifford}Algebra): remove an unused SMulCommClass argument (#8373)

SMulCommClass R S A is always true when Algebra R A and Algebra S A and A is commutative, since the two actions factor via multiplication in A. I don't think mathlib actually knows this fact yet, but in this particular case it's also true by definition.

Diff
@@ -281,8 +281,7 @@ instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     simp only [Algebra.algebraMap_eq_smul_one, smul_eq_mul]
     rw [smul_assoc, ←smul_one_mul]
 
-instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A]
-    [Algebra R A] [Algebra S A] [SMulCommClass R S A] :
+instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A] [Algebra R A] [Algebra S A] :
     SMulCommClass R S (FreeAlgebra A X) where
   smul_comm r s x := smul_comm (algebraMap R A r) (algebraMap S A s) x
 
chore(Algebra/FreeAlgebra): fix ported comments (#7824)

Per discussion on zulip.

Diff
@@ -121,27 +121,32 @@ def liftFun {A : Type*} [Semiring A] [Algebra R A] (f : X → A) :
 /-- An inductively defined relation on `Pre R X` used to force the initial algebra structure on
 the associated quotient.
 -/
-inductive Rel : Pre R X → Pre R X → Prop-- force `of_scalar` to be a central semiring morphism
-
+inductive Rel : Pre R X → Pre R X → Prop
+  -- force `of_scalar` to be a central semiring morphism
   | add_scalar {r s : R} : Rel (↑(r + s)) (↑r + ↑s)
   | mul_scalar {r s : R} : Rel (↑(r * s)) (↑r * ↑s)
-  | central_scalar {r : R} {a : Pre R X} : Rel (r * a) (a * r)-- commutative additive semigroup
+  | central_scalar {r : R} {a : Pre R X} : Rel (r * a) (a * r)
 
+  -- commutative additive semigroup
   | add_assoc {a b c : Pre R X} : Rel (a + b + c) (a + (b + c))
   | add_comm {a b : Pre R X} : Rel (a + b) (b + a)
-  | zero_add {a : Pre R X} : Rel (0 + a) a-- multiplicative monoid
+  | zero_add {a : Pre R X} : Rel (0 + a) a
 
+  -- multiplicative monoid
   | mul_assoc {a b c : Pre R X} : Rel (a * b * c) (a * (b * c))
   | one_mul {a : Pre R X} : Rel (1 * a) a
-  | mul_one {a : Pre R X} : Rel (a * 1) a-- distributivity
+  | mul_one {a : Pre R X} : Rel (a * 1) a
 
+  -- distributivity
   | left_distrib {a b c : Pre R X} : Rel (a * (b + c)) (a * b + a * c)
   | right_distrib {a b c : Pre R X} :
-      Rel ((a + b) * c) (a * c + b * c)-- other relations needed for semiring
+      Rel ((a + b) * c) (a * c + b * c)
 
+  -- other relations needed for semiring
   | zero_mul {a : Pre R X} : Rel (0 * a) 0
-  | mul_zero {a : Pre R X} : Rel (a * 0) 0-- compatibility
+  | mul_zero {a : Pre R X} : Rel (a * 0) 0
 
+  -- compatibility
   | add_compat_left {a b c : Pre R X} : Rel a b → Rel (a + c) (b + c)
   | add_compat_right {a b c : Pre R X} : Rel a b → Rel (c + a) (c + b)
   | mul_compat_left {a b c : Pre R X} : Rel a b → Rel (a * c) (b * c)
feat(RingTheory/FiniteType): generalize results to non-commutative generators (#6757)

Many of the proofs in this file go via quotients of MvPolynomial; but this forces a commutativity assumption that can be avoided by instead going via quotients of FreeAlgebra.

Most of the new FreeAlgebra results are just copies of the proofs for MvPolynomial, which isn't ideal in terms of duplication.

Diff
@@ -1,12 +1,13 @@
 /-
 Copyright (c) 2020 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
-Authors: Scott Morrison, Adam Topaz
+Authors: Scott Morrison, Adam Topaz, Eric Wieser
 -/
 import Mathlib.Algebra.Algebra.Subalgebra.Basic
 import Mathlib.Algebra.Algebra.Tower
 import Mathlib.Algebra.MonoidAlgebra.Basic
 import Mathlib.Algebra.Free
+import Mathlib.RingTheory.Adjoin.Basic
 
 #align_import algebra.free_algebra from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
 
@@ -573,4 +574,27 @@ theorem induction {C : FreeAlgebra R X → Prop}
   exact of_id a
 #align free_algebra.induction FreeAlgebra.induction
 
+@[simp]
+theorem adjoin_range_ι : Algebra.adjoin R (Set.range (ι R : X → FreeAlgebra R X)) = ⊤ := by
+  set S := Algebra.adjoin R (Set.range (ι R : X → FreeAlgebra R X))
+  refine top_unique fun x hx => ?_; clear hx
+  induction x using FreeAlgebra.induction with
+  | h_grade0 => exact S.algebraMap_mem _
+  | h_add x y hx hy => exact S.add_mem hx hy
+  | h_mul x y hx hy => exact S.mul_mem hx hy
+  | h_grade1 x => exact Algebra.subset_adjoin (Set.mem_range_self _)
+
+variable {A : Type*} [Semiring A] [Algebra R A]
+
+/-- Noncommutative version of `Algebra.adjoin_range_eq_range_aeval`. -/
+theorem _root_.Algebra.adjoin_range_eq_range_freeAlgebra_lift (f : X → A) :
+    Algebra.adjoin R (Set.range f) = (FreeAlgebra.lift R f).range := by
+  simp only [← Algebra.map_top, ←adjoin_range_ι, AlgHom.map_adjoin, ← Set.range_comp,
+    (· ∘ ·), lift_ι_apply]
+
+/-- Noncommutative version of `Algebra.adjoin_range_eq_range`. -/
+theorem _root_.Algebra.adjoin_eq_range_freeAlgebra_lift (s : Set A) :
+    Algebra.adjoin R s = (FreeAlgebra.lift R ((↑) : s → A)).range := by
+  rw [← Algebra.adjoin_range_eq_range_freeAlgebra_lift, Subtype.range_coe]
+
 end FreeAlgebra
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

Search&replace MulZeroClass.mul_zero -> mul_zero, MulZeroClass.zero_mul -> zero_mul.

These were introduced by Mathport, as the full name of mul_zero is actually MulZeroClass.mul_zero (it's exported with the short name).

Diff
@@ -138,8 +138,8 @@ inductive Rel : Pre R X → Pre R X → Prop-- force `of_scalar` to be a central
   | right_distrib {a b c : Pre R X} :
       Rel ((a + b) * c) (a * c + b * c)-- other relations needed for semiring
 
-  | MulZeroClass.zero_mul {a : Pre R X} : Rel (0 * a) 0
-  | MulZeroClass.mul_zero {a : Pre R X} : Rel (a * 0) 0-- compatibility
+  | zero_mul {a : Pre R X} : Rel (0 * a) 0
+  | mul_zero {a : Pre R X} : Rel (a * 0) 0-- compatibility
 
   | add_compat_left {a b c : Pre R X} : Rel a b → Rel (a + c) (b + c)
   | add_compat_right {a b c : Pre R X} : Rel a b → Rel (c + a) (c + b)
@@ -197,10 +197,10 @@ instance instMonoidWithZero : MonoidWithZero (FreeAlgebra R X) where
     exact Quot.sound Rel.mul_one
   zero_mul := by
     rintro ⟨⟩
-    exact Quot.sound Rel.MulZeroClass.zero_mul
+    exact Quot.sound Rel.zero_mul
   mul_zero := by
     rintro ⟨⟩
-    exact Quot.sound Rel.MulZeroClass.mul_zero
+    exact Quot.sound Rel.mul_zero
 
 instance instDistrib : Distrib (FreeAlgebra R X) where
   left_distrib := by
@@ -229,7 +229,7 @@ instance instAddCommMonoid : AddCommMonoid (FreeAlgebra R X) where
     rintro ⟨⟩
     change Quot.mk _ (_ * _) = _
     rw [map_zero]
-    exact Quot.sound Rel.MulZeroClass.zero_mul
+    exact Quot.sound Rel.zero_mul
   nsmul_succ n := by
     rintro ⟨a⟩
     dsimp only [HSMul.hSMul, instSMul, Quot.map]
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -50,9 +50,9 @@ inductively defined relation `FreeAlgebra.Rel`. Explicitly, the construction inv
 -/
 
 
-variable (R : Type _) [CommSemiring R]
+variable (R : Type*) [CommSemiring R]
 
-variable (X : Type _)
+variable (X : Type*)
 
 namespace FreeAlgebra
 
@@ -109,7 +109,7 @@ attribute [local instance] Pre.hasCoeGenerator Pre.hasCoeSemiring Pre.hasMul Pre
 from `Pre R X` to `A`. This is mainly used in the construction of `FreeAlgebra.lift`.
 -/
 -- Porting note: recOn was replaced to preserve computability, see lean4#2049
-def liftFun {A : Type _} [Semiring A] [Algebra R A] (f : X → A) :
+def liftFun {A : Type*} [Semiring A] [Algebra R A] (f : X → A) :
     Pre R X → A
   | .of t => f t
   | .add a b => liftFun f a + liftFun f b
@@ -280,7 +280,7 @@ instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     SMulCommClass R S (FreeAlgebra A X) where
   smul_comm r s x := smul_comm (algebraMap R A r) (algebraMap S A s) x
 
-instance {S : Type _} [CommRing S] : Ring (FreeAlgebra S X) :=
+instance {S : Type*} [CommRing S] : Ring (FreeAlgebra S X) :=
   Algebra.semiringToRing S
 
 -- verify there is no diamond
@@ -298,7 +298,7 @@ irreducible_def ι : X → FreeAlgebra R X := fun m ↦ Quot.mk _ m
 theorem quot_mk_eq_ι (m : X) : Quot.mk (FreeAlgebra.Rel R X) m = ι R m := by rw [ι_def]
 #align free_algebra.quot_mk_eq_ι FreeAlgebra.quot_mk_eq_ι
 
-variable {A : Type _} [Semiring A] [Algebra R A]
+variable {A : Type*} [Semiring A] [Algebra R A]
 
 /-- Internal definition used to define `lift` -/
 private def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A where
feat(Algebra/FreeAlgebra): support towers of algebras (#6072)

This provide Algebra R (FreeAlgebra A X) when Algebra R A; previously we only had Algebra R (FreeAlgebra R X).

This also fixes some diamonds that would arise as a result of this new instance by filling the zsmul and intCast fields of Module.addCommMonoidToAddCommGroup, Algebra.semiringToRing, and the nsmul and natCast fields of the Semiring instance.

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Adam Topaz
 -/
 import Mathlib.Algebra.Algebra.Subalgebra.Basic
+import Mathlib.Algebra.Algebra.Tower
 import Mathlib.Algebra.MonoidAlgebra.Basic
 import Mathlib.Algebra.Free
 
@@ -159,23 +160,31 @@ namespace FreeAlgebra
 attribute [local instance] Pre.hasCoeGenerator Pre.hasCoeSemiring Pre.hasMul Pre.hasAdd
   Pre.hasZero Pre.hasOne Pre.hasSmul
 
-instance : Semiring (FreeAlgebra R X) where
-  add := Quot.map₂ (· + ·) (fun _ _ _ ↦ Rel.add_compat_right) fun _ _ _ ↦ Rel.add_compat_left
-  add_assoc := by
-    rintro ⟨⟩ ⟨⟩ ⟨⟩
-    exact Quot.sound Rel.add_assoc
-  zero := Quot.mk _ 0
-  zero_add := by
-    rintro ⟨⟩
-    exact Quot.sound Rel.zero_add
-  add_zero := by
-    rintro ⟨⟩
-    change Quot.mk _ _ = _
-    rw [Quot.sound Rel.add_comm, Quot.sound Rel.zero_add]
-  add_comm := by
-    rintro ⟨⟩ ⟨⟩
-    exact Quot.sound Rel.add_comm
-  mul := Quot.map₂ (· * ·) (fun _ _ _ ↦ Rel.mul_compat_right) fun _ _ _ ↦ Rel.mul_compat_left
+/-! Define the basic operations-/
+
+instance instSMul {A} [CommSemiring A] [Algebra R A] : SMul R (FreeAlgebra A X) where
+  smul r := Quot.map (HMul.hMul (algebraMap R A r : Pre A X)) fun _ _ ↦ Rel.mul_compat_right
+
+instance instZero : Zero (FreeAlgebra R X) where zero := Quot.mk _ 0
+
+instance instOne : One (FreeAlgebra R X) where one := Quot.mk _ 1
+
+instance instAdd : Add (FreeAlgebra R X) where
+  add := Quot.map₂ HAdd.hAdd (fun _ _ _ ↦ Rel.add_compat_right) fun _ _ _ ↦ Rel.add_compat_left
+
+instance instMul : Mul (FreeAlgebra R X) where
+  mul := Quot.map₂ HMul.hMul (fun _ _ _ ↦ Rel.mul_compat_right) fun _ _ _ ↦ Rel.mul_compat_left
+
+-- `Quot.mk` is an implementation detail of `FreeAlgebra`, so this lemma is private
+private theorem mk_mul (x y : Pre R X) :
+    Quot.mk (Rel R X) (x * y) = (HMul.hMul (self := instHMul (α := FreeAlgebra R X))
+    (Quot.mk (Rel R X) x) (Quot.mk (Rel R X) y)) :=
+  rfl
+
+/-! Build the semiring structure. We do this one piece at a time as this is convenient for proving
+the `nsmul` fields. -/
+
+instance instMonoidWithZero : MonoidWithZero (FreeAlgebra R X) where
   mul_assoc := by
     rintro ⟨⟩ ⟨⟩ ⟨⟩
     exact Quot.sound Rel.mul_assoc
@@ -186,39 +195,98 @@ instance : Semiring (FreeAlgebra R X) where
   mul_one := by
     rintro ⟨⟩
     exact Quot.sound Rel.mul_one
+  zero_mul := by
+    rintro ⟨⟩
+    exact Quot.sound Rel.MulZeroClass.zero_mul
+  mul_zero := by
+    rintro ⟨⟩
+    exact Quot.sound Rel.MulZeroClass.mul_zero
+
+instance instDistrib : Distrib (FreeAlgebra R X) where
   left_distrib := by
     rintro ⟨⟩ ⟨⟩ ⟨⟩
     exact Quot.sound Rel.left_distrib
   right_distrib := by
     rintro ⟨⟩ ⟨⟩ ⟨⟩
     exact Quot.sound Rel.right_distrib
-  zero_mul := by
+
+instance instAddCommMonoid : AddCommMonoid (FreeAlgebra R X) where
+  add_assoc := by
+    rintro ⟨⟩ ⟨⟩ ⟨⟩
+    exact Quot.sound Rel.add_assoc
+  zero_add := by
     rintro ⟨⟩
-    exact Quot.sound Rel.MulZeroClass.zero_mul
-  mul_zero := by
+    exact Quot.sound Rel.zero_add
+  add_zero := by
     rintro ⟨⟩
-    exact Quot.sound Rel.MulZeroClass.mul_zero
+    change Quot.mk _ _ = _
+    rw [Quot.sound Rel.add_comm, Quot.sound Rel.zero_add]
+  add_comm := by
+    rintro ⟨⟩ ⟨⟩
+    exact Quot.sound Rel.add_comm
+  nsmul := (· • ·)
+  nsmul_zero := by
+    rintro ⟨⟩
+    change Quot.mk _ (_ * _) = _
+    rw [map_zero]
+    exact Quot.sound Rel.MulZeroClass.zero_mul
+  nsmul_succ n := by
+    rintro ⟨a⟩
+    dsimp only [HSMul.hSMul, instSMul, Quot.map]
+    rw [map_add, map_one, add_comm, mk_mul, mk_mul, ←one_add_mul (_ : FreeAlgebra R X)]
+    congr 1
+    exact Quot.sound Rel.add_scalar
+
+instance : Semiring (FreeAlgebra R X) where
+  __ := instMonoidWithZero R X
+  __ := instAddCommMonoid R X
+  __ := instDistrib R X
+  natCast n := Quot.mk _ (n : R)
+  natCast_zero := by simp; rfl
+  natCast_succ n := by simp; exact Quot.sound Rel.add_scalar
 
 instance : Inhabited (FreeAlgebra R X) :=
   ⟨0⟩
 
-instance : SMul R (FreeAlgebra R X) where
-  smul r := Quot.map ((· * ·) ↑r) fun _ _ ↦ Rel.mul_compat_right
-
-instance : Algebra R (FreeAlgebra R X) where
-  toFun r := Quot.mk _ r
-  map_one' := rfl
-  map_mul' _ _ := Quot.sound Rel.mul_scalar
-  map_zero' := rfl
-  map_add' _ _ := Quot.sound Rel.add_scalar
+instance instAlgebra {A} [CommSemiring A] [Algebra R A] : Algebra R (FreeAlgebra A X) where
+  toRingHom := ({
+      toFun := fun r => Quot.mk _ r
+      map_one' := rfl
+      map_mul' := fun _ _ => Quot.sound Rel.mul_scalar
+      map_zero' := rfl
+      map_add' := fun _ _ => Quot.sound Rel.add_scalar } : A →+* FreeAlgebra A X).comp
+      (algebraMap R A)
   commutes' _ := by
     rintro ⟨⟩
     exact Quot.sound Rel.central_scalar
   smul_def' _ _ := rfl
 
+-- verify there is no diamond
+variable (S : Type) [CommSemiring S] in
+example : (algebraNat : Algebra ℕ (FreeAlgebra S X)) = instAlgebra _ _ := rfl
+
+instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A]
+    [SMul R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] :
+    IsScalarTower R S (FreeAlgebra A X) where
+  smul_assoc r s x := by
+    change algebraMap S A (r • s) • x = algebraMap R A _ • (algebraMap S A _ • x)
+    rw [←smul_assoc]
+    congr
+    simp only [Algebra.algebraMap_eq_smul_one, smul_eq_mul]
+    rw [smul_assoc, ←smul_one_mul]
+
+instance {R S A} [CommSemiring R] [CommSemiring S] [CommSemiring A]
+    [Algebra R A] [Algebra S A] [SMulCommClass R S A] :
+    SMulCommClass R S (FreeAlgebra A X) where
+  smul_comm r s x := smul_comm (algebraMap R A r) (algebraMap S A s) x
+
 instance {S : Type _} [CommRing S] : Ring (FreeAlgebra S X) :=
   Algebra.semiringToRing S
 
+-- verify there is no diamond
+variable (S : Type) [CommRing S] in
+example : (algebraInt _ : Algebra ℤ (FreeAlgebra S X)) = instAlgebra _ _ := rfl
+
 variable {X}
 
 /-- The canonical function `X → FreeAlgebra R X`.
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2020 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Adam Topaz
-
-! This file was ported from Lean 3 source module algebra.free_algebra
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Algebra.Subalgebra.Basic
 import Mathlib.Algebra.MonoidAlgebra.Basic
 import Mathlib.Algebra.Free
 
+#align_import algebra.free_algebra from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
+
 /-!
 # Free Algebras
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

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

Diff
@@ -264,7 +264,7 @@ private def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A where
       · change _ * algebraMap _ _ _ = algebraMap _ _ _
         simp
       repeat
-        change liftFun R X f _ + liftFun R X f _ =  _
+        change liftFun R X f _ + liftFun R X f _ = _
         simp only [*]
         rfl
       repeat
chore: fix typos (#4518)

I ran codespell Mathlib and got tired halfway through the suggestions.

Diff
@@ -309,7 +309,7 @@ def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
         change algebraMap _ _ x = F (algebraMap _ _ x)
         rw [AlgHom.commutes F _]
       case add a b ha hb =>
-        -- Porting note: it is necessary to declare fa and fb explicitely otherwise Lean refuses
+        -- Porting note: it is necessary to declare fa and fb explicitly otherwise Lean refuses
         -- to consider `Quot.mk (Rel R X) ·` as element of FreeAlgebra R X
         let fa : FreeAlgebra R X := Quot.mk (Rel R X) a
         let fb : FreeAlgebra R X := Quot.mk (Rel R X) b
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -238,8 +238,7 @@ variable {A : Type _} [Semiring A] [Algebra R A]
 /-- Internal definition used to define `lift` -/
 private def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A where
   toFun a :=
-    Quot.liftOn a (liftFun _ _ f) fun a b h ↦
-      by
+    Quot.liftOn a (liftFun _ _ f) fun a b h ↦ by
       induction' h
       · exact (algebraMap R A).map_add _ _
       · exact (algebraMap R A).map_mul _ _
@@ -367,8 +366,8 @@ as a quotient of an inductive type as completely hidden. -/
 -- https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/algebra.2Esemiring_to_ring.20breaks.20semimodule.20typeclass.20lookup/near/212580241
 -- For now, we avoid this by not marking it irreducible.
 @[simp]
-theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) : lift R ((g : FreeAlgebra R X → A) ∘ ι R) = g :=
-  by
+theorem lift_comp_ι (g : FreeAlgebra R X →ₐ[R] A) :
+    lift R ((g : FreeAlgebra R X → A) ∘ ι R) = g := by
   rw [← lift_symm_apply]
   exact (lift R).apply_symm_apply g
 #align free_algebra.lift_comp_ι FreeAlgebra.lift_comp_ι
@@ -498,8 +497,7 @@ theorem induction {C : FreeAlgebra R X → Prop}
       algebraMap_mem' := h_grade0 }
   let of : X → s := Subtype.coind (ι R) h_grade1
   -- the mapping through the subalgebra is the identity
-  have of_id : AlgHom.id R (FreeAlgebra R X) = s.val.comp (lift R of) :=
-    by
+  have of_id : AlgHom.id R (FreeAlgebra R X) = s.val.comp (lift R of) := by
     ext
     simp [Subtype.coind]
   -- finding a proof is finding an element of the subalgebra
chore: tidy various files (#3110)
Diff
@@ -33,7 +33,7 @@ Given a commutative semiring `R`, and a type `X`, we construct the free unital,
 3. `hom_ext` is a variant of `lift_unique` in the form of an extensionality theorem.
 4. `lift_comp_ι` is a combination of `ι_comp_lift` and `lift_unique`. It states that the lift
   of the composition of an algebra morphism with `ι` is the algebra morphism itself.
-5. `equiv_monoid_algebra_free_monoid : FreeAlgebra R X ≃ₐ[R] MonoidAlgebra R (FreeMonoid X)`
+5. `equivMonoidAlgebraFreeMonoid : FreeAlgebra R X ≃ₐ[R] MonoidAlgebra R (FreeMonoid X)`
 6. An inductive principle `induction`.
 
 ## Implementation details
@@ -162,8 +162,7 @@ namespace FreeAlgebra
 attribute [local instance] Pre.hasCoeGenerator Pre.hasCoeSemiring Pre.hasMul Pre.hasAdd
   Pre.hasZero Pre.hasOne Pre.hasSmul
 
-instance : Semiring (FreeAlgebra R X)
-    where
+instance : Semiring (FreeAlgebra R X) where
   add := Quot.map₂ (· + ·) (fun _ _ _ ↦ Rel.add_compat_right) fun _ _ _ ↦ Rel.add_compat_left
   add_assoc := by
     rintro ⟨⟩ ⟨⟩ ⟨⟩
@@ -206,11 +205,10 @@ instance : Semiring (FreeAlgebra R X)
 instance : Inhabited (FreeAlgebra R X) :=
   ⟨0⟩
 
-instance : SMul R (FreeAlgebra R X)
-    where smul r := Quot.map ((· * ·) ↑r) fun _ _ ↦ Rel.mul_compat_right
+instance : SMul R (FreeAlgebra R X) where
+  smul r := Quot.map ((· * ·) ↑r) fun _ _ ↦ Rel.mul_compat_right
 
-instance : Algebra R (FreeAlgebra R X)
-    where
+instance : Algebra R (FreeAlgebra R X) where
   toFun r := Quot.mk _ r
   map_one' := rfl
   map_mul' _ _ := Quot.sound Rel.mul_scalar
@@ -238,8 +236,7 @@ theorem quot_mk_eq_ι (m : X) : Quot.mk (FreeAlgebra.Rel R X) m = ι R m := by r
 variable {A : Type _} [Semiring A] [Algebra R A]
 
 /-- Internal definition used to define `lift` -/
-private def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A
-    where
+private def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A where
   toFun a :=
     Quot.liftOn a (liftFun _ _ f) fun a b h ↦
       by
chore: remove noncomputable in Algebra.FreeAlgebra (#3011)

See the Zulip thread

Diff
@@ -110,9 +110,13 @@ attribute [local instance] Pre.hasCoeGenerator Pre.hasCoeSemiring Pre.hasMul Pre
 /-- Given a function from `X` to an `R`-algebra `A`, `lift_fun` provides a lift of `f` to a function
 from `Pre R X` to `A`. This is mainly used in the construction of `FreeAlgebra.lift`.
 -/
--- Porting note: added noncomputable for recOn to work
-noncomputable def liftFun {A : Type _} [Semiring A] [Algebra R A] (f : X → A) :
-  Pre R X → A := fun t ↦ Pre.recOn t f (algebraMap _ _) (fun _ _ ↦ (· + ·)) (fun _ _ ↦ (· * ·))
+-- Porting note: recOn was replaced to preserve computability, see lean4#2049
+def liftFun {A : Type _} [Semiring A] [Algebra R A] (f : X → A) :
+    Pre R X → A
+  | .of t => f t
+  | .add a b => liftFun f a + liftFun f b
+  | .mul a b => liftFun f a * liftFun f b
+  | .of_scalar c => algebraMap _ _ c
 #align free_algebra.lift_fun FreeAlgebra.liftFun
 
 /-- An inductively defined relation on `Pre R X` used to force the initial algebra structure on
@@ -234,8 +238,7 @@ theorem quot_mk_eq_ι (m : X) : Quot.mk (FreeAlgebra.Rel R X) m = ι R m := by r
 variable {A : Type _} [Semiring A] [Algebra R A]
 
 /-- Internal definition used to define `lift` -/
--- Porting note: add noncomputable since liftFun is also noncomputable
-private noncomputable def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A
+private def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A
     where
   toFun a :=
     Quot.liftOn a (liftFun _ _ f) fun a b h ↦
@@ -291,9 +294,8 @@ private noncomputable def liftAux (f : X → A) : FreeAlgebra R X →ₐ[R] A
 /-- Given a function `f : X → A` where `A` is an `R`-algebra, `lift R f` is the unique lift
 of `f` to a morphism of `R`-algebras `FreeAlgebra R X → A`.
 -/
--- Porting note: add noncomputable since liftFun is also noncomputable and changed
--- irreducible_def to def since it does not work with noncomputable
-noncomputable def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
+@[irreducible]
+def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
   { toFun := liftAux R
     invFun := fun F ↦ F ∘ ι R
     left_inv := fun f ↦ by
@@ -312,7 +314,7 @@ noncomputable def lift : (X → A) ≃ (FreeAlgebra R X →ₐ[R] A) :=
         rw [AlgHom.commutes F _]
       case add a b ha hb =>
         -- Porting note: it is necessary to declare fa and fb explicitely otherwise Lean refuses
-        -- to consider Quot.mk (Rel R X) * as element of FreeAlgebra R X
+        -- to consider `Quot.mk (Rel R X) ·` as element of FreeAlgebra R X
         let fa : FreeAlgebra R X := Quot.mk (Rel R X) a
         let fb : FreeAlgebra R X := Quot.mk (Rel R X) b
         change liftAux R (F ∘ ι R) (fa + fb) = F (fa + fb)
@@ -410,8 +412,7 @@ instance [Nontrivial R] : Nontrivial (FreeAlgebra R X) :=
 section
 
 /-- The left-inverse of `algebraMap`. -/
--- Porting note: add noncomputable since liftFun is also noncomputable
-noncomputable def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
+def algebraMapInv : FreeAlgebra R X →ₐ[R] R :=
   lift R (0 : X → R)
 #align free_algebra.algebra_map_inv FreeAlgebra.algebraMapInv
 
feat: port Algebra/FreeAlgebra (#2905)

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Dependencies 8 + 455

456 files ported (98.3%)
189574 lines ported (98.4%)
Show graph

The unported dependencies are