field_theory.perfect_closure
⟷
Mathlib.FieldTheory.PerfectClosure
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -442,8 +442,8 @@ theorem mk_eq_iff (x y : ℕ × K) :
#align perfect_closure.eq_iff' PerfectClosure.mk_eq_iff
-/
-#print PerfectClosure.nat_cast /-
-theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
+#print PerfectClosure.natCast /-
+theorem natCast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
by
induction' n with n ih
· induction' x with x ih; · simp
@@ -453,26 +453,26 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
congr
skip
skip
- rw [← frobenius_nat_cast K p x]
+ rw [← frobenius_natCast K p x]
apply r.intro
-#align perfect_closure.nat_cast PerfectClosure.nat_cast
+#align perfect_closure.nat_cast PerfectClosure.natCast
-/
-#print PerfectClosure.int_cast /-
-theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
+#print PerfectClosure.intCast /-
+theorem intCast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
induction x <;> simp only [Int.cast_natCast, Int.cast_negSucc, nat_cast K p 0] <;> rfl
-#align perfect_closure.int_cast PerfectClosure.int_cast
+#align perfect_closure.int_cast PerfectClosure.intCast
-/
-#print PerfectClosure.nat_cast_eq_iff /-
-theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
+#print PerfectClosure.natCast_eq_iff /-
+theorem natCast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
constructor <;> intro H
· rw [nat_cast K p 0, nat_cast K p 0, eq_iff'] at H
cases' H with z H
- simpa only [zero_add, iterate_fixed (frobenius_nat_cast K p _)] using H
+ simpa only [zero_add, iterate_fixed (frobenius_natCast K p _)] using H
rw [nat_cast K p 0, nat_cast K p 0, H]
-#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iff
+#align perfect_closure.nat_cast_eq_iff PerfectClosure.natCast_eq_iff
-/
instance : CharP (PerfectClosure K p) p := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -460,7 +460,7 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
#print PerfectClosure.int_cast /-
theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
- induction x <;> simp only [Int.cast_ofNat, Int.cast_negSucc, nat_cast K p 0] <;> rfl
+ induction x <;> simp only [Int.cast_natCast, Int.cast_negSucc, nat_cast K p 0] <;> rfl
#align perfect_closure.int_cast PerfectClosure.int_cast
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Yury Kudryashov
-/
import Algebra.CharP.Basic
-import Algebra.Hom.Iterate
+import Algebra.GroupPower.IterateHom
import Algebra.Ring.Equiv
#align_import field_theory.perfect_closure from "leanprover-community/mathlib"@"c085f3044fe585c575e322bfab45b3633c48d820"
@@ -489,10 +489,10 @@ theorem frobenius_mk (x : ℕ × K) :
intro p; induction' p with p ih
case zero => apply r.sound; rw [(frobenius _ _).iterate_map_one, pow_zero]
case succ =>
- rw [pow_succ, ih]
+ rw [pow_succ', ih]
symm
apply r.sound
- simp only [pow_succ, (frobenius _ _).iterate_map_hMul]
+ simp only [pow_succ', (frobenius _ _).iterate_map_hMul]
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -348,7 +348,7 @@ theorem mk_zero_zero : mk K p (0, 0) = 0 :=
theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
induction' n with n ih <;> [rfl; rw [← ih]] <;> symm <;> apply Quot.sound <;>
have := r.intro n (0 : K) <;>
- rwa [frobenius_zero K p] at this
+ rwa [frobenius_zero K p] at this
#align perfect_closure.mk_zero PerfectClosure.mk_zero
-/
@@ -436,7 +436,7 @@ theorem mk_eq_iff (x y : ℕ × K) :
intro H
cases' x with m x
cases' y with n y
- cases' H with z H; dsimp only at H
+ cases' H with z H; dsimp only at H
rw [r.sound K p (n + z) m x _ rfl, r.sound K p (m + z) n y _ rfl, H]
rw [add_assoc, add_comm, add_comm z]
#align perfect_closure.eq_iff' PerfectClosure.mk_eq_iff
@@ -468,7 +468,7 @@ theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
constructor <;> intro H
- · rw [nat_cast K p 0, nat_cast K p 0, eq_iff'] at H
+ · rw [nat_cast K p 0, nat_cast K p 0, eq_iff'] at H
cases' H with z H
simpa only [zero_add, iterate_fixed (frobenius_nat_cast K p _)] using H
rw [nat_cast K p 0, nat_cast K p 0, H]
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -414,8 +414,8 @@ instance : CommRing (PerfectClosure K p) :=
simp only [RingHom.iterate_map_hMul, RingHom.iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
-#print PerfectClosure.eq_iff' /-
-theorem eq_iff' (x y : ℕ × K) :
+#print PerfectClosure.mk_eq_iff /-
+theorem mk_eq_iff (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 :=
by
constructor
@@ -439,7 +439,7 @@ theorem eq_iff' (x y : ℕ × K) :
cases' H with z H; dsimp only at H
rw [r.sound K p (n + z) m x _ rfl, r.sound K p (m + z) n y _ rfl, H]
rw [add_assoc, add_comm, add_comm z]
-#align perfect_closure.eq_iff' PerfectClosure.eq_iff'
+#align perfect_closure.eq_iff' PerfectClosure.mk_eq_iff
-/
#print PerfectClosure.nat_cast /-
@@ -518,7 +518,7 @@ end Ring
#print PerfectClosure.eq_iff /-
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
- (eq_iff' K p x y).trans
+ (mk_eq_iff K p x y).trans
⟨fun ⟨z, H⟩ => (frobenius_inj K p).iterate z <| by simpa only [add_comm, iterate_add] using H,
fun H => ⟨0, H⟩⟩
#align perfect_closure.eq_iff PerfectClosure.eq_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Yury Kudryashov
-/
-import Mathbin.Algebra.CharP.Basic
-import Mathbin.Algebra.Hom.Iterate
-import Mathbin.Algebra.Ring.Equiv
+import Algebra.CharP.Basic
+import Algebra.Hom.Iterate
+import Algebra.Ring.Equiv
#align_import field_theory.perfect_closure from "leanprover-community/mathlib"@"c085f3044fe585c575e322bfab45b3633c48d820"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -231,9 +231,9 @@ instance : Mul (PerfectClosure K p) :=
Quot.lift
(fun y : ℕ × K =>
mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 * (frobenius K p^[x.1]) y.2))
- (mul_aux_right K p x))
+ (hMul_aux_right K p x))
fun x1 x2 (H : R K p x1 x2) =>
- funext fun e => Quot.inductionOn e fun y => mul_aux_left K p x1 x2 y H⟩
+ funext fun e => Quot.inductionOn e fun y => hMul_aux_left K p x1 x2 y H⟩
#print PerfectClosure.mk_mul_mk /-
@[simp]
@@ -255,7 +255,7 @@ instance : CommMonoid (PerfectClosure K p) :=
Quot.inductionOn f fun ⟨n, y⟩ =>
Quot.inductionOn g fun ⟨s, z⟩ =>
congr_arg (Quot.mk _) <| by
- simp only [add_assoc, mul_assoc, RingHom.iterate_map_mul, ← iterate_add_apply,
+ simp only [add_assoc, mul_assoc, RingHom.iterate_map_hMul, ← iterate_add_apply,
add_comm, add_left_comm]
one := mk K p (0, 1)
one_mul := fun e =>
@@ -403,7 +403,7 @@ instance : CommRing (PerfectClosure K p) :=
Quot.inductionOn g fun ⟨s, z⟩ =>
show Quot.mk _ _ = Quot.mk _ _ by
simp only [add_assoc, add_comm, add_left_comm] <;> apply r.sound <;>
- simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
+ simp only [RingHom.iterate_map_hMul, RingHom.iterate_map_add, ← iterate_add_apply,
mul_add, add_comm, add_left_comm]
right_distrib := fun e f g =>
Quot.inductionOn e fun ⟨m, x⟩ =>
@@ -411,7 +411,7 @@ instance : CommRing (PerfectClosure K p) :=
Quot.inductionOn g fun ⟨s, z⟩ =>
show Quot.mk _ _ = Quot.mk _ _ by
simp only [add_assoc, add_comm _ s, add_left_comm _ s] <;> apply r.sound <;>
- simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
+ simp only [RingHom.iterate_map_hMul, RingHom.iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
#print PerfectClosure.eq_iff' /-
@@ -492,7 +492,7 @@ theorem frobenius_mk (x : ℕ × K) :
rw [pow_succ, ih]
symm
apply r.sound
- simp only [pow_succ, (frobenius _ _).iterate_map_mul]
+ simp only [pow_succ, (frobenius _ _).iterate_map_hMul]
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
-/
@@ -547,7 +547,7 @@ instance : Field (PerfectClosure K p) :=
(eq_iff _ _ _ _).2
(by
simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
- iterate_zero_apply, ← (frobenius _ p).iterate_map_mul] at this ⊢ <;>
+ iterate_zero_apply, ← (frobenius _ p).iterate_map_hMul] at this ⊢ <;>
rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one])
inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
@@ -591,7 +591,7 @@ def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
field map_mul' =>
rintro ⟨x⟩ ⟨y⟩
simp only [quot_mk_eq_mk, lift_on_mk, mk_mul_mk, RingHom.map_iterate_frobenius,
- RingHom.iterate_map_mul, RingHom.map_mul]
+ RingHom.iterate_map_hMul, RingHom.map_mul]
rw [iterate_add_apply, this _ _, add_comm, iterate_add_apply, this _ _]
field map_add' =>
rintro ⟨x⟩ ⟨y⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -44,12 +44,10 @@ def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
#align frobenius_equiv frobeniusEquiv
-/
-#print pthRoot /-
/-- `p`-th root of an element in a `perfect_ring` as a `ring_hom`. -/
def pthRoot [PerfectRing R p] : R →+* R :=
(frobeniusEquiv R p).symm
#align pth_root pthRoot
--/
end Defs
@@ -65,96 +63,68 @@ theorem coe_frobeniusEquiv : ⇑(frobeniusEquiv R p) = frobenius R p :=
#align coe_frobenius_equiv coe_frobeniusEquiv
-/
-#print coe_frobeniusEquiv_symm /-
@[simp]
theorem coe_frobeniusEquiv_symm : ⇑(frobeniusEquiv R p).symm = pthRoot R p :=
rfl
#align coe_frobenius_equiv_symm coe_frobeniusEquiv_symm
--/
-#print frobenius_pthRoot /-
@[simp]
theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
(frobeniusEquiv R p).apply_symm_apply x
#align frobenius_pth_root frobenius_pthRoot
--/
-#print pthRoot_pow_p /-
@[simp]
theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
frobenius_pthRoot x
#align pth_root_pow_p pthRoot_pow_p
--/
-#print pthRoot_frobenius /-
@[simp]
theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
(frobeniusEquiv R p).symm_apply_apply x
#align pth_root_frobenius pthRoot_frobenius
--/
-#print pthRoot_pow_p' /-
@[simp]
theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
pthRoot_frobenius x
#align pth_root_pow_p' pthRoot_pow_p'
--/
-#print leftInverse_pthRoot_frobenius /-
theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p) :=
pthRoot_frobenius
#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobenius
--/
-#print rightInverse_pthRoot_frobenius /-
theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (frobenius R p) :=
frobenius_pthRoot
#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobenius
--/
-#print commute_frobenius_pthRoot /-
theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R p) := fun x =>
(frobenius_pthRoot x).trans (pthRoot_frobenius x).symm
#align commute_frobenius_pth_root commute_frobenius_pthRoot
--/
-#print eq_pthRoot_iff /-
theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
(frobeniusEquiv R p).toEquiv.eq_symm_apply
#align eq_pth_root_iff eq_pthRoot_iff
--/
-#print pthRoot_eq_iff /-
theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
(frobeniusEquiv R p).toEquiv.symm_apply_eq
#align pth_root_eq_iff pthRoot_eq_iff
--/
-#print MonoidHom.map_pthRoot /-
theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
--/
-#print MonoidHom.map_iterate_pthRoot /-
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
Semiconj.iterate_right f.map_pthRoot n x
#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
--/
-#print RingHom.map_pthRoot /-
theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
g.toMonoidHom.map_pthRoot x
#align ring_hom.map_pth_root RingHom.map_pthRoot
--/
-#print RingHom.map_iterate_pthRoot /-
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
g.toMonoidHom.map_iterate_pthRoot x n
#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRoot
--/
variable (p)
@@ -594,14 +564,12 @@ instance : PerfectRing (PerfectClosure K p) p
induction_on e fun ⟨n, x⟩ => by simp only [lift_on_mk, frobenius_mk];
exact (Quot.sound <| r.intro _ _).symm
-#print PerfectClosure.eq_pthRoot /-
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
rcases x with ⟨m, x⟩
induction' m with m ih; · rfl
rw [iterate_succ_apply', ← ih] <;> rfl
#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRoot
--/
#print PerfectClosure.lift /-
/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Yury Kudryashov
-
-! This file was ported from Lean 3 source module field_theory.perfect_closure
-! leanprover-community/mathlib commit c085f3044fe585c575e322bfab45b3633c48d820
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.CharP.Basic
import Mathbin.Algebra.Hom.Iterate
import Mathbin.Algebra.Ring.Equiv
+#align_import field_theory.perfect_closure from "leanprover-community/mathlib"@"c085f3044fe585c575e322bfab45b3633c48d820"
+
/-!
# The perfect closure of a field
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -37,6 +37,7 @@ class PerfectRing : Type u where
#align perfect_ring PerfectRing
-/
+#print frobeniusEquiv /-
/-- Frobenius automorphism of a perfect ring. -/
def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
{ frobenius R p with
@@ -44,6 +45,7 @@ def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
left_inv := PerfectRing.pth_root_frobenius'
right_inv := PerfectRing.frobenius_pthRoot' }
#align frobenius_equiv frobeniusEquiv
+-/
#print pthRoot /-
/-- `p`-th root of an element in a `perfect_ring` as a `ring_hom`. -/
@@ -73,63 +75,89 @@ theorem coe_frobeniusEquiv_symm : ⇑(frobeniusEquiv R p).symm = pthRoot R p :=
#align coe_frobenius_equiv_symm coe_frobeniusEquiv_symm
-/
+#print frobenius_pthRoot /-
@[simp]
theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
(frobeniusEquiv R p).apply_symm_apply x
#align frobenius_pth_root frobenius_pthRoot
+-/
+#print pthRoot_pow_p /-
@[simp]
theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
frobenius_pthRoot x
#align pth_root_pow_p pthRoot_pow_p
+-/
+#print pthRoot_frobenius /-
@[simp]
theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
(frobeniusEquiv R p).symm_apply_apply x
#align pth_root_frobenius pthRoot_frobenius
+-/
+#print pthRoot_pow_p' /-
@[simp]
theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
pthRoot_frobenius x
#align pth_root_pow_p' pthRoot_pow_p'
+-/
+#print leftInverse_pthRoot_frobenius /-
theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p) :=
pthRoot_frobenius
#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobenius
+-/
+#print rightInverse_pthRoot_frobenius /-
theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (frobenius R p) :=
frobenius_pthRoot
#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobenius
+-/
+#print commute_frobenius_pthRoot /-
theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R p) := fun x =>
(frobenius_pthRoot x).trans (pthRoot_frobenius x).symm
#align commute_frobenius_pth_root commute_frobenius_pthRoot
+-/
+#print eq_pthRoot_iff /-
theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
(frobeniusEquiv R p).toEquiv.eq_symm_apply
#align eq_pth_root_iff eq_pthRoot_iff
+-/
+#print pthRoot_eq_iff /-
theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
(frobeniusEquiv R p).toEquiv.symm_apply_eq
#align pth_root_eq_iff pthRoot_eq_iff
+-/
+#print MonoidHom.map_pthRoot /-
theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
+-/
+#print MonoidHom.map_iterate_pthRoot /-
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
Semiconj.iterate_right f.map_pthRoot n x
#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
+-/
+#print RingHom.map_pthRoot /-
theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
g.toMonoidHom.map_pthRoot x
#align ring_hom.map_pth_root RingHom.map_pthRoot
+-/
+#print RingHom.map_iterate_pthRoot /-
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
g.toMonoidHom.map_iterate_pthRoot x n
#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRoot
+-/
variable (p)
@@ -145,16 +173,20 @@ section
variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
+#print PerfectClosure.R /-
/-- `perfect_closure K p` is the quotient by this relation. -/
@[mk_iff]
inductive PerfectClosure.R : ℕ × K → ℕ × K → Prop
| intro : ∀ n x, PerfectClosure.R (n, x) (n + 1, frobenius K p x)
#align perfect_closure.r PerfectClosure.R
+-/
+#print PerfectClosure /-
/-- The perfect closure is the smallest extension that makes frobenius surjective. -/
def PerfectClosure : Type u :=
Quot (PerfectClosure.R K p)
#align perfect_closure PerfectClosure
+-/
end
@@ -166,36 +198,46 @@ section Ring
variable [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
+#print PerfectClosure.mk /-
/-- Constructor for `perfect_closure`. -/
def mk (x : ℕ × K) : PerfectClosure K p :=
Quot.mk (R K p) x
#align perfect_closure.mk PerfectClosure.mk
+-/
+#print PerfectClosure.quot_mk_eq_mk /-
@[simp]
theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p) = mk K p x :=
rfl
#align perfect_closure.quot_mk_eq_mk PerfectClosure.quot_mk_eq_mk
+-/
variable {K p}
+#print PerfectClosure.liftOn /-
/-- Lift a function `ℕ × K → L` to a function on `perfect_closure K p`. -/
@[elab_as_elim]
def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
(hf : ∀ x y, R K p x y → f x = f y) : L :=
Quot.liftOn x f hf
#align perfect_closure.lift_on PerfectClosure.liftOn
+-/
+#print PerfectClosure.liftOn_mk /-
@[simp]
theorem liftOn_mk {L : Sort _} (f : ℕ × K → L) (hf : ∀ x y, R K p x y → f x = f y) (x : ℕ × K) :
(mk K p x).liftOn f hf = f x :=
rfl
#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mk
+-/
+#print PerfectClosure.induction_on /-
@[elab_as_elim]
theorem induction_on (x : PerfectClosure K p) {q : PerfectClosure K p → Prop}
(h : ∀ x, q (mk K p x)) : q x :=
Quot.inductionOn x h
#align perfect_closure.induction_on PerfectClosure.induction_on
+-/
variable (K p)
@@ -226,12 +268,14 @@ instance : Mul (PerfectClosure K p) :=
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => mul_aux_left K p x1 x2 y H⟩
+#print PerfectClosure.mk_mul_mk /-
@[simp]
theorem mk_mul_mk (x y : ℕ × K) :
mk K p x * mk K p y =
mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 * (frobenius K p^[x.1]) y.2) :=
rfl
#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mk
+-/
instance : CommMonoid (PerfectClosure K p) :=
{
@@ -260,9 +304,11 @@ instance : CommMonoid (PerfectClosure K p) :=
Quot.inductionOn f fun ⟨n, y⟩ =>
congr_arg (Quot.mk _) <| by simp only [add_comm, mul_comm] }
+#print PerfectClosure.one_def /-
theorem one_def : (1 : PerfectClosure K p) = mk K p (0, 1) :=
rfl
#align perfect_closure.one_def PerfectClosure.one_def
+-/
instance : Inhabited (PerfectClosure K p) :=
⟨1⟩
@@ -294,41 +340,52 @@ instance : Add (PerfectClosure K p) :=
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => add_aux_left K p x1 x2 y H⟩
+#print PerfectClosure.mk_add_mk /-
@[simp]
theorem mk_add_mk (x y : ℕ × K) :
mk K p x + mk K p y =
mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 + (frobenius K p^[x.1]) y.2) :=
rfl
#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mk
+-/
instance : Neg (PerfectClosure K p) :=
⟨Quot.lift (fun x : ℕ × K => mk K p (x.1, -x.2)) fun x y (H : R K p x y) =>
match x, y, H with
| _, _, r.intro n x => Quot.sound <| by rw [← frobenius_neg] <;> apply r.intro⟩
+#print PerfectClosure.neg_mk /-
@[simp]
theorem neg_mk (x : ℕ × K) : -mk K p x = mk K p (x.1, -x.2) :=
rfl
#align perfect_closure.neg_mk PerfectClosure.neg_mk
+-/
instance : Zero (PerfectClosure K p) :=
⟨mk K p (0, 0)⟩
+#print PerfectClosure.zero_def /-
theorem zero_def : (0 : PerfectClosure K p) = mk K p (0, 0) :=
rfl
#align perfect_closure.zero_def PerfectClosure.zero_def
+-/
+#print PerfectClosure.mk_zero_zero /-
@[simp]
theorem mk_zero_zero : mk K p (0, 0) = 0 :=
rfl
#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zero
+-/
+#print PerfectClosure.mk_zero /-
theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
induction' n with n ih <;> [rfl; rw [← ih]] <;> symm <;> apply Quot.sound <;>
have := r.intro n (0 : K) <;>
rwa [frobenius_zero K p] at this
#align perfect_closure.mk_zero PerfectClosure.mk_zero
+-/
+#print PerfectClosure.R.sound /-
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
subst H <;> induction' m with m ih <;> [simp only [zero_add, iterate_zero_apply];
@@ -336,6 +393,7 @@ theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
apply Quot.sound <;>
apply r.intro
#align perfect_closure.r.sound PerfectClosure.R.sound
+-/
instance : AddCommGroup (PerfectClosure K p) :=
{ (inferInstance : Add (PerfectClosure K p)),
@@ -389,6 +447,7 @@ instance : CommRing (PerfectClosure K p) :=
simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
+#print PerfectClosure.eq_iff' /-
theorem eq_iff' (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 :=
by
@@ -414,7 +473,9 @@ theorem eq_iff' (x y : ℕ × K) :
rw [r.sound K p (n + z) m x _ rfl, r.sound K p (m + z) n y _ rfl, H]
rw [add_assoc, add_comm, add_comm z]
#align perfect_closure.eq_iff' PerfectClosure.eq_iff'
+-/
+#print PerfectClosure.nat_cast /-
theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
by
induction' n with n ih
@@ -428,11 +489,15 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
rw [← frobenius_nat_cast K p x]
apply r.intro
#align perfect_closure.nat_cast PerfectClosure.nat_cast
+-/
+#print PerfectClosure.int_cast /-
theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
induction x <;> simp only [Int.cast_ofNat, Int.cast_negSucc, nat_cast K p 0] <;> rfl
#align perfect_closure.int_cast PerfectClosure.int_cast
+-/
+#print PerfectClosure.nat_cast_eq_iff /-
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
constructor <;> intro H
@@ -441,11 +506,13 @@ theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) =
simpa only [zero_add, iterate_fixed (frobenius_nat_cast K p _)] using H
rw [nat_cast K p 0, nat_cast K p 0, H]
#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iff
+-/
instance : CharP (PerfectClosure K p) p := by
constructor; intro x; rw [← CharP.cast_eq_zero_iff K]
rw [← Nat.cast_zero, nat_cast_eq_iff, Nat.cast_zero]
+#print PerfectClosure.frobenius_mk /-
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
mk _ _ (x.1, x.2 ^ p) :=
@@ -460,7 +527,9 @@ theorem frobenius_mk (x : ℕ × K) :
apply r.sound
simp only [pow_succ, (frobenius _ _).iterate_map_mul]
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
+-/
+#print PerfectClosure.of /-
/-- Embedding of `K` into `perfect_closure K p` -/
def of : K →+* PerfectClosure K p where
toFun x := mk _ _ (0, x)
@@ -469,19 +538,24 @@ def of : K →+* PerfectClosure K p where
map_zero' := rfl
map_add' x y := rfl
#align perfect_closure.of PerfectClosure.of
+-/
+#print PerfectClosure.of_apply /-
theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
rfl
#align perfect_closure.of_apply PerfectClosure.of_apply
+-/
end Ring
+#print PerfectClosure.eq_iff /-
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
(eq_iff' K p x y).trans
⟨fun ⟨z, H⟩ => (frobenius_inj K p).iterate z <| by simpa only [add_comm, iterate_add] using H,
fun H => ⟨0, H⟩⟩
#align perfect_closure.eq_iff PerfectClosure.eq_iff
+-/
section Field
@@ -523,13 +597,16 @@ instance : PerfectRing (PerfectClosure K p) p
induction_on e fun ⟨n, x⟩ => by simp only [lift_on_mk, frobenius_mk];
exact (Quot.sound <| r.intro _ _).symm
+#print PerfectClosure.eq_pthRoot /-
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
rcases x with ⟨m, x⟩
induction' m with m ih; · rfl
rw [iterate_succ_apply', ← ih] <;> rfl
#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRoot
+-/
+#print PerfectClosure.lift /-
/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
any homomorphism `K →+* L` can be lifted to `perfect_closure K p`. -/
def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
@@ -563,11 +640,13 @@ def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
simp only [RingHom.coe_mk, quot_mk_eq_mk, RingHom.comp_apply, lift_on_mk]
rw [eq_pth_root, RingHom.map_iterate_pthRoot]
#align perfect_closure.lift PerfectClosure.lift
+-/
end Field
end PerfectClosure
+#print PerfectRing.ofSurjective /-
/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced k] (p : ℕ)
[Fact p.Prime] [CharP k p] (h : Function.Surjective <| frobenius k p) : PerfectRing k p
@@ -576,4 +655,5 @@ noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced
frobenius_pthRoot' := Function.surjInv_eq h
pth_root_frobenius' x := frobenius_inj _ _ <| Function.surjInv_eq h _
#align perfect_ring.of_surjective PerfectRing.ofSurjective
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -324,15 +324,15 @@ theorem mk_zero_zero : mk K p (0, 0) = 0 :=
#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zero
theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
- induction' n with n ih <;> [rfl;rw [← ih]] <;> symm <;> apply Quot.sound <;>
+ induction' n with n ih <;> [rfl; rw [← ih]] <;> symm <;> apply Quot.sound <;>
have := r.intro n (0 : K) <;>
- rwa [frobenius_zero K p] at this
+ rwa [frobenius_zero K p] at this
#align perfect_closure.mk_zero PerfectClosure.mk_zero
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
- subst H <;> induction' m with m ih <;>
- [simp only [zero_add, iterate_zero_apply];rw [ih, Nat.succ_add, iterate_succ']] <;>
+ subst H <;> induction' m with m ih <;> [simp only [zero_add, iterate_zero_apply];
+ rw [ih, Nat.succ_add, iterate_succ']] <;>
apply Quot.sound <;>
apply r.intro
#align perfect_closure.r.sound PerfectClosure.R.sound
@@ -410,7 +410,7 @@ theorem eq_iff' (x y : ℕ × K) :
intro H
cases' x with m x
cases' y with n y
- cases' H with z H; dsimp only at H
+ cases' H with z H; dsimp only at H
rw [r.sound K p (n + z) m x _ rfl, r.sound K p (m + z) n y _ rfl, H]
rw [add_assoc, add_comm, add_comm z]
#align perfect_closure.eq_iff' PerfectClosure.eq_iff'
@@ -436,7 +436,7 @@ theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
constructor <;> intro H
- · rw [nat_cast K p 0, nat_cast K p 0, eq_iff'] at H
+ · rw [nat_cast K p 0, nat_cast K p 0, eq_iff'] at H
cases' H with z H
simpa only [zero_add, iterate_fixed (frobenius_nat_cast K p _)] using H
rw [nat_cast K p 0, nat_cast K p 0, H]
@@ -506,7 +506,7 @@ instance : Field (PerfectClosure K p) :=
(eq_iff _ _ _ _).2
(by
simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
- iterate_zero_apply, ← (frobenius _ p).iterate_map_mul] at this⊢ <;>
+ iterate_zero_apply, ← (frobenius _ p).iterate_map_mul] at this ⊢ <;>
rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one])
inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -37,12 +37,6 @@ class PerfectRing : Type u where
#align perfect_ring PerfectRing
-/
-/- warning: frobenius_equiv -> frobeniusEquiv is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_4 : PerfectRing.{u1} R _inst_1 p _inst_2 _inst_3], RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{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.{u1}) [_inst_1 : CommSemiring.{u1} R] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_4 : PerfectRing.{u1} R _inst_1 p _inst_2 _inst_3], RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align frobenius_equiv frobeniusEquivₓ'. -/
/-- Frobenius automorphism of a perfect ring. -/
def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
{ frobenius R p with
@@ -79,125 +73,59 @@ theorem coe_frobeniusEquiv_symm : ⇑(frobeniusEquiv R p).symm = pthRoot R p :=
#align coe_frobenius_equiv_symm coe_frobeniusEquiv_symm
-/
-/- warning: frobenius_pth_root -> frobenius_pthRoot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
-Case conversion may be inaccurate. Consider using '#align frobenius_pth_root frobenius_pthRootₓ'. -/
@[simp]
theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
(frobeniusEquiv R p).apply_symm_apply x
#align frobenius_pth_root frobenius_pthRoot
-/- warning: pth_root_pow_p -> pthRoot_pow_p is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (HPow.hPow.{u1, 0, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (instHPow.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) Nat (Monoid.Pow.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) _inst_1))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
-Case conversion may be inaccurate. Consider using '#align pth_root_pow_p pthRoot_pow_pₓ'. -/
@[simp]
theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
frobenius_pthRoot x
#align pth_root_pow_p pthRoot_pow_p
-/- warning: pth_root_frobenius -> pthRoot_frobenius is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
-Case conversion may be inaccurate. Consider using '#align pth_root_frobenius pthRoot_frobeniusₓ'. -/
@[simp]
theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
(frobeniusEquiv R p).symm_apply_apply x
#align pth_root_frobenius pthRoot_frobenius
-/- warning: pth_root_pow_p' -> pthRoot_pow_p' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
-Case conversion may be inaccurate. Consider using '#align pth_root_pow_p' pthRoot_pow_p'ₓ'. -/
@[simp]
theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
pthRoot_frobenius x
#align pth_root_pow_p' pthRoot_pow_p'
-/- warning: left_inverse_pth_root_frobenius -> leftInverse_pthRoot_frobenius is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
-Case conversion may be inaccurate. Consider using '#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobeniusₓ'. -/
theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p) :=
pthRoot_frobenius
#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobenius
-/- warning: right_inverse_pth_root_frobenius -> rightInverse_pthRoot_frobenius is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
-Case conversion may be inaccurate. Consider using '#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobeniusₓ'. -/
theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (frobenius R p) :=
frobenius_pthRoot
#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobenius
-/- warning: commute_frobenius_pth_root -> commute_frobenius_pthRoot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
-Case conversion may be inaccurate. Consider using '#align commute_frobenius_pth_root commute_frobenius_pthRootₓ'. -/
theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R p) := fun x =>
(frobenius_pthRoot x).trans (pthRoot_frobenius x).symm
#align commute_frobenius_pth_root commute_frobenius_pthRoot
-/- warning: eq_pth_root_iff -> eq_pthRoot_iff is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
-Case conversion may be inaccurate. Consider using '#align eq_pth_root_iff eq_pthRoot_iffₓ'. -/
theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
(frobeniusEquiv R p).toEquiv.eq_symm_apply
#align eq_pth_root_iff eq_pthRoot_iff
-/- warning: pth_root_eq_iff -> pthRoot_eq_iff is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
-Case conversion may be inaccurate. Consider using '#align pth_root_eq_iff pthRoot_eq_iffₓ'. -/
theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
(frobeniusEquiv R p).toEquiv.symm_apply_eq
#align pth_root_eq_iff pthRoot_eq_iff
-/- warning: monoid_hom.map_pth_root -> MonoidHom.map_pthRoot is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_pth_root MonoidHom.map_pthRootₓ'. -/
theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
-/- warning: monoid_hom.map_iterate_pth_root -> MonoidHom.map_iterate_pthRoot is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRootₓ'. -/
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
Semiconj.iterate_right f.map_pthRoot n x
#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
-/- warning: ring_hom.map_pth_root -> RingHom.map_pthRoot is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_hom.map_pth_root RingHom.map_pthRootₓ'. -/
theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
g.toMonoidHom.map_pthRoot x
#align ring_hom.map_pth_root RingHom.map_pthRoot
-/- warning: ring_hom.map_iterate_pth_root -> RingHom.map_iterate_pthRoot is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRootₓ'. -/
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
g.toMonoidHom.map_iterate_pthRoot x n
@@ -217,24 +145,12 @@ section
variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
-/- warning: perfect_closure.r -> PerfectClosure.R is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
-Case conversion may be inaccurate. Consider using '#align perfect_closure.r PerfectClosure.Rₓ'. -/
/-- `perfect_closure K p` is the quotient by this relation. -/
@[mk_iff]
inductive PerfectClosure.R : ℕ × K → ℕ × K → Prop
| intro : ∀ n x, PerfectClosure.R (n, x) (n + 1, frobenius K p x)
#align perfect_closure.r PerfectClosure.R
-/- warning: perfect_closure -> PerfectClosure is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Type.{u1}
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Type.{u1}
-Case conversion may be inaccurate. Consider using '#align perfect_closure PerfectClosureₓ'. -/
/-- The perfect closure is the smallest extension that makes frobenius surjective. -/
def PerfectClosure : Type u :=
Quot (PerfectClosure.R K p)
@@ -250,23 +166,11 @@ section Ring
variable [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
-/- warning: perfect_closure.mk -> PerfectClosure.mk is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
-Case conversion may be inaccurate. Consider using '#align perfect_closure.mk PerfectClosure.mkₓ'. -/
/-- Constructor for `perfect_closure`. -/
def mk (x : ℕ × K) : PerfectClosure K p :=
Quot.mk (R K p) x
#align perfect_closure.mk PerfectClosure.mk
-/- warning: perfect_closure.quot_mk_eq_mk -> PerfectClosure.quot_mk_eq_mk is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
-Case conversion may be inaccurate. Consider using '#align perfect_closure.quot_mk_eq_mk PerfectClosure.quot_mk_eq_mkₓ'. -/
@[simp]
theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p) = mk K p x :=
rfl
@@ -274,12 +178,6 @@ theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p)
variable {K p}
-/- warning: perfect_closure.lift_on -> PerfectClosure.liftOn is a dubious translation:
-lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
-but is expected to have type
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
-Case conversion may be inaccurate. Consider using '#align perfect_closure.lift_on PerfectClosure.liftOnₓ'. -/
/-- Lift a function `ℕ × K → L` to a function on `perfect_closure K p`. -/
@[elab_as_elim]
def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
@@ -287,24 +185,12 @@ def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
Quot.liftOn x f hf
#align perfect_closure.lift_on PerfectClosure.liftOn
-/- warning: perfect_closure.lift_on_mk -> PerfectClosure.liftOn_mk is a dubious translation:
-lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}} (f : (Prod.{0, u1} Nat K) -> L) (hf : forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) (x : Prod.{0, u1} Nat K), Eq.{succ u2} L (PerfectClosure.liftOn.{u1, u2} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
-but is expected to have type
- forall {K : Type.{u2}} [_inst_1 : CommRing.{u2} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u2} K (AddGroupWithOne.toAddMonoidWithOne.{u2} K (Ring.toAddGroupWithOne.{u2} K (CommRing.toRing.{u2} K _inst_1))) p] {L : Type.{u1}} (f : (Prod.{0, u2} Nat K) -> L) (hf : forall (x : Prod.{0, u2} Nat K) (y : Prod.{0, u2} Nat K), (PerfectClosure.R.{u2} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u1} L (f x) (f y))) (x : Prod.{0, u2} Nat K), Eq.{succ u1} L (PerfectClosure.liftOn.{u2, u1} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u2} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
-Case conversion may be inaccurate. Consider using '#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mkₓ'. -/
@[simp]
theorem liftOn_mk {L : Sort _} (f : ℕ × K → L) (hf : ∀ x y, R K p x y → f x = f y) (x : ℕ × K) :
(mk K p x).liftOn f hf = f x :=
rfl
#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mk
-/- warning: perfect_closure.induction_on -> PerfectClosure.induction_on is a dubious translation:
-lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
-but is expected to have type
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
-Case conversion may be inaccurate. Consider using '#align perfect_closure.induction_on PerfectClosure.induction_onₓ'. -/
@[elab_as_elim]
theorem induction_on (x : PerfectClosure K p) {q : PerfectClosure K p → Prop}
(h : ∀ x, q (mk K p x)) : q x :=
@@ -340,9 +226,6 @@ instance : Mul (PerfectClosure K p) :=
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => mul_aux_left K p x1 x2 y H⟩
-/- warning: perfect_closure.mk_mul_mk -> PerfectClosure.mk_mul_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mkₓ'. -/
@[simp]
theorem mk_mul_mk (x y : ℕ × K) :
mk K p x * mk K p y =
@@ -377,12 +260,6 @@ instance : CommMonoid (PerfectClosure K p) :=
Quot.inductionOn f fun ⟨n, y⟩ =>
congr_arg (Quot.mk _) <| by simp only [add_comm, mul_comm] }
-/- warning: perfect_closure.one_def -> PerfectClosure.one_def is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.one.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (MulOneClass.toHasOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toMulOneClass.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commMonoid.{u1} K _inst_1 p _inst_2 _inst_3))))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 1 (OfNat.mk.{u1} K 1 (One.one.{u1} K (AddMonoidWithOne.toOne.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.toOfNat1.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instCommMonoidPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 1 (One.toOfNat1.{u1} K (Semiring.toOne.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.one_def PerfectClosure.one_defₓ'. -/
theorem one_def : (1 : PerfectClosure K p) = mk K p (0, 1) :=
rfl
#align perfect_closure.one_def PerfectClosure.one_def
@@ -417,9 +294,6 @@ instance : Add (PerfectClosure K p) :=
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => add_aux_left K p x1 x2 y H⟩
-/- warning: perfect_closure.mk_add_mk -> PerfectClosure.mk_add_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mkₓ'. -/
@[simp]
theorem mk_add_mk (x y : ℕ × K) :
mk K p x + mk K p y =
@@ -432,12 +306,6 @@ instance : Neg (PerfectClosure K p) :=
match x, y, H with
| _, _, r.intro n x => Quot.sound <| by rw [← frobenius_neg] <;> apply r.intro⟩
-/- warning: perfect_closure.neg_mk -> PerfectClosure.neg_mk is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasNeg.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (SubNegMonoid.toHasNeg.{u1} K (AddGroup.toSubNegMonoid.{u1} K (AddGroupWithOne.toAddGroup.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instNegPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (Ring.toNeg.{u1} K (CommRing.toRing.{u1} K _inst_1)) (Prod.snd.{0, u1} Nat K x))))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.neg_mk PerfectClosure.neg_mkₓ'. -/
@[simp]
theorem neg_mk (x : ℕ × K) : -mk K p x = mk K p (x.1, -x.2) :=
rfl
@@ -446,42 +314,21 @@ theorem neg_mk (x : ℕ × K) : -mk K p x = mk K p (x.1, -x.2) :=
instance : Zero (PerfectClosure K p) :=
⟨mk K p (0, 0)⟩
-/- warning: perfect_closure.zero_def -> PerfectClosure.zero_def is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3)))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.zero_def PerfectClosure.zero_defₓ'. -/
theorem zero_def : (0 : PerfectClosure K p) = mk K p (0, 0) :=
rfl
#align perfect_closure.zero_def PerfectClosure.zero_def
-/- warning: perfect_closure.mk_zero_zero -> PerfectClosure.mk_zero_zero is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zeroₓ'. -/
@[simp]
theorem mk_zero_zero : mk K p (0, 0) = 0 :=
rfl
#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zero
-/- warning: perfect_closure.mk_zero -> PerfectClosure.mk_zero is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero PerfectClosure.mk_zeroₓ'. -/
theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
induction' n with n ih <;> [rfl;rw [← ih]] <;> symm <;> apply Quot.sound <;>
have := r.intro n (0 : K) <;>
rwa [frobenius_zero K p] at this
#align perfect_closure.mk_zero PerfectClosure.mk_zero
-/- warning: perfect_closure.r.sound -> PerfectClosure.R.sound is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align perfect_closure.r.sound PerfectClosure.R.soundₓ'. -/
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
subst H <;> induction' m with m ih <;>
@@ -542,9 +389,6 @@ instance : CommRing (PerfectClosure K p) :=
simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
-/- warning: perfect_closure.eq_iff' -> PerfectClosure.eq_iff' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff' PerfectClosure.eq_iff'ₓ'. -/
theorem eq_iff' (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 :=
by
@@ -571,12 +415,6 @@ theorem eq_iff' (x y : ℕ × K) :
rw [add_assoc, add_comm, add_comm z]
#align perfect_closure.eq_iff' PerfectClosure.eq_iff'
-/- warning: perfect_closure.nat_cast -> PerfectClosure.nat_cast is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (Nat.cast.{u1} K (Semiring.toNatCast.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) x)))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast PerfectClosure.nat_castₓ'. -/
theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
by
induction' n with n ih
@@ -591,22 +429,10 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
apply r.intro
#align perfect_closure.nat_cast PerfectClosure.nat_cast
-/- warning: perfect_closure.int_cast -> PerfectClosure.int_cast is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toHasIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int K (HasLiftT.mk.{1, succ u1} Int K (CoeTCₓ.coe.{1, succ u1} Int K (Int.castCoe.{u1} K (AddGroupWithOne.toHasIntCast.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) x)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (Int.cast.{u1} K (Ring.toIntCast.{u1} K (CommRing.toRing.{u1} K _inst_1)) x)))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.int_cast PerfectClosure.int_castₓ'. -/
theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
induction x <;> simp only [Int.cast_ofNat, Int.cast_negSucc, nat_cast K p 0] <;> rfl
#align perfect_closure.int_cast PerfectClosure.int_cast
-/- warning: perfect_closure.nat_cast_eq_iff -> PerfectClosure.nat_cast_eq_iff is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) y)) (Eq.{succ u1} K ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) y))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) y)) (Eq.{succ u1} K (Nat.cast.{u1} K (Semiring.toNatCast.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) x) (Nat.cast.{u1} K (Semiring.toNatCast.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) y))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iffₓ'. -/
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
constructor <;> intro H
@@ -620,9 +446,6 @@ instance : CharP (PerfectClosure K p) p := by
constructor; intro x; rw [← CharP.cast_eq_zero_iff K]
rw [← Nat.cast_zero, nat_cast_eq_iff, Nat.cast_zero]
-/- warning: perfect_closure.frobenius_mk -> PerfectClosure.frobenius_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mkₓ'. -/
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
mk _ _ (x.1, x.2 ^ p) :=
@@ -638,12 +461,6 @@ theorem frobenius_mk (x : ℕ × K) :
simp only [pow_succ, (frobenius _ _).iterate_map_mul]
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
-/- warning: perfect_closure.of -> PerfectClosure.of is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.of PerfectClosure.ofₓ'. -/
/-- Embedding of `K` into `perfect_closure K p` -/
def of : K →+* PerfectClosure K p where
toFun x := mk _ _ (0, x)
@@ -653,24 +470,12 @@ def of : K →+* PerfectClosure K p where
map_add' x y := rfl
#align perfect_closure.of PerfectClosure.of
-/- warning: perfect_closure.of_apply -> PerfectClosure.of_apply is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) x))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.of_apply PerfectClosure.of_applyₓ'. -/
theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
rfl
#align perfect_closure.of_apply PerfectClosure.of_apply
end Ring
-/- warning: perfect_closure.eq_iff -> PerfectClosure.eq_iff is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff PerfectClosure.eq_iffₓ'. -/
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
(eq_iff' K p x y).trans
@@ -718,9 +523,6 @@ instance : PerfectRing (PerfectClosure K p) p
induction_on e fun ⟨n, x⟩ => by simp only [lift_on_mk, frobenius_mk];
exact (Quot.sound <| r.intro _ _).symm
-/- warning: perfect_closure.eq_pth_root -> PerfectClosure.eq_pthRoot is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRootₓ'. -/
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
rcases x with ⟨m, x⟩
@@ -728,12 +530,6 @@ theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[
rw [iterate_succ_apply', ← ih] <;> rfl
#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRoot
-/- warning: perfect_closure.lift -> PerfectClosure.lift is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toDivisionRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u1, u2} K L (Semiring.toNonAssocSemiring.{u1} K (DivisionSemiring.toSemiring.{u1} K (Semifield.toDivisionSemiring.{u1} K (Field.toSemifield.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toDivisionSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
-Case conversion may be inaccurate. Consider using '#align perfect_closure.lift PerfectClosure.liftₓ'. -/
/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
any homomorphism `K →+* L` can be lifted to `perfect_closure K p`. -/
def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
@@ -772,12 +568,6 @@ end Field
end PerfectClosure
-/- warning: perfect_ring.of_surjective -> PerfectRing.ofSurjective is a dubious translation:
-lean 3 declaration is
- forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))))) (Monoid.Pow.{u1} k (Ring.toMonoid.{u1} k (CommRing.toRing.{u1} k _inst_1)))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1)))) p], (Function.Surjective.{succ u1, succ u1} k k (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (fun (_x : RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) => k -> k) (RingHom.hasCoeToFun.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
-but is expected to have type
- forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
-Case conversion may be inaccurate. Consider using '#align perfect_ring.of_surjective PerfectRing.ofSurjectiveₓ'. -/
/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced k] (p : ℕ)
[Fact p.Prime] [CharP k p] (h : Function.Surjective <| frobenius k p) : PerfectRing k p
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -580,10 +580,8 @@ Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_ca
theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
by
induction' n with n ih
- · induction' x with x ih
- · simp
- rw [Nat.cast_succ, Nat.cast_succ, ih]
- rfl
+ · induction' x with x ih; · simp
+ rw [Nat.cast_succ, Nat.cast_succ, ih]; rfl
rw [ih]; apply Quot.sound
conv =>
congr
@@ -629,12 +627,9 @@ theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
mk _ _ (x.1, x.2 ^ p) :=
by
- simp only [frobenius_def]
- cases' x with n x
- dsimp only
+ simp only [frobenius_def]; cases' x with n x; dsimp only
suffices ∀ p' : ℕ, mk K p (n, x) ^ p' = mk K p (n, x ^ p') by apply this
- intro p
- induction' p with p ih
+ intro p; induction' p with p ih
case zero => apply r.sound; rw [(frobenius _ _).iterate_map_one, pow_zero]
case succ =>
rw [pow_succ, ih]
@@ -691,10 +686,7 @@ instance : Inv (PerfectClosure K p) :=
⟨Quot.lift (fun x : ℕ × K => Quot.mk (R K p) (x.1, x.2⁻¹)) fun x y (H : R K p x y) =>
match x, y, H with
| _, _, r.intro n x =>
- Quot.sound <| by
- simp only [frobenius_def]
- rw [← inv_pow]
- apply r.intro⟩
+ Quot.sound <| by simp only [frobenius_def]; rw [← inv_pow]; apply r.intro⟩
instance : Field (PerfectClosure K p) :=
{ (inferInstance : Inv (PerfectClosure K p)),
@@ -720,12 +712,10 @@ instance : PerfectRing (PerfectClosure K p) p
match x, y, H with
| _, _, r.intro n x => Quot.sound (R.intro _ _)
frobenius_pthRoot' e :=
- induction_on e fun ⟨n, x⟩ => by
- simp only [lift_on_mk, frobenius_mk]
+ induction_on e fun ⟨n, x⟩ => by simp only [lift_on_mk, frobenius_mk];
exact (Quot.sound <| r.intro _ _).symm
pth_root_frobenius' e :=
- induction_on e fun ⟨n, x⟩ => by
- simp only [lift_on_mk, frobenius_mk]
+ induction_on e fun ⟨n, x⟩ => by simp only [lift_on_mk, frobenius_mk];
exact (Quot.sound <| r.intro _ _).symm
/- warning: perfect_closure.eq_pth_root -> PerfectClosure.eq_pthRoot is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -174,20 +174,14 @@ theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
#align pth_root_eq_iff pthRoot_eq_iff
/- warning: monoid_hom.map_pth_root -> MonoidHom.map_pthRoot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.map_pth_root MonoidHom.map_pthRootₓ'. -/
theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
/- warning: monoid_hom.map_iterate_pth_root -> MonoidHom.map_iterate_pthRoot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f (Nat.iterate.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
+<too large>
Case conversion may be inaccurate. Consider using '#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRootₓ'. -/
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
@@ -195,20 +189,14 @@ theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
/- warning: ring_hom.map_pth_root -> RingHom.map_pthRoot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
+<too large>
Case conversion may be inaccurate. Consider using '#align ring_hom.map_pth_root RingHom.map_pthRootₓ'. -/
theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
g.toMonoidHom.map_pthRoot x
#align ring_hom.map_pth_root RingHom.map_pthRoot
/- warning: ring_hom.map_iterate_pth_root -> RingHom.map_iterate_pthRoot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g (Nat.iterate.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
+<too large>
Case conversion may be inaccurate. Consider using '#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRootₓ'. -/
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
@@ -333,7 +321,6 @@ private theorem mul_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
Quot.sound <| by
rw [← iterate_succ_apply, iterate_succ', iterate_succ', ← frobenius_mul, Nat.succ_add] <;>
apply r.intro
-#align perfect_closure.mul_aux_left perfect_closure.mul_aux_left
private theorem mul_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
mk K p (x.1 + y1.1, (frobenius K p^[y1.1]) x.2 * (frobenius K p^[x.1]) y1.2) =
@@ -342,7 +329,6 @@ private theorem mul_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
| _, _, r.intro n y =>
Quot.sound <| by
rw [← iterate_succ_apply, iterate_succ', iterate_succ', ← frobenius_mul] <;> apply r.intro
-#align perfect_closure.mul_aux_right perfect_closure.mul_aux_right
instance : Mul (PerfectClosure K p) :=
⟨Quot.lift
@@ -355,10 +341,7 @@ instance : Mul (PerfectClosure K p) :=
funext fun e => Quot.inductionOn e fun y => mul_aux_left K p x1 x2 y H⟩
/- warning: perfect_closure.mk_mul_mk -> PerfectClosure.mk_mul_mk is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasMul.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instMulPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mkₓ'. -/
@[simp]
theorem mk_mul_mk (x y : ℕ × K) :
@@ -415,7 +398,6 @@ private theorem add_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
Quot.sound <| by
rw [← iterate_succ_apply, iterate_succ', iterate_succ', ← frobenius_add, Nat.succ_add] <;>
apply r.intro
-#align perfect_closure.add_aux_left perfect_closure.add_aux_left
private theorem add_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
mk K p (x.1 + y1.1, (frobenius K p^[y1.1]) x.2 + (frobenius K p^[x.1]) y1.2) =
@@ -424,7 +406,6 @@ private theorem add_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
| _, _, r.intro n y =>
Quot.sound <| by
rw [← iterate_succ_apply, iterate_succ', iterate_succ', ← frobenius_add] <;> apply r.intro
-#align perfect_closure.add_aux_right perfect_closure.add_aux_right
instance : Add (PerfectClosure K p) :=
⟨Quot.lift
@@ -437,10 +418,7 @@ instance : Add (PerfectClosure K p) :=
funext fun e => Quot.inductionOn e fun y => add_aux_left K p x1 x2 y H⟩
/- warning: perfect_closure.mk_add_mk -> PerfectClosure.mk_add_mk is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasAdd.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toHasAdd.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instAddPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toAdd.{u1} K (NonUnitalNonAssocSemiring.toDistrib.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mkₓ'. -/
@[simp]
theorem mk_add_mk (x y : ℕ × K) :
@@ -502,10 +480,7 @@ theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
#align perfect_closure.mk_zero PerfectClosure.mk_zero
/- warning: perfect_closure.r.sound -> PerfectClosure.R.sound is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m n) y)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) m n) y)))
+<too large>
Case conversion may be inaccurate. Consider using '#align perfect_closure.r.sound PerfectClosure.R.soundₓ'. -/
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
@@ -568,10 +543,7 @@ instance : CommRing (PerfectClosure K p) :=
add_mul, add_comm, add_left_comm] }
/- warning: perfect_closure.eq_iff' -> PerfectClosure.eq_iff' is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
+<too large>
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff' PerfectClosure.eq_iff'ₓ'. -/
theorem eq_iff' (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 :=
@@ -651,10 +623,7 @@ instance : CharP (PerfectClosure K p) p := by
rw [← Nat.cast_zero, nat_cast_eq_iff, Nat.cast_zero]
/- warning: perfect_closure.frobenius_mk -> PerfectClosure.frobenius_mk is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.charP.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (Ring.toMonoid.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Prod.snd.{0, u1} Nat K x) p)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
+<too large>
Case conversion may be inaccurate. Consider using '#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mkₓ'. -/
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
@@ -760,10 +729,7 @@ instance : PerfectRing (PerfectClosure K p) p
exact (Quot.sound <| r.intro _ _).symm
/- warning: perfect_closure.eq_pth_root -> PerfectClosure.eq_pthRoot is a dubious translation:
-lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) => (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.charP.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.perfectRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
-but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
+<too large>
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRootₓ'. -/
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -496,7 +496,7 @@ but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero PerfectClosure.mk_zeroₓ'. -/
theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
- induction' n with n ih <;> [rfl, rw [← ih]] <;> symm <;> apply Quot.sound <;>
+ induction' n with n ih <;> [rfl;rw [← ih]] <;> symm <;> apply Quot.sound <;>
have := r.intro n (0 : K) <;>
rwa [frobenius_zero K p] at this
#align perfect_closure.mk_zero PerfectClosure.mk_zero
@@ -509,8 +509,8 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align perfect_closure.r.sound PerfectClosure.R.soundₓ'. -/
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
- subst H <;> induction' m with m ih <;> [simp only [zero_add, iterate_zero_apply],
- rw [ih, Nat.succ_add, iterate_succ']] <;>
+ subst H <;> induction' m with m ih <;>
+ [simp only [zero_add, iterate_zero_apply];rw [ih, Nat.succ_add, iterate_succ']] <;>
apply Quot.sound <;>
apply r.intro
#align perfect_closure.r.sound PerfectClosure.R.sound
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -83,7 +83,7 @@ theorem coe_frobeniusEquiv_symm : ⇑(frobeniusEquiv R p).symm = pthRoot R p :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
Case conversion may be inaccurate. Consider using '#align frobenius_pth_root frobenius_pthRootₓ'. -/
@[simp]
theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
@@ -94,7 +94,7 @@ theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (HPow.hPow.{u1, 0, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (instHPow.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) Nat (Monoid.Pow.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) _inst_1))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (HPow.hPow.{u1, 0, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (instHPow.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) Nat (Monoid.Pow.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) _inst_1))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
Case conversion may be inaccurate. Consider using '#align pth_root_pow_p pthRoot_pow_pₓ'. -/
@[simp]
theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
@@ -105,7 +105,7 @@ theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
Case conversion may be inaccurate. Consider using '#align pth_root_frobenius pthRoot_frobeniusₓ'. -/
@[simp]
theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
@@ -116,7 +116,7 @@ theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
Case conversion may be inaccurate. Consider using '#align pth_root_pow_p' pthRoot_pow_p'ₓ'. -/
@[simp]
theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
@@ -127,7 +127,7 @@ theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
Case conversion may be inaccurate. Consider using '#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobeniusₓ'. -/
theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p) :=
pthRoot_frobenius
@@ -137,7 +137,7 @@ theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
Case conversion may be inaccurate. Consider using '#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobeniusₓ'. -/
theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (frobenius R p) :=
frobenius_pthRoot
@@ -147,7 +147,7 @@ theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (fr
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
Case conversion may be inaccurate. Consider using '#align commute_frobenius_pth_root commute_frobenius_pthRootₓ'. -/
theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R p) := fun x =>
(frobenius_pthRoot x).trans (pthRoot_frobenius x).symm
@@ -157,7 +157,7 @@ theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
Case conversion may be inaccurate. Consider using '#align eq_pth_root_iff eq_pthRoot_iffₓ'. -/
theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
(frobeniusEquiv R p).toEquiv.eq_symm_apply
@@ -167,7 +167,7 @@ theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
Case conversion may be inaccurate. Consider using '#align pth_root_eq_iff pthRoot_eq_iffₓ'. -/
theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
(frobeniusEquiv R p).toEquiv.symm_apply_eq
@@ -177,7 +177,7 @@ theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f x))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
Case conversion may be inaccurate. Consider using '#align monoid_hom.map_pth_root MonoidHom.map_pthRootₓ'. -/
theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
@@ -187,7 +187,7 @@ theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f (Nat.iterate.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f x))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
Case conversion may be inaccurate. Consider using '#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRootₓ'. -/
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
@@ -198,7 +198,7 @@ theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g x))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
Case conversion may be inaccurate. Consider using '#align ring_hom.map_pth_root RingHom.map_pthRootₓ'. -/
theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
g.toMonoidHom.map_pthRoot x
@@ -208,7 +208,7 @@ theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g (Nat.iterate.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g x))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
Case conversion may be inaccurate. Consider using '#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRootₓ'. -/
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
@@ -358,7 +358,7 @@ instance : Mul (PerfectClosure K p) :=
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasMul.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instMulPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instMulPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mkₓ'. -/
@[simp]
theorem mk_mul_mk (x y : ℕ × K) :
@@ -440,7 +440,7 @@ instance : Add (PerfectClosure K p) :=
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasAdd.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toHasAdd.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instAddPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toAdd.{u1} K (NonUnitalNonAssocSemiring.toDistrib.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instAddPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toAdd.{u1} K (NonUnitalNonAssocSemiring.toDistrib.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mkₓ'. -/
@[simp]
theorem mk_add_mk (x y : ℕ × K) :
@@ -505,7 +505,7 @@ theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m n) y)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) m n) y)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) m n) y)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.r.sound PerfectClosure.R.soundₓ'. -/
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
@@ -571,7 +571,7 @@ instance : CommRing (PerfectClosure K p) :=
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff' PerfectClosure.eq_iff'ₓ'. -/
theorem eq_iff' (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 :=
@@ -654,7 +654,7 @@ instance : CharP (PerfectClosure K p) p := by
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.charP.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (Ring.toMonoid.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Prod.snd.{0, u1} Nat K x) p)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mkₓ'. -/
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
@@ -693,7 +693,7 @@ def of : K →+* PerfectClosure K p where
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) x))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
Case conversion may be inaccurate. Consider using '#align perfect_closure.of_apply PerfectClosure.of_applyₓ'. -/
theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
rfl
@@ -705,7 +705,7 @@ end Ring
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff PerfectClosure.eq_iffₓ'. -/
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
@@ -763,7 +763,7 @@ instance : PerfectRing (PerfectClosure K p) p
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) => (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.charP.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.perfectRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRootₓ'. -/
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
@@ -820,7 +820,7 @@ end PerfectClosure
lean 3 declaration is
forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))))) (Monoid.Pow.{u1} k (Ring.toMonoid.{u1} k (CommRing.toRing.{u1} k _inst_1)))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1)))) p], (Function.Surjective.{succ u1, succ u1} k k (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (fun (_x : RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) => k -> k) (RingHom.hasCoeToFun.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
but is expected to have type
- forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
+ forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
Case conversion may be inaccurate. Consider using '#align perfect_ring.of_surjective PerfectRing.ofSurjectiveₓ'. -/
/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced k] (p : ℕ)
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -398,7 +398,7 @@ instance : CommMonoid (PerfectClosure K p) :=
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.one.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (MulOneClass.toHasOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toMulOneClass.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commMonoid.{u1} K _inst_1 p _inst_2 _inst_3))))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 1 (OfNat.mk.{u1} K 1 (One.one.{u1} K (AddMonoidWithOne.toOne.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.toOfNat1.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instCommMonoidPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 1 (One.toOfNat1.{u1} K (NonAssocRing.toOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.toOfNat1.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instCommMonoidPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 1 (One.toOfNat1.{u1} K (Semiring.toOne.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.one_def PerfectClosure.one_defₓ'. -/
theorem one_def : (1 : PerfectClosure K p) = mk K p (0, 1) :=
rfl
@@ -603,7 +603,7 @@ theorem eq_iff' (x y : ℕ × K) :
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) x)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (Nat.cast.{u1} K (Semiring.toNatCast.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) x)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast PerfectClosure.nat_castₓ'. -/
theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
by
@@ -635,7 +635,7 @@ theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) y)) (Eq.{succ u1} K ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) y))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) y)) (Eq.{succ u1} K (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) x) (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) y))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) y)) (Eq.{succ u1} K (Nat.cast.{u1} K (Semiring.toNatCast.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) x) (Nat.cast.{u1} K (Semiring.toNatCast.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) y))
Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iffₓ'. -/
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
@@ -654,7 +654,7 @@ instance : CharP (PerfectClosure K p) p := by
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.charP.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (Ring.toMonoid.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Prod.snd.{0, u1} Nat K x) p)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mkₓ'. -/
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
@@ -678,7 +678,7 @@ theorem frobenius_mk (x : ℕ × K) :
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.of PerfectClosure.ofₓ'. -/
/-- Embedding of `K` into `perfect_closure K p` -/
def of : K →+* PerfectClosure K p where
@@ -693,7 +693,7 @@ def of : K →+* PerfectClosure K p where
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) x))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
Case conversion may be inaccurate. Consider using '#align perfect_closure.of_apply PerfectClosure.of_applyₓ'. -/
theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
rfl
@@ -705,7 +705,7 @@ end Ring
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff PerfectClosure.eq_iffₓ'. -/
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
@@ -763,7 +763,7 @@ instance : PerfectRing (PerfectClosure K p) p
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) => (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.charP.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.perfectRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRootₓ'. -/
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
@@ -776,7 +776,7 @@ theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[
lean 3 declaration is
forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toDivisionRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
but is expected to have type
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instDivisionRingPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u1, u2} K L (Semiring.toNonAssocSemiring.{u1} K (DivisionSemiring.toSemiring.{u1} K (Semifield.toDivisionSemiring.{u1} K (Field.toSemifield.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toDivisionSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.lift PerfectClosure.liftₓ'. -/
/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
any homomorphism `K →+* L` can be lifted to `perfect_closure K p`. -/
@@ -820,7 +820,7 @@ end PerfectClosure
lean 3 declaration is
forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))))) (Monoid.Pow.{u1} k (Ring.toMonoid.{u1} k (CommRing.toRing.{u1} k _inst_1)))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1)))) p], (Function.Surjective.{succ u1, succ u1} k k (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (fun (_x : RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) => k -> k) (RingHom.hasCoeToFun.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
but is expected to have type
- forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (CommRing.toRing.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
+ forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
Case conversion may be inaccurate. Consider using '#align perfect_ring.of_surjective PerfectRing.ofSurjectiveₓ'. -/
/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced k] (p : ℕ)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -231,7 +231,7 @@ variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
/- warning: perfect_closure.r -> PerfectClosure.R is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
Case conversion may be inaccurate. Consider using '#align perfect_closure.r PerfectClosure.Rₓ'. -/
@@ -243,7 +243,7 @@ inductive PerfectClosure.R : ℕ × K → ℕ × K → Prop
/- warning: perfect_closure -> PerfectClosure is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Type.{u1}
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Type.{u1}
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Type.{u1}
Case conversion may be inaccurate. Consider using '#align perfect_closure PerfectClosureₓ'. -/
@@ -264,7 +264,7 @@ variable [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
/- warning: perfect_closure.mk -> PerfectClosure.mk is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk PerfectClosure.mkₓ'. -/
@@ -275,7 +275,7 @@ def mk (x : ℕ × K) : PerfectClosure K p :=
/- warning: perfect_closure.quot_mk_eq_mk -> PerfectClosure.quot_mk_eq_mk is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
Case conversion may be inaccurate. Consider using '#align perfect_closure.quot_mk_eq_mk PerfectClosure.quot_mk_eq_mkₓ'. -/
@@ -288,7 +288,7 @@ variable {K p}
/- warning: perfect_closure.lift_on -> PerfectClosure.liftOn is a dubious translation:
lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
but is expected to have type
forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
Case conversion may be inaccurate. Consider using '#align perfect_closure.lift_on PerfectClosure.liftOnₓ'. -/
@@ -301,7 +301,7 @@ def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
/- warning: perfect_closure.lift_on_mk -> PerfectClosure.liftOn_mk is a dubious translation:
lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}} (f : (Prod.{0, u1} Nat K) -> L) (hf : forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) (x : Prod.{0, u1} Nat K), Eq.{succ u2} L (PerfectClosure.liftOn.{u1, u2} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}} (f : (Prod.{0, u1} Nat K) -> L) (hf : forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) (x : Prod.{0, u1} Nat K), Eq.{succ u2} L (PerfectClosure.liftOn.{u1, u2} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
but is expected to have type
forall {K : Type.{u2}} [_inst_1 : CommRing.{u2} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u2} K (AddGroupWithOne.toAddMonoidWithOne.{u2} K (Ring.toAddGroupWithOne.{u2} K (CommRing.toRing.{u2} K _inst_1))) p] {L : Type.{u1}} (f : (Prod.{0, u2} Nat K) -> L) (hf : forall (x : Prod.{0, u2} Nat K) (y : Prod.{0, u2} Nat K), (PerfectClosure.R.{u2} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u1} L (f x) (f y))) (x : Prod.{0, u2} Nat K), Eq.{succ u1} L (PerfectClosure.liftOn.{u2, u1} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u2} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
Case conversion may be inaccurate. Consider using '#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mkₓ'. -/
@@ -313,7 +313,7 @@ theorem liftOn_mk {L : Sort _} (f : ℕ × K → L) (hf : ∀ x y, R K p x y →
/- warning: perfect_closure.induction_on -> PerfectClosure.induction_on is a dubious translation:
lean 3 declaration is
- forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
but is expected to have type
forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
Case conversion may be inaccurate. Consider using '#align perfect_closure.induction_on PerfectClosure.induction_onₓ'. -/
@@ -356,7 +356,7 @@ instance : Mul (PerfectClosure K p) :=
/- warning: perfect_closure.mk_mul_mk -> PerfectClosure.mk_mul_mk is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasMul.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasMul.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instMulPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mkₓ'. -/
@@ -396,7 +396,7 @@ instance : CommMonoid (PerfectClosure K p) :=
/- warning: perfect_closure.one_def -> PerfectClosure.one_def is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.one.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (MulOneClass.toHasOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toMulOneClass.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commMonoid.{u1} K _inst_1 p _inst_2 _inst_3))))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 1 (OfNat.mk.{u1} K 1 (One.one.{u1} K (AddMonoidWithOne.toOne.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.one.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (MulOneClass.toHasOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toMulOneClass.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commMonoid.{u1} K _inst_1 p _inst_2 _inst_3))))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 1 (OfNat.mk.{u1} K 1 (One.one.{u1} K (AddMonoidWithOne.toOne.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.toOfNat1.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instCommMonoidPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 1 (One.toOfNat1.{u1} K (NonAssocRing.toOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.one_def PerfectClosure.one_defₓ'. -/
@@ -438,7 +438,7 @@ instance : Add (PerfectClosure K p) :=
/- warning: perfect_closure.mk_add_mk -> PerfectClosure.mk_add_mk is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasAdd.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toHasAdd.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasAdd.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toHasAdd.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instAddPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toAdd.{u1} K (NonUnitalNonAssocSemiring.toDistrib.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mkₓ'. -/
@@ -456,7 +456,7 @@ instance : Neg (PerfectClosure K p) :=
/- warning: perfect_closure.neg_mk -> PerfectClosure.neg_mk is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasNeg.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (SubNegMonoid.toHasNeg.{u1} K (AddGroup.toSubNegMonoid.{u1} K (AddGroupWithOne.toAddGroup.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasNeg.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (SubNegMonoid.toHasNeg.{u1} K (AddGroup.toSubNegMonoid.{u1} K (AddGroupWithOne.toAddGroup.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instNegPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (Ring.toNeg.{u1} K (CommRing.toRing.{u1} K _inst_1)) (Prod.snd.{0, u1} Nat K x))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.neg_mk PerfectClosure.neg_mkₓ'. -/
@@ -470,7 +470,7 @@ instance : Zero (PerfectClosure K p) :=
/- warning: perfect_closure.zero_def -> PerfectClosure.zero_def is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3)))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3)))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.zero_def PerfectClosure.zero_defₓ'. -/
@@ -480,7 +480,7 @@ theorem zero_def : (0 : PerfectClosure K p) = mk K p (0, 0) :=
/- warning: perfect_closure.mk_zero_zero -> PerfectClosure.mk_zero_zero is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zeroₓ'. -/
@@ -491,7 +491,7 @@ theorem mk_zero_zero : mk K p (0, 0) = 0 :=
/- warning: perfect_closure.mk_zero -> PerfectClosure.mk_zero is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero PerfectClosure.mk_zeroₓ'. -/
@@ -503,7 +503,7 @@ theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
/- warning: perfect_closure.r.sound -> PerfectClosure.R.sound is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m n) y)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m n) y)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) m n) y)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.r.sound PerfectClosure.R.soundₓ'. -/
@@ -569,7 +569,7 @@ instance : CommRing (PerfectClosure K p) :=
/- warning: perfect_closure.eq_iff' -> PerfectClosure.eq_iff' is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff' PerfectClosure.eq_iff'ₓ'. -/
@@ -601,7 +601,7 @@ theorem eq_iff' (x y : ℕ × K) :
/- warning: perfect_closure.nat_cast -> PerfectClosure.nat_cast is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) x)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast PerfectClosure.nat_castₓ'. -/
@@ -623,7 +623,7 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
/- warning: perfect_closure.int_cast -> PerfectClosure.int_cast is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toHasIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int K (HasLiftT.mk.{1, succ u1} Int K (CoeTCₓ.coe.{1, succ u1} Int K (Int.castCoe.{u1} K (AddGroupWithOne.toHasIntCast.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) x)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toHasIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int K (HasLiftT.mk.{1, succ u1} Int K (CoeTCₓ.coe.{1, succ u1} Int K (Int.castCoe.{u1} K (AddGroupWithOne.toHasIntCast.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) x)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (Int.cast.{u1} K (Ring.toIntCast.{u1} K (CommRing.toRing.{u1} K _inst_1)) x)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.int_cast PerfectClosure.int_castₓ'. -/
@@ -633,7 +633,7 @@ theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
/- warning: perfect_closure.nat_cast_eq_iff -> PerfectClosure.nat_cast_eq_iff is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) y)) (Eq.{succ u1} K ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) y))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toAddCommGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) y)) (Eq.{succ u1} K ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) y))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) y)) (Eq.{succ u1} K (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) x) (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) y))
Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iffₓ'. -/
@@ -652,7 +652,7 @@ instance : CharP (PerfectClosure K p) p := by
/- warning: perfect_closure.frobenius_mk -> PerfectClosure.frobenius_mk is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.charP.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (Ring.toMonoid.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Prod.snd.{0, u1} Nat K x) p)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.charP.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (Ring.toMonoid.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Prod.snd.{0, u1} Nat K x) p)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mkₓ'. -/
@@ -676,7 +676,7 @@ theorem frobenius_mk (x : ℕ × K) :
/- warning: perfect_closure.of -> PerfectClosure.of is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
Case conversion may be inaccurate. Consider using '#align perfect_closure.of PerfectClosure.ofₓ'. -/
@@ -691,7 +691,7 @@ def of : K →+* PerfectClosure K p where
/- warning: perfect_closure.of_apply -> PerfectClosure.of_apply is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) x))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) x))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
Case conversion may be inaccurate. Consider using '#align perfect_closure.of_apply PerfectClosure.of_applyₓ'. -/
@@ -703,7 +703,7 @@ end Ring
/- warning: perfect_closure.eq_iff -> PerfectClosure.eq_iff is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff PerfectClosure.eq_iffₓ'. -/
@@ -761,7 +761,7 @@ instance : PerfectRing (PerfectClosure K p) p
/- warning: perfect_closure.eq_pth_root -> PerfectClosure.eq_pthRoot is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) => (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.charP.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.perfectRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) => (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.charP.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.perfectRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRootₓ'. -/
@@ -774,7 +774,7 @@ theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[
/- warning: perfect_closure.lift -> PerfectClosure.lift is a dubious translation:
lean 3 declaration is
- forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toDivisionRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (AddCommGroupWithOne.toAddGroupWithOne.{u1} K (Ring.toAddCommGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toDivisionRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
but is expected to have type
forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instDivisionRingPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
Case conversion may be inaccurate. Consider using '#align perfect_closure.lift PerfectClosure.liftₓ'. -/
@@ -818,7 +818,7 @@ end PerfectClosure
/- warning: perfect_ring.of_surjective -> PerfectRing.ofSurjective is a dubious translation:
lean 3 declaration is
- forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))))) (Monoid.Pow.{u1} k (Ring.toMonoid.{u1} k (CommRing.toRing.{u1} k _inst_1)))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (NonAssocRing.toAddGroupWithOne.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))) p], (Function.Surjective.{succ u1, succ u1} k k (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (fun (_x : RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) => k -> k) (RingHom.hasCoeToFun.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
+ forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))))) (Monoid.Pow.{u1} k (Ring.toMonoid.{u1} k (CommRing.toRing.{u1} k _inst_1)))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1)))) p], (Function.Surjective.{succ u1, succ u1} k k (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (fun (_x : RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) => k -> k) (RingHom.hasCoeToFun.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
but is expected to have type
forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (CommRing.toRing.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
Case conversion may be inaccurate. Consider using '#align perfect_ring.of_surjective PerfectRing.ofSurjectiveₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -229,20 +229,28 @@ section
variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
-#print PerfectClosure.R /-
+/- warning: perfect_closure.r -> PerfectClosure.R is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], (Prod.{0, u1} Nat K) -> (Prod.{0, u1} Nat K) -> Prop
+Case conversion may be inaccurate. Consider using '#align perfect_closure.r PerfectClosure.Rₓ'. -/
/-- `perfect_closure K p` is the quotient by this relation. -/
@[mk_iff]
inductive PerfectClosure.R : ℕ × K → ℕ × K → Prop
| intro : ∀ n x, PerfectClosure.R (n, x) (n + 1, frobenius K p x)
#align perfect_closure.r PerfectClosure.R
--/
-#print PerfectClosure /-
+/- warning: perfect_closure -> PerfectClosure is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Type.{u1}
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Type.{u1}
+Case conversion may be inaccurate. Consider using '#align perfect_closure PerfectClosureₓ'. -/
/-- The perfect closure is the smallest extension that makes frobenius surjective. -/
def PerfectClosure : Type u :=
Quot (PerfectClosure.R K p)
#align perfect_closure PerfectClosure
--/
end
@@ -254,30 +262,42 @@ section Ring
variable [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
-#print PerfectClosure.mk /-
+/- warning: perfect_closure.mk -> PerfectClosure.mk is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], (Prod.{0, u1} Nat K) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)
+Case conversion may be inaccurate. Consider using '#align perfect_closure.mk PerfectClosure.mkₓ'. -/
/-- Constructor for `perfect_closure`. -/
def mk (x : ℕ × K) : PerfectClosure K p :=
Quot.mk (R K p) x
#align perfect_closure.mk PerfectClosure.mk
--/
-#print PerfectClosure.quot_mk_eq_mk /-
+/- warning: perfect_closure.quot_mk_eq_mk -> PerfectClosure.quot_mk_eq_mk is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)
+Case conversion may be inaccurate. Consider using '#align perfect_closure.quot_mk_eq_mk PerfectClosure.quot_mk_eq_mkₓ'. -/
@[simp]
theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p) = mk K p x :=
rfl
#align perfect_closure.quot_mk_eq_mk PerfectClosure.quot_mk_eq_mk
--/
variable {K p}
-#print PerfectClosure.liftOn /-
+/- warning: perfect_closure.lift_on -> PerfectClosure.liftOn is a dubious translation:
+lean 3 declaration is
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
+but is expected to have type
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] {L : Type.{u2}}, (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (forall (f : (Prod.{0, u1} Nat K) -> L), (forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) -> L)
+Case conversion may be inaccurate. Consider using '#align perfect_closure.lift_on PerfectClosure.liftOnₓ'. -/
/-- Lift a function `ℕ × K → L` to a function on `perfect_closure K p`. -/
@[elab_as_elim]
def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
(hf : ∀ x y, R K p x y → f x = f y) : L :=
Quot.liftOn x f hf
#align perfect_closure.lift_on PerfectClosure.liftOn
--/
/- warning: perfect_closure.lift_on_mk -> PerfectClosure.liftOn_mk is a dubious translation:
lean 3 declaration is
@@ -291,13 +311,17 @@ theorem liftOn_mk {L : Sort _} (f : ℕ × K → L) (hf : ∀ x y, R K p x y →
rfl
#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mk
-#print PerfectClosure.induction_on /-
+/- warning: perfect_closure.induction_on -> PerfectClosure.induction_on is a dubious translation:
+lean 3 declaration is
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
+but is expected to have type
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) {q : (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> Prop}, (forall (x : Prod.{0, u1} Nat K), q (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) -> (q x)
+Case conversion may be inaccurate. Consider using '#align perfect_closure.induction_on PerfectClosure.induction_onₓ'. -/
@[elab_as_elim]
theorem induction_on (x : PerfectClosure K p) {q : PerfectClosure K p → Prop}
(h : ∀ x, q (mk K p x)) : q x :=
Quot.inductionOn x h
#align perfect_closure.induction_on PerfectClosure.induction_on
--/
variable (K p)
mathlib commit https://github.com/leanprover-community/mathlib/commit/57e09a1296bfb4330ddf6624f1028ba186117d82
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Yury Kudryashov
! This file was ported from Lean 3 source module field_theory.perfect_closure
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit c085f3044fe585c575e322bfab45b3633c48d820
! 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.Ring.Equiv
/-!
# The perfect closure of a field
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/290a7ba01fbcab1b64757bdaa270d28f4dcede35
@@ -25,13 +25,21 @@ section Defs
variable (R : Type u) [CommSemiring R] (p : ℕ) [Fact p.Prime] [CharP R p]
+#print PerfectRing /-
/-- A perfect ring is a ring of characteristic p that has p-th root. -/
class PerfectRing : Type u where
pthRoot' : R → R
frobenius_pthRoot' : ∀ x, frobenius R p (pth_root' x) = x
pth_root_frobenius' : ∀ x, pth_root' (frobenius R p x) = x
#align perfect_ring PerfectRing
+-/
+/- warning: frobenius_equiv -> frobeniusEquiv is a dubious translation:
+lean 3 declaration is
+ forall (R : Type.{u1}) [_inst_1 : CommSemiring.{u1} R] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_4 : PerfectRing.{u1} R _inst_1 p _inst_2 _inst_3], RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{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.{u1}) [_inst_1 : CommSemiring.{u1} R] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_4 : PerfectRing.{u1} R _inst_1 p _inst_2 _inst_3], RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align frobenius_equiv frobeniusEquivₓ'. -/
/-- Frobenius automorphism of a perfect ring. -/
def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
{ frobenius R p with
@@ -40,10 +48,12 @@ def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
right_inv := PerfectRing.frobenius_pthRoot' }
#align frobenius_equiv frobeniusEquiv
+#print pthRoot /-
/-- `p`-th root of an element in a `perfect_ring` as a `ring_hom`. -/
def pthRoot [PerfectRing R p] : R →+* R :=
(frobeniusEquiv R p).symm
#align pth_root pthRoot
+-/
end Defs
@@ -52,69 +62,151 @@ section
variable {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] (f : R →* S) (g : R →+* S)
{p : ℕ} [Fact p.Prime] [CharP R p] [PerfectRing R p] [CharP S p] [PerfectRing S p]
+#print coe_frobeniusEquiv /-
@[simp]
theorem coe_frobeniusEquiv : ⇑(frobeniusEquiv R p) = frobenius R p :=
rfl
#align coe_frobenius_equiv coe_frobeniusEquiv
+-/
+#print coe_frobeniusEquiv_symm /-
@[simp]
theorem coe_frobeniusEquiv_symm : ⇑(frobeniusEquiv R p).symm = pthRoot R p :=
rfl
#align coe_frobenius_equiv_symm coe_frobeniusEquiv_symm
+-/
+/- warning: frobenius_pth_root -> frobenius_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) x
+Case conversion may be inaccurate. Consider using '#align frobenius_pth_root frobenius_pthRootₓ'. -/
@[simp]
theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
(frobeniusEquiv R p).apply_symm_apply x
#align frobenius_pth_root frobenius_pthRoot
+/- warning: pth_root_pow_p -> pthRoot_pow_p is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (HPow.hPow.{u1, 0, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (instHPow.{u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) Nat (Monoid.Pow.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) _inst_1))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) p) x
+Case conversion may be inaccurate. Consider using '#align pth_root_pow_p pthRoot_pow_pₓ'. -/
@[simp]
theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
frobenius_pthRoot x
#align pth_root_pow_p pthRoot_pow_p
+/- warning: pth_root_frobenius -> pthRoot_frobenius is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x)) x
+Case conversion may be inaccurate. Consider using '#align pth_root_frobenius pthRoot_frobeniusₓ'. -/
@[simp]
theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
(frobeniusEquiv R p).symm_apply_apply x
#align pth_root_frobenius pthRoot_frobenius
+/- warning: pth_root_pow_p' -> pthRoot_pow_p' is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) x p)) x
+Case conversion may be inaccurate. Consider using '#align pth_root_pow_p' pthRoot_pow_p'ₓ'. -/
@[simp]
theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
pthRoot_frobenius x
#align pth_root_pow_p' pthRoot_pow_p'
+/- warning: left_inverse_pth_root_frobenius -> leftInverse_pthRoot_frobenius is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.LeftInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
+Case conversion may be inaccurate. Consider using '#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobeniusₓ'. -/
theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p) :=
pthRoot_frobenius
#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobenius
+/- warning: right_inverse_pth_root_frobenius -> rightInverse_pthRoot_frobenius is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.RightInverse.{succ u1, succ u1} R R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4))
+Case conversion may be inaccurate. Consider using '#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobeniusₓ'. -/
theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (frobenius R p) :=
frobenius_pthRoot
#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobenius
+/- warning: commute_frobenius_pth_root -> commute_frobenius_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4], Function.Commute.{u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5))
+Case conversion may be inaccurate. Consider using '#align commute_frobenius_pth_root commute_frobenius_pthRootₓ'. -/
theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R p) := fun x =>
(frobenius_pthRoot x).trans (pthRoot_frobenius x).symm
#align commute_frobenius_pth_root commute_frobenius_pthRoot
+/- warning: eq_pth_root_iff -> eq_pthRoot_iff is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) y)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) x) y)
+Case conversion may be inaccurate. Consider using '#align eq_pth_root_iff eq_pthRoot_iffₓ'. -/
theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
(frobeniusEquiv R p).toEquiv.eq_symm_apply
#align eq_pth_root_iff eq_pthRoot_iff
+/- warning: pth_root_eq_iff -> pthRoot_eq_iff is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] {x : R} {y : R}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x) y) (Eq.{succ u1} R x (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (frobenius.{u1} R _inst_1 p _inst_3 _inst_4) y))
+Case conversion may be inaccurate. Consider using '#align pth_root_eq_iff pthRoot_eq_iffₓ'. -/
theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
(frobeniusEquiv R p).toEquiv.symm_apply_eq
#align pth_root_eq_iff pthRoot_eq_iff
+/- warning: monoid_hom.map_pth_root -> MonoidHom.map_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.map_pth_root MonoidHom.map_pthRootₓ'. -/
theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
+/- warning: monoid_hom.map_iterate_pth_root -> MonoidHom.map_iterate_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f (Nat.iterate.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (fun (_x : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) => R -> S) (MonoidHom.hasCoeToFun.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) f x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (f : MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulOneClass.toMul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) f x))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRootₓ'. -/
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
Semiconj.iterate_right f.map_pthRoot n x
#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
+/- warning: ring_hom.map_pth_root -> RingHom.map_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
+Case conversion may be inaccurate. Consider using '#align ring_hom.map_pth_root RingHom.map_pthRootₓ'. -/
theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
g.toMonoidHom.map_pthRoot x
#align ring_hom.map_pth_root RingHom.map_pthRoot
+/- warning: ring_hom.map_iterate_pth_root -> RingHom.map_iterate_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g (Nat.iterate.{succ u1} R (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (fun (_x : RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) => R -> R) (RingHom.hasCoeToFun.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => S -> S) (RingHom.hasCoeToFun.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) g x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] {S : Type.{u2}} [_inst_2 : CommSemiring.{u2} S] (g : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) {p : Nat} [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) p] [_inst_5 : PerfectRing.{u1} R _inst_1 p _inst_3 _inst_4] [_inst_6 : CharP.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) p] [_inst_7 : PerfectRing.{u2} S _inst_2 p _inst_3 _inst_6] (x : R) (n : Nat), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g (Nat.iterate.{succ u1} R (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => R) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (RingHom.instRingHomClassRingHom.{u1, u1} R R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) (pthRoot.{u1} R _inst_1 p _inst_3 _inst_4 _inst_5)) n x)) (Nat.iterate.{succ u2} S (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u2} S S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) (pthRoot.{u2} S _inst_2 p _inst_3 _inst_6 _inst_7)) n (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))))) g x))
+Case conversion may be inaccurate. Consider using '#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRootₓ'. -/
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
g.toMonoidHom.map_iterate_pthRoot x n
@@ -122,9 +214,11 @@ theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
variable (p)
+#print injective_pow_p /-
theorem injective_pow_p {x y : R} (hxy : x ^ p = y ^ p) : x = y :=
leftInverse_pthRoot_frobenius.Injective hxy
#align injective_pow_p injective_pow_p
+-/
end
@@ -132,16 +226,20 @@ section
variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
+#print PerfectClosure.R /-
/-- `perfect_closure K p` is the quotient by this relation. -/
@[mk_iff]
inductive PerfectClosure.R : ℕ × K → ℕ × K → Prop
| intro : ∀ n x, PerfectClosure.R (n, x) (n + 1, frobenius K p x)
#align perfect_closure.r PerfectClosure.R
+-/
+#print PerfectClosure /-
/-- The perfect closure is the smallest extension that makes frobenius surjective. -/
def PerfectClosure : Type u :=
Quot (PerfectClosure.R K p)
#align perfect_closure PerfectClosure
+-/
end
@@ -153,36 +251,50 @@ section Ring
variable [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
+#print PerfectClosure.mk /-
/-- Constructor for `perfect_closure`. -/
def mk (x : ℕ × K) : PerfectClosure K p :=
Quot.mk (R K p) x
#align perfect_closure.mk PerfectClosure.mk
+-/
+#print PerfectClosure.quot_mk_eq_mk /-
@[simp]
theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p) = mk K p x :=
rfl
#align perfect_closure.quot_mk_eq_mk PerfectClosure.quot_mk_eq_mk
+-/
variable {K p}
+#print PerfectClosure.liftOn /-
/-- Lift a function `ℕ × K → L` to a function on `perfect_closure K p`. -/
@[elab_as_elim]
def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
(hf : ∀ x y, R K p x y → f x = f y) : L :=
Quot.liftOn x f hf
#align perfect_closure.lift_on PerfectClosure.liftOn
+-/
+/- warning: perfect_closure.lift_on_mk -> PerfectClosure.liftOn_mk is a dubious translation:
+lean 3 declaration is
+ forall {K : Type.{u1}} [_inst_1 : CommRing.{u1} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] {L : Type.{u2}} (f : (Prod.{0, u1} Nat K) -> L) (hf : forall (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), (PerfectClosure.R.{u1} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u2} L (f x) (f y))) (x : Prod.{0, u1} Nat K), Eq.{succ u2} L (PerfectClosure.liftOn.{u1, u2} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
+but is expected to have type
+ forall {K : Type.{u2}} [_inst_1 : CommRing.{u2} K] {p : Nat} [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u2} K (AddGroupWithOne.toAddMonoidWithOne.{u2} K (Ring.toAddGroupWithOne.{u2} K (CommRing.toRing.{u2} K _inst_1))) p] {L : Type.{u1}} (f : (Prod.{0, u2} Nat K) -> L) (hf : forall (x : Prod.{0, u2} Nat K) (y : Prod.{0, u2} Nat K), (PerfectClosure.R.{u2} K _inst_1 p _inst_2 _inst_3 x y) -> (Eq.{succ u1} L (f x) (f y))) (x : Prod.{0, u2} Nat K), Eq.{succ u1} L (PerfectClosure.liftOn.{u2, u1} K _inst_1 p _inst_2 _inst_3 L (PerfectClosure.mk.{u2} K _inst_1 p _inst_2 _inst_3 x) f hf) (f x)
+Case conversion may be inaccurate. Consider using '#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mkₓ'. -/
@[simp]
theorem liftOn_mk {L : Sort _} (f : ℕ × K → L) (hf : ∀ x y, R K p x y → f x = f y) (x : ℕ × K) :
(mk K p x).liftOn f hf = f x :=
rfl
#align perfect_closure.lift_on_mk PerfectClosure.liftOn_mk
+#print PerfectClosure.induction_on /-
@[elab_as_elim]
theorem induction_on (x : PerfectClosure K p) {q : PerfectClosure K p → Prop}
(h : ∀ x, q (mk K p x)) : q x :=
Quot.inductionOn x h
#align perfect_closure.induction_on PerfectClosure.induction_on
+-/
variable (K p)
@@ -215,6 +327,12 @@ instance : Mul (PerfectClosure K p) :=
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => mul_aux_left K p x1 x2 y H⟩
+/- warning: perfect_closure.mk_mul_mk -> PerfectClosure.mk_mul_mk is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasMul.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (Distrib.toHasMul.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HMul.hMul.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instMulPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HMul.hMul.{u1, u1, u1} K K K (instHMul.{u1} K (NonUnitalNonAssocRing.toMul.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mkₓ'. -/
@[simp]
theorem mk_mul_mk (x y : ℕ × K) :
mk K p x * mk K p y =
@@ -249,6 +367,12 @@ instance : CommMonoid (PerfectClosure K p) :=
Quot.inductionOn f fun ⟨n, y⟩ =>
congr_arg (Quot.mk _) <| by simp only [add_comm, mul_comm] }
+/- warning: perfect_closure.one_def -> PerfectClosure.one_def is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.one.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (MulOneClass.toHasOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toMulOneClass.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commMonoid.{u1} K _inst_1 p _inst_2 _inst_3))))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 1 (OfNat.mk.{u1} K 1 (One.one.{u1} K (AddMonoidWithOne.toOne.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 1 (One.toOfNat1.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Monoid.toOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommMonoid.toMonoid.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instCommMonoidPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 1 (One.toOfNat1.{u1} K (NonAssocRing.toOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.one_def PerfectClosure.one_defₓ'. -/
theorem one_def : (1 : PerfectClosure K p) = mk K p (0, 1) :=
rfl
#align perfect_closure.one_def PerfectClosure.one_def
@@ -285,6 +409,12 @@ instance : Add (PerfectClosure K p) :=
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => add_aux_left K p x1 x2 y H⟩
+/- warning: perfect_closure.mk_add_mk -> PerfectClosure.mk_add_mk is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasAdd.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toHasAdd.{u1} K (Ring.toDistrib.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HAdd.hAdd.{u1, u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (instHAdd.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instAddPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) (Prod.fst.{0, u1} Nat K y)) (HAdd.hAdd.{u1, u1, u1} K K K (instHAdd.{u1} K (Distrib.toAdd.{u1} K (NonUnitalNonAssocSemiring.toDistrib.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mkₓ'. -/
@[simp]
theorem mk_add_mk (x y : ℕ × K) :
mk K p x + mk K p y =
@@ -297,6 +427,12 @@ instance : Neg (PerfectClosure K p) :=
match x, y, H with
| _, _, r.intro n x => Quot.sound <| by rw [← frobenius_neg] <;> apply r.intro⟩
+/- warning: perfect_closure.neg_mk -> PerfectClosure.neg_mk is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasNeg.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (SubNegMonoid.toHasNeg.{u1} K (AddGroup.toSubNegMonoid.{u1} K (AddGroupWithOne.toAddGroup.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Neg.neg.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instNegPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (Neg.neg.{u1} K (Ring.toNeg.{u1} K (CommRing.toRing.{u1} K _inst_1)) (Prod.snd.{0, u1} Nat K x))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.neg_mk PerfectClosure.neg_mkₓ'. -/
@[simp]
theorem neg_mk (x : ℕ × K) : -mk K p x = mk K p (x.1, -x.2) :=
rfl
@@ -305,21 +441,45 @@ theorem neg_mk (x : ℕ × K) : -mk K p x = mk K p (x.1, -x.2) :=
instance : Zero (PerfectClosure K p) :=
⟨mk K p (0, 0)⟩
+/- warning: perfect_closure.zero_def -> PerfectClosure.zero_def is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3)))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3))) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.zero_def PerfectClosure.zero_defₓ'. -/
theorem zero_def : (0 : PerfectClosure K p) = mk K p (0, 0) :=
rfl
#align perfect_closure.zero_def PerfectClosure.zero_def
+/- warning: perfect_closure.mk_zero_zero -> PerfectClosure.mk_zero_zero is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zeroₓ'. -/
@[simp]
theorem mk_zero_zero : mk K p (0, 0) = 0 :=
rfl
#align perfect_closure.mk_zero_zero PerfectClosure.mk_zero_zero
+/- warning: perfect_closure.mk_zero -> PerfectClosure.mk_zero is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (OfNat.mk.{u1} K 0 (Zero.zero.{u1} K (MulZeroClass.toHasZero.{u1} K (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (OfNat.mk.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.zero.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.hasZero.{u1} K _inst_1 p _inst_2 _inst_3))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (OfNat.ofNat.{u1} K 0 (Zero.toOfNat0.{u1} K (CommMonoidWithZero.toZero.{u1} K (CommSemiring.toCommMonoidWithZero.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (OfNat.ofNat.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) 0 (Zero.toOfNat0.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.instZeroPerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.mk_zero PerfectClosure.mk_zeroₓ'. -/
theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
induction' n with n ih <;> [rfl, rw [← ih]] <;> symm <;> apply Quot.sound <;>
have := r.intro n (0 : K) <;>
rwa [frobenius_zero K p] at this
#align perfect_closure.mk_zero PerfectClosure.mk_zero
+/- warning: perfect_closure.r.sound -> PerfectClosure.R.sound is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) m n) y)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (m : Nat) (n : Nat) (x : K) (y : K), (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) m x) y) -> (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) m n) y)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.r.sound PerfectClosure.R.soundₓ'. -/
theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
subst H <;> induction' m with m ih <;> [simp only [zero_add, iterate_zero_apply],
@@ -380,6 +540,12 @@ instance : CommRing (PerfectClosure K p) :=
simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
+/- warning: perfect_closure.eq_iff' -> PerfectClosure.eq_iff' is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 y)) (Exists.{1} Nat (fun (z : Nat) => Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K y) z) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_2 _inst_3)) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Prod.fst.{0, u1} Nat K x) z) (Prod.snd.{0, u1} Nat K y))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff' PerfectClosure.eq_iff'ₓ'. -/
theorem eq_iff' (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 :=
by
@@ -406,6 +572,12 @@ theorem eq_iff' (x y : ℕ × K) :
rw [add_assoc, add_comm, add_comm z]
#align perfect_closure.eq_iff' PerfectClosure.eq_iff'
+/- warning: perfect_closure.nat_cast -> PerfectClosure.nat_cast is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (n : Nat) (x : Nat), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K n (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) x)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast PerfectClosure.nat_castₓ'. -/
theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
by
induction' n with n ih
@@ -422,10 +594,22 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) :=
apply r.intro
#align perfect_closure.nat_cast PerfectClosure.nat_cast
+/- warning: perfect_closure.int_cast -> PerfectClosure.int_cast is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Int (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toHasIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int K (HasLiftT.mk.{1, succ u1} Int K (CoeTCₓ.coe.{1, succ u1} Int K (Int.castCoe.{u1} K (AddGroupWithOne.toHasIntCast.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))))) x)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Int), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Int.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toIntCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) (Int.cast.{u1} K (Ring.toIntCast.{u1} K (CommRing.toRing.{u1} K _inst_1)) x)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.int_cast PerfectClosure.int_castₓ'. -/
theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
induction x <;> simp only [Int.cast_ofNat, Int.cast_negSucc, nat_cast K p 0] <;> rfl
#align perfect_closure.int_cast PerfectClosure.int_cast
+/- warning: perfect_closure.nat_cast_eq_iff -> PerfectClosure.nat_cast_eq_iff is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (HasLiftT.mk.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CoeTCₓ.coe.{1, succ u1} Nat (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.castCoe.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddMonoidWithOne.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (AddGroupWithOne.toAddMonoidWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toAddGroupWithOne.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) y)) (Eq.{succ u1} K ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) x) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat K (HasLiftT.mk.{1, succ u1} Nat K (CoeTCₓ.coe.{1, succ u1} Nat K (Nat.castCoe.{u1} K (AddMonoidWithOne.toNatCast.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))))))) y))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Nat) (y : Nat), Iff (Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) x) (Nat.cast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNatCast.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) y)) (Eq.{succ u1} K (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) x) (Nat.cast.{u1} K (NonAssocRing.toNatCast.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) y))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iffₓ'. -/
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y :=
by
constructor <;> intro H
@@ -439,6 +623,12 @@ instance : CharP (PerfectClosure K p) p := by
constructor; intro x; rw [← CharP.cast_eq_zero_iff K]
rw [← Nat.cast_zero, nat_cast_eq_iff, Nat.cast_zero]
+/- warning: perfect_closure.frobenius_mk -> PerfectClosure.frobenius_mk is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.charP.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (Ring.toMonoid.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (Prod.snd.{0, u1} Nat K x) p)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (frobenius.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toCommSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 x)) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (Prod.fst.{0, u1} Nat K x) (HPow.hPow.{u1, 0, u1} K Nat K (instHPow.{u1, 0} K Nat (Monoid.Pow.{u1} K (MonoidWithZero.toMonoid.{u1} K (Semiring.toMonoidWithZero.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1)))))) (Prod.snd.{0, u1} Nat K x) p)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mkₓ'. -/
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
mk _ _ (x.1, x.2 ^ p) :=
@@ -457,6 +647,12 @@ theorem frobenius_mk (x : ℕ × K) :
simp only [pow_succ, (frobenius _ _).iterate_map_mul]
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
+/- warning: perfect_closure.of -> PerfectClosure.of is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p], RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.of PerfectClosure.ofₓ'. -/
/-- Embedding of `K` into `perfect_closure K p` -/
def of : K →+* PerfectClosure K p where
toFun x := mk _ _ (0, x)
@@ -466,12 +662,24 @@ def of : K →+* PerfectClosure K p where
map_add' x y := rfl
#align perfect_closure.of PerfectClosure.of
+/- warning: perfect_closure.of_apply -> PerfectClosure.of_apply is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : K), Eq.{succ u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) x))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : K), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K _inst_1 p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K _inst_1 p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K _inst_1 p _inst_2 _inst_3) x) (PerfectClosure.mk.{u1} K _inst_1 p _inst_2 _inst_3 (Prod.mk.{0, u1} Nat K (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) x))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.of_apply PerfectClosure.of_applyₓ'. -/
theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
rfl
#align perfect_closure.of_apply PerfectClosure.of_apply
end Ring
+/- warning: perfect_closure.eq_iff -> PerfectClosure.eq_iff is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (fun (_x : RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) => K -> K) (RingHom.hasCoeToFun.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : CommRing.{u1} K] [_inst_2 : IsDomain.{u1} K (Ring.toSemiring.{u1} K (CommRing.toRing.{u1} K _inst_1))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (CommRing.toRing.{u1} K _inst_1))) p] (x : Prod.{0, u1} Nat K) (y : Prod.{0, u1} Nat K), Iff (Eq.{succ u1} (Quot.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4)) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) x) (Quot.mk.{succ u1} (Prod.{0, u1} Nat K) (PerfectClosure.R.{u1} K _inst_1 p _inst_3 _inst_4) y)) (Eq.{succ u1} K (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K y) (Prod.snd.{0, u1} Nat K x)) (Nat.iterate.{succ u1} K (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => K) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1)))) K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} K K (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))) (Semiring.toNonAssocSemiring.{u1} K (CommSemiring.toSemiring.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1))))))) (frobenius.{u1} K (CommRing.toCommSemiring.{u1} K _inst_1) p _inst_3 _inst_4)) (Prod.fst.{0, u1} Nat K x) (Prod.snd.{0, u1} Nat K y)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_iff PerfectClosure.eq_iffₓ'. -/
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
(eq_iff' K p x y).trans
@@ -524,6 +732,12 @@ instance : PerfectRing (PerfectClosure K p) p
simp only [lift_on_mk, frobenius_mk]
exact (Quot.sound <| r.intro _ _).symm
+/- warning: perfect_closure.eq_pth_root -> PerfectClosure.eq_pthRoot is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (fun (_x : RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) => (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3)))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.charP.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.perfectRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (fun (_x : RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) => K -> (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)) (RingHom.hasCoeToFun.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (x : Prod.{0, u1} Nat K), Eq.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.mk.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3 x) (Nat.iterate.{succ u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (fun (_x : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))))) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (RingHom.instRingHomClassRingHom.{u1, u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommSemiring.toSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))))))))) (pthRoot.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Semifield.toCommSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toSemifield.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instFieldPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) p _inst_2 (PerfectClosure.instCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instPerfectRingPerfectClosureToCommRingToCommSemiringToSemifieldInstFieldPerfectClosureToCommRingInstCharPPerfectClosureToAddMonoidWithOneToAddGroupWithOneToRingCommRing.{u1} K _inst_1 p _inst_2 _inst_3))) (Prod.fst.{0, u1} Nat K x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (fun (_x : K) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : K) => PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonUnitalNonAssocSemiring.toMul.{u1} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3))))) K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))) (RingHom.instRingHomClassRingHom.{u1, u1} K (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (CommRing.toRing.{u1} K (Field.toCommRing.{u1} K _inst_1)))) (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (CommRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.PerfectClosure.commRing.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3)))))))) (PerfectClosure.of.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Prod.snd.{0, u1} Nat K x)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRootₓ'. -/
theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
by
rcases x with ⟨m, x⟩
@@ -531,6 +745,12 @@ theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[
rw [iterate_succ_apply', ← ih] <;> rfl
#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRoot
+/- warning: perfect_closure.lift -> PerfectClosure.lift is a dubious translation:
+lean 3 declaration is
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (NonAssocRing.toAddGroupWithOne.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1))))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Field.toDivisionRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.field.{u1} K _inst_1 p _inst_2 _inst_3))))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
+but is expected to have type
+ forall (K : Type.{u1}) [_inst_1 : Field.{u1} K] (p : Nat) [_inst_2 : Fact (Nat.Prime p)] [_inst_3 : CharP.{u1} K (AddGroupWithOne.toAddMonoidWithOne.{u1} K (Ring.toAddGroupWithOne.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) p] (L : Type.{u2}) [_inst_4 : CommSemiring.{u2} L] [_inst_5 : CharP.{u2} L (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} L (NonAssocSemiring.toAddCommMonoidWithOne.{u2} L (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))) p] [_inst_6 : PerfectRing.{u2} L _inst_4 p _inst_2 _inst_5], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u1, u2} K L (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K (Field.toDivisionRing.{u1} K _inst_1)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4))) (RingHom.{u1, u2} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) L (NonAssocRing.toNonAssocSemiring.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (Ring.toNonAssocRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (DivisionRing.toRing.{u1} (PerfectClosure.{u1} K (Field.toCommRing.{u1} K _inst_1) p _inst_2 _inst_3) (PerfectClosure.instDivisionRingPerfectClosureToCommRing.{u1} K _inst_1 p _inst_2 _inst_3)))) (Semiring.toNonAssocSemiring.{u2} L (CommSemiring.toSemiring.{u2} L _inst_4)))
+Case conversion may be inaccurate. Consider using '#align perfect_closure.lift PerfectClosure.liftₓ'. -/
/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
any homomorphism `K →+* L` can be lifted to `perfect_closure K p`. -/
def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
@@ -569,6 +789,12 @@ end Field
end PerfectClosure
+/- warning: perfect_ring.of_surjective -> PerfectRing.ofSurjective is a dubious translation:
+lean 3 declaration is
+ forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))))) (Monoid.Pow.{u1} k (Ring.toMonoid.{u1} k (CommRing.toRing.{u1} k _inst_1)))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (NonAssocRing.toAddGroupWithOne.{u1} k (Ring.toNonAssocRing.{u1} k (CommRing.toRing.{u1} k _inst_1)))) p], (Function.Surjective.{succ u1, succ u1} k k (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (fun (_x : RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) => k -> k) (RingHom.hasCoeToFun.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
+but is expected to have type
+ forall (k : Type.{u1}) [_inst_1 : CommRing.{u1} k] [_inst_2 : IsReduced.{u1} k (CommMonoidWithZero.toZero.{u1} k (CommSemiring.toCommMonoidWithZero.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Monoid.Pow.{u1} k (MonoidWithZero.toMonoid.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (CommRing.toRing.{u1} k _inst_1)))))] (p : Nat) [_inst_3 : Fact (Nat.Prime p)] [_inst_4 : CharP.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (Ring.toAddGroupWithOne.{u1} k (CommRing.toRing.{u1} k _inst_1))) p], (Function.Surjective.{succ u1, succ u1} k k (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k (fun (_x : k) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : k) => k) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1)))) k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (RingHom.instRingHomClassRingHom.{u1, u1} k k (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))) (Semiring.toNonAssocSemiring.{u1} k (CommSemiring.toSemiring.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1))))))) (frobenius.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4))) -> (PerfectRing.{u1} k (CommRing.toCommSemiring.{u1} k _inst_1) p _inst_3 _inst_4)
+Case conversion may be inaccurate. Consider using '#align perfect_ring.of_surjective PerfectRing.ofSurjectiveₓ'. -/
/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced k] (p : ℕ)
[Fact p.Prime] [CharP k p] (h : Function.Surjective <| frobenius k p) : PerfectRing k p
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
NNRat.cast
(#11203)
Define the canonical coercion from the nonnegative rationals to any division semiring.
From LeanAPAP
@@ -507,6 +507,7 @@ instance instDivisionRing : DivisionRing (PerfectClosure K p) where
simp only [iterate_map_one, iterate_map_zero, iterate_zero_apply, ← iterate_map_mul] at this ⊢
rw [mul_inv_cancel this, iterate_map_one]
inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero])
+ nnqsmul := _
qsmul := _
instance instField : Field (PerfectClosure K p) :=
NNRat.cast
(#12360)
This is the parts of the diff of #11203 which don't mention NNRat.cast
.
where
notation.qsmul := _
instead of qsmul := qsmulRec _
to make the instances more robust to definition changes.qsmulRec
.qsmul
before ratCast_def
in instance declarations.rat_smul
to qsmul
.@@ -498,20 +498,16 @@ theorem mk_inv (x : ℕ × K) : (mk K p x)⁻¹ = mk K p (x.1, x.2⁻¹) :=
rfl
-- Porting note: added to avoid "unknown free variable" error
-instance instDivisionRing : DivisionRing (PerfectClosure K p) :=
- { (inferInstance : Inv (PerfectClosure K p)) with
- exists_pair_ne := ⟨0, 1, fun H => zero_ne_one ((eq_iff _ _ _ _).1 H)⟩
- mul_inv_cancel := fun e =>
- induction_on e fun ⟨m, x⟩ H => by
- -- Porting note: restructured
- have := mt (eq_iff _ _ _ _).2 H
- rw [mk_inv, mk_mul_mk]
- refine (eq_iff K p _ _).2 ?_
- simp only [iterate_map_one, iterate_map_zero,
- iterate_zero_apply, ← iterate_map_mul] at this ⊢
- rw [mul_inv_cancel this, iterate_map_one]
- inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero])
- qsmul := qsmulRec _ }
+instance instDivisionRing : DivisionRing (PerfectClosure K p) where
+ exists_pair_ne := ⟨0, 1, fun H => zero_ne_one ((eq_iff _ _ _ _).1 H)⟩
+ mul_inv_cancel e := induction_on e fun ⟨m, x⟩ H ↦ by
+ have := mt (eq_iff _ _ _ _).2 H
+ rw [mk_inv, mk_mul_mk]
+ refine (eq_iff K p _ _).2 ?_
+ simp only [iterate_map_one, iterate_map_zero, iterate_zero_apply, ← iterate_map_mul] at this ⊢
+ rw [mul_inv_cancel this, iterate_map_one]
+ inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero])
+ qsmul := _
instance instField : Field (PerfectClosure K p) :=
{ (inferInstance : DivisionRing (PerfectClosure K p)),
nat_cast
/int_cast
/rat_cast
to natCast
/intCast
/ratCast
(#11486)
Now that I am defining NNRat.cast
, I want a definitive answer to this naming issue. Plenty of lemmas in mathlib already use natCast
/intCast
/ratCast
over nat_cast
/int_cast
/rat_cast
, and this matches with the general expectation that underscore-separated name parts correspond to a single declaration.
@@ -361,7 +361,7 @@ theorem mk_pow (x : ℕ × K) (n : ℕ) : mk K p x ^ n = mk K p (x.1, x.2 ^ n) :
exact ⟨0, by simp_rw [iterate_frobenius, add_zero, mul_pow, ← pow_mul,
← pow_add, mul_assoc, ← pow_add]⟩
-theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) := by
+theorem natCast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) := by
induction' n with n ih
· induction' x with x ih
· simp
@@ -370,26 +370,26 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) := by
rw [ih]; apply Quot.sound
-- Porting note: was `conv`
suffices R K p (n, (x : K)) (Nat.succ n, frobenius K p (x : K)) by
- rwa [frobenius_nat_cast K p x] at this
+ rwa [frobenius_natCast K p x] at this
apply R.intro
-#align perfect_closure.nat_cast PerfectClosure.nat_cast
+#align perfect_closure.nat_cast PerfectClosure.natCast
-theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
- induction x <;> simp only [Int.ofNat_eq_coe, Int.cast_natCast, Int.cast_negSucc, nat_cast K p 0]
+theorem intCast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
+ induction x <;> simp only [Int.ofNat_eq_coe, Int.cast_natCast, Int.cast_negSucc, natCast K p 0]
rfl
-#align perfect_closure.int_cast PerfectClosure.int_cast
+#align perfect_closure.int_cast PerfectClosure.intCast
-theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y := by
+theorem natCast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y := by
constructor <;> intro H
- · rw [nat_cast K p 0, nat_cast K p 0, mk_eq_iff] at H
+ · rw [natCast K p 0, natCast K p 0, mk_eq_iff] at H
cases' H with z H
- simpa only [zero_add, iterate_fixed (frobenius_nat_cast K p _)] using H
- rw [nat_cast K p 0, nat_cast K p 0, H]
-#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iff
+ simpa only [zero_add, iterate_fixed (frobenius_natCast K p _)] using H
+ rw [natCast K p 0, natCast K p 0, H]
+#align perfect_closure.nat_cast_eq_iff PerfectClosure.natCast_eq_iff
instance instCharP : CharP (PerfectClosure K p) p := by
constructor; intro x; rw [← CharP.cast_eq_zero_iff K]
- rw [← Nat.cast_zero, nat_cast_eq_iff, Nat.cast_zero]
+ rw [← Nat.cast_zero, natCast_eq_iff, Nat.cast_zero]
theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
OfNat
and Nat.cast
lemmas (#11861)
This renames
Int.cast_ofNat
to Int.cast_natCast
Int.int_cast_ofNat
to Int.cast_ofNat
I think the history here is that this lemma was previously about Int.ofNat
, before we globally fixed the simp-normal form to be Nat.cast
.
Since the Int.cast_ofNat
name is repurposed, it can't be deprecated. Int.int_cast_ofNat
is such a wonky name that it was probably never used.
@@ -375,7 +375,7 @@ theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) := by
#align perfect_closure.nat_cast PerfectClosure.nat_cast
theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
- induction x <;> simp only [Int.ofNat_eq_coe, Int.cast_ofNat, Int.cast_negSucc, nat_cast K p 0]
+ induction x <;> simp only [Int.ofNat_eq_coe, Int.cast_natCast, Int.cast_negSucc, nat_cast K p 0]
rfl
#align perfect_closure.int_cast PerfectClosure.int_cast
HomClass
to generalize map_iterate
statements (#11266)
This PR uses the HomClass
architecture to generalize the map_iterate
statements in Algebra/GroupPower/IterateHom.lean
.
@@ -168,11 +168,11 @@ instance instCommMonoid : CommMonoid (PerfectClosure K p) :=
one_mul := fun e =>
Quot.inductionOn e fun ⟨n, x⟩ =>
congr_arg (Quot.mk _) <| by
- simp only [RingHom.iterate_map_one, iterate_zero_apply, one_mul, zero_add]
+ simp only [iterate_map_one, iterate_zero_apply, one_mul, zero_add]
mul_one := fun e =>
Quot.inductionOn e fun ⟨n, x⟩ =>
congr_arg (Quot.mk _) <| by
- simp only [RingHom.iterate_map_one, iterate_zero_apply, mul_one, add_zero]
+ simp only [iterate_map_one, iterate_zero_apply, mul_one, add_zero]
mul_comm := fun e f =>
Quot.inductionOn e fun ⟨m, x⟩ =>
Quot.inductionOn f fun ⟨n, y⟩ =>
@@ -279,15 +279,15 @@ instance instAddCommGroup : AddCommGroup (PerfectClosure K p) :=
zero_add := fun e =>
Quot.inductionOn e fun ⟨n, x⟩ =>
congr_arg (Quot.mk _) <| by
- simp only [RingHom.iterate_map_zero, iterate_zero_apply, zero_add]
+ simp only [iterate_map_zero, iterate_zero_apply, zero_add]
add_zero := fun e =>
Quot.inductionOn e fun ⟨n, x⟩ =>
congr_arg (Quot.mk _) <| by
- simp only [RingHom.iterate_map_zero, iterate_zero_apply, add_zero]
+ simp only [iterate_map_zero, iterate_zero_apply, add_zero]
sub_eq_add_neg := fun a b => rfl
add_left_neg := fun e =>
Quot.inductionOn e fun ⟨n, x⟩ => by
- simp only [quot_mk_eq_mk, neg_mk, mk_add_mk, RingHom.iterate_map_neg, add_left_neg, mk_zero]
+ simp only [quot_mk_eq_mk, neg_mk, mk_add_mk, iterate_map_neg, add_left_neg, mk_zero]
add_comm := fun e f =>
Quot.inductionOn e fun ⟨m, x⟩ =>
Quot.inductionOn f fun ⟨n, y⟩ => congr_arg (Quot.mk _) <| by simp only [add_comm]
@@ -301,11 +301,11 @@ instance instCommRing : CommRing (PerfectClosure K p) :=
zero_mul := fun a => by
refine Quot.inductionOn a fun ⟨m, x⟩ => ?_
rw [zero_def, quot_mk_eq_mk, mk_mul_mk]
- simp only [zero_add, iterate_zero, id_eq, RingHom.iterate_map_zero, zero_mul, mk_zero]
+ simp only [zero_add, iterate_zero, id_eq, iterate_map_zero, zero_mul, mk_zero]
mul_zero := fun a => by
refine Quot.inductionOn a fun ⟨m, x⟩ => ?_
rw [zero_def, quot_mk_eq_mk, mk_mul_mk]
- simp only [zero_add, iterate_zero, id_eq, RingHom.iterate_map_zero, mul_zero, mk_zero]
+ simp only [zero_add, iterate_zero, id_eq, iterate_map_zero, mul_zero, mk_zero]
left_distrib := fun e f g =>
Quot.inductionOn e fun ⟨m, x⟩ =>
Quot.inductionOn f fun ⟨n, y⟩ =>
@@ -507,9 +507,9 @@ instance instDivisionRing : DivisionRing (PerfectClosure K p) :=
have := mt (eq_iff _ _ _ _).2 H
rw [mk_inv, mk_mul_mk]
refine (eq_iff K p _ _).2 ?_
- simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
+ simp only [iterate_map_one, iterate_map_zero,
iterate_zero_apply, ← iterate_map_mul] at this ⊢
- rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one]
+ rw [mul_inv_cancel this, iterate_map_one]
inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero])
qsmul := qsmulRec _ }
@@ -492,7 +492,7 @@ instance instInv : Inv (PerfectClosure K p) :=
rw [← inv_pow]
apply R.intro⟩
--- Porting note: added
+-- Porting note (#10756): added theorem
@[simp]
theorem mk_inv (x : ℕ × K) : (mk K p x)⁻¹ = mk K p (x.1, x.2⁻¹) :=
rfl
@@ -510,7 +510,8 @@ instance instDivisionRing : DivisionRing (PerfectClosure K p) :=
simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
iterate_zero_apply, ← iterate_map_mul] at this ⊢
rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one]
- inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
+ inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero])
+ qsmul := qsmulRec _ }
instance instField : Field (PerfectClosure K p) :=
{ (inferInstance : DivisionRing (PerfectClosure K p)),
nsmul
and zsmul
to default automatically (#6262)
This PR removes the default values for nsmul
and zsmul
, forcing the user to populate them manually.
The previous behavior can be obtained by writing nsmul := nsmulRec
and zsmul := zsmulRec
, which is now in the docstring for these fields.
The motivation here is to make it more obvious when module diamonds are being introduced, or at least where they might be hiding; you can now simply search for nsmulRec
in the source code.
Arguably we should do the same thing for intCast
, natCast
, pow
, and zpow
too, but diamonds are less common in those fields, so I'll leave them to a subsequent PR.
Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -290,7 +290,9 @@ instance instAddCommGroup : AddCommGroup (PerfectClosure K p) :=
simp only [quot_mk_eq_mk, neg_mk, mk_add_mk, RingHom.iterate_map_neg, add_left_neg, mk_zero]
add_comm := fun e f =>
Quot.inductionOn e fun ⟨m, x⟩ =>
- Quot.inductionOn f fun ⟨n, y⟩ => congr_arg (Quot.mk _) <| by simp only [add_comm] }
+ Quot.inductionOn f fun ⟨n, y⟩ => congr_arg (Quot.mk _) <| by simp only [add_comm]
+ nsmul := nsmulRec
+ zsmul := zsmulRec }
instance instCommRing : CommRing (PerfectClosure K p) :=
{ instAddCommGroup K p, AddMonoidWithOne.unary,
@@ -393,17 +393,7 @@ theorem frobenius_mk (x : ℕ × K) :
(frobenius (PerfectClosure K p) p : PerfectClosure K p → PerfectClosure K p) (mk K p x) =
mk _ _ (x.1, x.2 ^ p) := by
simp only [frobenius_def]
- cases' x with n x
- dsimp only
- suffices ∀ p' : ℕ, mk K p (n, x) ^ p' = mk K p (n, x ^ p') by apply this
- intro p
- induction p with
- | zero => apply R.sound; rw [(frobenius _ _).iterate_map_one, pow_zero]
- | succ p ih =>
- rw [pow_succ, ih]
- symm
- apply R.sound
- simp only [pow_succ, iterate_map_mul]
+ exact mk_pow K p x p
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
/-- Embedding of `K` into `PerfectClosure K p` -/
@@ -435,7 +435,8 @@ instance instPerfectRing : PerfectRing (PerfectClosure K p) p where
match x, y, H with
| _, _, R.intro n x => Quot.sound (R.intro _ _)
refine bijective_iff_has_inverse.mpr ⟨f, fun e ↦ induction_on e fun ⟨n, x⟩ ↦ ?_,
- fun e ↦ induction_on e fun ⟨n, x⟩ ↦ ?_⟩ <;> simp only [liftOn_mk, frobenius_mk, mk_succ_pow]
+ fun e ↦ induction_on e fun ⟨n, x⟩ ↦ ?_⟩ <;>
+ simp only [f, liftOn_mk, frobenius_mk, mk_succ_pow]
@[simp]
theorem iterate_frobenius_mk (n : ℕ) (x : K) :
mk_pow
and mk_surjective
.@@ -8,7 +8,44 @@ import Mathlib.FieldTheory.Perfect
#align_import field_theory.perfect_closure from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
/-!
-# The perfect closure of a field
+
+# The perfect closure of a characteristic `p` ring
+
+## Main definitions
+
+- `PerfectClosure`: the perfect closure of a characteristic `p` ring, which is the smallest
+ extension that makes frobenius surjective.
+
+- `PerfectClosure.mk K p (n, x)`: for `n : ℕ` and `x : K` this is `x ^ (p ^ -n)` viewed as
+ an element of `PerfectClosure K p`. Every element of `PerfectClosure K p` is of this form
+ (`PerfectClosure.mk_surjective`).
+
+- `PerfectClosure.of`: the structure map from `K` to `PerfectClosure K p`.
+
+- `PerfectClosure.lift`: given a ring `K` of characteristic `p` and a perfect ring `L` of the same
+ characteristic, any homomorphism `K →+* L` can be lifted to `PerfectClosure K p`.
+
+## Main results
+
+- `PerfectClosure.induction_on`: to prove a result for all elements of the prefect closure, one only
+ needs to prove it for all elements of the form `x ^ (p ^ -n)`.
+
+- `PerfectClosure.mk_mul_mk`, `PerfectClosure.one_def`, `PerfectClosure.mk_add_mk`,
+ `PerfectClosure.neg_mk`, `PerfectClosure.zero_def`, `PerfectClosure.mk_zero_zero`,
+ `PerfectClosure.mk_zero`, `PerfectClosure.mk_inv`, `PerfectClosure.mk_pow`:
+ how to do multiplication, addition, etc. on elements of form `x ^ (p ^ -n)`.
+
+- `PerfectClosure.mk_eq_iff`: when does `x ^ (p ^ -n)` equal.
+
+- `PerfectClosure.eq_iff`: same as `PerfectClosure.mk_eq_iff` but with additional assumption that
+ `K` being reduced, hence gives a simpler criterion.
+
+- `PerfectClosure.instPerfectRing`: `PerfectClosure K p` is a perfect ring.
+
+## Tags
+
+perfect ring, perfect closure
+
-/
universe u v
@@ -19,7 +56,8 @@ section
variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
-/-- `PerfectClosure K p` is the quotient by this relation. -/
+/-- `PerfectClosure.R` is the relation `(n, x) ∼ (n + 1, x ^ p)` for `n : ℕ` and `x : K`.
+`PerfectClosure K p` is the quotient by this relation. -/
@[mk_iff]
inductive PerfectClosure.R : ℕ × K → ℕ × K → Prop
| intro : ∀ n x, PerfectClosure.R (n, x) (n + 1, frobenius K p x)
@@ -40,11 +78,15 @@ section Ring
variable [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
-/-- Constructor for `PerfectClosure`. -/
+/-- `PerfectClosure.mk K p (n, x)` for `n : ℕ` and `x : K` is an element of `PerfectClosure K p`,
+viewed as `x ^ (p ^ -n)`. Every element of `PerfectClosure K p` is of this form
+(`PerfectClosure.mk_surjective`). -/
def mk (x : ℕ × K) : PerfectClosure K p :=
Quot.mk (R K p) x
#align perfect_closure.mk PerfectClosure.mk
+theorem mk_surjective : Function.Surjective (mk K p) := surjective_quot_mk _
+
@[simp] theorem mk_succ_pow (m : ℕ) (x : K) : mk K p ⟨m + 1, x ^ p⟩ = mk K p ⟨m, x⟩ :=
Eq.symm <| Quot.sound (R.intro m x)
@@ -95,7 +137,7 @@ private theorem mul_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
rw [← iterate_succ_apply, iterate_succ_apply', iterate_succ_apply', ← frobenius_mul]
apply R.intro
-instance : Mul (PerfectClosure K p) :=
+instance instMul : Mul (PerfectClosure K p) :=
⟨Quot.lift
(fun x : ℕ × K =>
Quot.lift
@@ -112,7 +154,7 @@ theorem mk_mul_mk (x y : ℕ × K) :
rfl
#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mk
-instance : CommMonoid (PerfectClosure K p) :=
+instance instCommMonoid : CommMonoid (PerfectClosure K p) :=
{ (inferInstance : Mul (PerfectClosure K p)) with
mul_assoc := fun e f g =>
Quot.inductionOn e fun ⟨m, x⟩ =>
@@ -140,7 +182,7 @@ theorem one_def : (1 : PerfectClosure K p) = mk K p (0, 1) :=
rfl
#align perfect_closure.one_def PerfectClosure.one_def
-instance : Inhabited (PerfectClosure K p) :=
+instance instInhabited : Inhabited (PerfectClosure K p) :=
⟨1⟩
private theorem add_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
@@ -162,7 +204,7 @@ private theorem add_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
rw [← iterate_succ_apply, iterate_succ_apply', iterate_succ_apply', ← frobenius_add]
apply R.intro
-instance : Add (PerfectClosure K p) :=
+instance instAdd : Add (PerfectClosure K p) :=
⟨Quot.lift
(fun x : ℕ × K =>
Quot.lift
@@ -179,7 +221,7 @@ theorem mk_add_mk (x y : ℕ × K) :
rfl
#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mk
-instance : Neg (PerfectClosure K p) :=
+instance instNeg : Neg (PerfectClosure K p) :=
⟨Quot.lift (fun x : ℕ × K => mk K p (x.1, -x.2)) fun x y (H : R K p x y) =>
match x, y, H with
| _, _, R.intro n x => Quot.sound <| by rw [← frobenius_neg]; apply R.intro⟩
@@ -189,7 +231,7 @@ theorem neg_mk (x : ℕ × K) : -mk K p x = mk K p (x.1, -x.2) :=
rfl
#align perfect_closure.neg_mk PerfectClosure.neg_mk
-instance : Zero (PerfectClosure K p) :=
+instance instZero : Zero (PerfectClosure K p) :=
⟨mk K p (0, 0)⟩
theorem zero_def : (0 : PerfectClosure K p) = mk K p (0, 0) :=
@@ -223,7 +265,7 @@ theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p)^[m] x = y) :
apply R.intro
#align perfect_closure.r.sound PerfectClosure.R.sound
-instance PerfectClosure.addCommGroup : AddCommGroup (PerfectClosure K p) :=
+instance instAddCommGroup : AddCommGroup (PerfectClosure K p) :=
{ (inferInstance : Add (PerfectClosure K p)),
(inferInstance : Neg (PerfectClosure K p)) with
add_assoc := fun e f g =>
@@ -250,8 +292,8 @@ instance PerfectClosure.addCommGroup : AddCommGroup (PerfectClosure K p) :=
Quot.inductionOn e fun ⟨m, x⟩ =>
Quot.inductionOn f fun ⟨n, y⟩ => congr_arg (Quot.mk _) <| by simp only [add_comm] }
-instance PerfectClosure.commRing : CommRing (PerfectClosure K p) :=
- { PerfectClosure.addCommGroup K p, AddMonoidWithOne.unary,
+instance instCommRing : CommRing (PerfectClosure K p) :=
+ { instAddCommGroup K p, AddMonoidWithOne.unary,
(inferInstance : CommMonoid (PerfectClosure K p)) with
-- Porting note: added `zero_mul`, `mul_zero`
zero_mul := fun a => by
@@ -281,7 +323,7 @@ instance PerfectClosure.commRing : CommRing (PerfectClosure K p) :=
simp only [iterate_map_mul, iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
-theorem eq_iff' (x y : ℕ × K) :
+theorem mk_eq_iff (x y : ℕ × K) :
mk K p x = mk K p y ↔ ∃ z, (frobenius K p)^[y.1 + z] x.2 = (frobenius K p)^[x.1 + z] y.2 := by
constructor
· intro H
@@ -304,7 +346,18 @@ theorem eq_iff' (x y : ℕ × K) :
cases' H with z H; dsimp only at H
rw [R.sound K p (n + z) m x _ rfl, R.sound K p (m + z) n y _ rfl, H]
rw [add_assoc, add_comm, add_comm z]
-#align perfect_closure.eq_iff' PerfectClosure.eq_iff'
+#align perfect_closure.eq_iff' PerfectClosure.mk_eq_iff
+
+@[simp]
+theorem mk_pow (x : ℕ × K) (n : ℕ) : mk K p x ^ n = mk K p (x.1, x.2 ^ n) := by
+ induction n with
+ | zero =>
+ rw [pow_zero, pow_zero, one_def, mk_eq_iff]
+ exact ⟨0, by simp_rw [← coe_iterateFrobenius, map_one]⟩
+ | succ n ih =>
+ rw [pow_succ, pow_succ, ih, mk_mul_mk, mk_eq_iff]
+ exact ⟨0, by simp_rw [iterate_frobenius, add_zero, mul_pow, ← pow_mul,
+ ← pow_add, mul_assoc, ← pow_add]⟩
theorem nat_cast (n x : ℕ) : (x : PerfectClosure K p) = mk K p (n, x) := by
induction' n with n ih
@@ -326,13 +379,13 @@ theorem int_cast (x : ℤ) : (x : PerfectClosure K p) = mk K p (0, x) := by
theorem nat_cast_eq_iff (x y : ℕ) : (x : PerfectClosure K p) = y ↔ (x : K) = y := by
constructor <;> intro H
- · rw [nat_cast K p 0, nat_cast K p 0, eq_iff'] at H
+ · rw [nat_cast K p 0, nat_cast K p 0, mk_eq_iff] at H
cases' H with z H
simpa only [zero_add, iterate_fixed (frobenius_nat_cast K p _)] using H
rw [nat_cast K p 0, nat_cast K p 0, H]
#align perfect_closure.nat_cast_eq_iff PerfectClosure.nat_cast_eq_iff
-instance : CharP (PerfectClosure K p) p := by
+instance instCharP : CharP (PerfectClosure K p) p := by
constructor; intro x; rw [← CharP.cast_eq_zero_iff K]
rw [← Nat.cast_zero, nat_cast_eq_iff, Nat.cast_zero]
@@ -366,67 +419,23 @@ theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
rfl
#align perfect_closure.of_apply PerfectClosure.of_apply
-end Ring
-
-theorem eq_iff [CommRing K] [IsReduced K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
- Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p)^[y.1] x.2 = (frobenius K p)^[x.1] y.2 :=
- (eq_iff' K p x y).trans
- ⟨fun ⟨z, H⟩ => (frobenius_inj K p).iterate z <| by simpa only [add_comm, iterate_add] using H,
- fun H => ⟨0, H⟩⟩
-#align perfect_closure.eq_iff PerfectClosure.eq_iff
-
-section Field
-
-variable [Field K] (p : ℕ) [Fact p.Prime] [CharP K p]
-
-instance : Inv (PerfectClosure K p) :=
- ⟨Quot.lift (fun x : ℕ × K => Quot.mk (R K p) (x.1, x.2⁻¹)) fun x y (H : R K p x y) =>
- match x, y, H with
- | _, _, R.intro n x =>
- Quot.sound <| by
- simp only [frobenius_def]
- rw [← inv_pow]
- apply R.intro⟩
-
--- Porting note: added
-@[simp]
-theorem mk_inv (x : ℕ × K) : (mk K p x)⁻¹ = mk K p (x.1, x.2⁻¹) :=
- rfl
-
--- Porting note: added to avoid "unknown free variable" error
-instance : DivisionRing (PerfectClosure K p) :=
- { (inferInstance : Inv (PerfectClosure K p)) with
- exists_pair_ne := ⟨0, 1, fun H => zero_ne_one ((eq_iff _ _ _ _).1 H)⟩
- mul_inv_cancel := fun e =>
- induction_on e fun ⟨m, x⟩ H => by
- -- Porting note: restructured
- have := mt (eq_iff _ _ _ _).2 H
- rw [mk_inv, mk_mul_mk]
- refine (eq_iff K p _ _).2 ?_
- simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
- iterate_zero_apply, ← iterate_map_mul] at this ⊢
- rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one]
- inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
-
-instance : Field (PerfectClosure K p) :=
- { (inferInstance : DivisionRing (PerfectClosure K p)),
- (inferInstance : CommRing (PerfectClosure K p)) with }
+instance instReduced : IsReduced (PerfectClosure K p) where
+ eq_zero x := induction_on x fun x ⟨n, h⟩ ↦ by
+ replace h : mk K p x ^ p ^ n = 0 := by
+ rw [← Nat.sub_add_cancel ((Nat.lt_pow_self (Fact.out : p.Prime).one_lt n).le),
+ pow_add, h, mul_zero]
+ simp only [zero_def, mk_pow, mk_eq_iff, zero_add, ← coe_iterateFrobenius, map_zero] at h ⊢
+ obtain ⟨m, h⟩ := h
+ exact ⟨n + m, by simpa only [iterateFrobenius_def, pow_add, pow_mul] using h⟩
-instance : PerfectRing (PerfectClosure K p) p where
+instance instPerfectRing : PerfectRing (PerfectClosure K p) p where
bijective_frobenius := by
let f : PerfectClosure K p → PerfectClosure K p := fun e ↦
liftOn e (fun x => mk K p (x.1 + 1, x.2)) fun x y H =>
match x, y, H with
| _, _, R.intro n x => Quot.sound (R.intro _ _)
- have hl : LeftInverse f (frobenius (PerfectClosure K p) p) := fun e ↦
- induction_on e fun ⟨n, x⟩ => by
- simp only [liftOn_mk, frobenius_mk]
- exact (Quot.sound <| R.intro _ _).symm
- have hr : RightInverse f (frobenius (PerfectClosure K p) p) := fun e ↦
- induction_on e fun ⟨n, x⟩ => by
- simp only [liftOn_mk, frobenius_mk]
- exact (Quot.sound <| R.intro _ _).symm
- exact bijective_iff_has_inverse.mpr ⟨f, hl, hr⟩
+ refine bijective_iff_has_inverse.mpr ⟨f, fun e ↦ induction_on e fun ⟨n, x⟩ ↦ ?_,
+ fun e ↦ induction_on e fun ⟨n, x⟩ ↦ ?_⟩ <;> simp only [liftOn_mk, frobenius_mk, mk_succ_pow]
@[simp]
theorem iterate_frobenius_mk (n : ℕ) (x : K) :
@@ -434,7 +443,7 @@ theorem iterate_frobenius_mk (n : ℕ) (x : K) :
induction' n with n ih; rfl
rw [iterate_succ_apply, ← ih, frobenius_mk, mk_succ_pow]
-/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
+/-- Given a ring `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
any homomorphism `K →+* L` can be lifted to `PerfectClosure K p`. -/
noncomputable def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
(K →+* L) ≃ (PerfectClosure K p →+* L) where
@@ -468,6 +477,54 @@ noncomputable def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L
RightInverse.iterate (frobenius_apply_frobeniusEquiv_symm L p) n]
#align perfect_closure.lift PerfectClosure.lift
+end Ring
+
+theorem eq_iff [CommRing K] [IsReduced K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
+ mk K p x = mk K p y ↔ (frobenius K p)^[y.1] x.2 = (frobenius K p)^[x.1] y.2 :=
+ (mk_eq_iff K p x y).trans
+ ⟨fun ⟨z, H⟩ => (frobenius_inj K p).iterate z <| by simpa only [add_comm, iterate_add] using H,
+ fun H => ⟨0, H⟩⟩
+#align perfect_closure.eq_iff PerfectClosure.eq_iff
+
+section Field
+
+variable [Field K] (p : ℕ) [Fact p.Prime] [CharP K p]
+
+instance instInv : Inv (PerfectClosure K p) :=
+ ⟨Quot.lift (fun x : ℕ × K => Quot.mk (R K p) (x.1, x.2⁻¹)) fun x y (H : R K p x y) =>
+ match x, y, H with
+ | _, _, R.intro n x =>
+ Quot.sound <| by
+ simp only [frobenius_def]
+ rw [← inv_pow]
+ apply R.intro⟩
+
+-- Porting note: added
+@[simp]
+theorem mk_inv (x : ℕ × K) : (mk K p x)⁻¹ = mk K p (x.1, x.2⁻¹) :=
+ rfl
+
+-- Porting note: added to avoid "unknown free variable" error
+instance instDivisionRing : DivisionRing (PerfectClosure K p) :=
+ { (inferInstance : Inv (PerfectClosure K p)) with
+ exists_pair_ne := ⟨0, 1, fun H => zero_ne_one ((eq_iff _ _ _ _).1 H)⟩
+ mul_inv_cancel := fun e =>
+ induction_on e fun ⟨m, x⟩ H => by
+ -- Porting note: restructured
+ have := mt (eq_iff _ _ _ _).2 H
+ rw [mk_inv, mk_mul_mk]
+ refine (eq_iff K p _ _).2 ?_
+ simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
+ iterate_zero_apply, ← iterate_map_mul] at this ⊢
+ rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one]
+ inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
+
+instance instField : Field (PerfectClosure K p) :=
+ { (inferInstance : DivisionRing (PerfectClosure K p)),
+ (inferInstance : CommRing (PerfectClosure K p)) with }
+
+instance instPerfectField : PerfectField (PerfectClosure K p) := PerfectRing.toPerfectField _ p
+
end Field
end PerfectClosure
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -46,7 +46,7 @@ def mk (x : ℕ × K) : PerfectClosure K p :=
#align perfect_closure.mk PerfectClosure.mk
@[simp] theorem mk_succ_pow (m : ℕ) (x : K) : mk K p ⟨m + 1, x ^ p⟩ = mk K p ⟨m, x⟩ :=
- Eq.symm $ Quot.sound (R.intro m x)
+ Eq.symm <| Quot.sound (R.intro m x)
@[simp]
theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p) = mk K p x :=
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>
@@ -286,11 +286,11 @@ theorem eq_iff' (x y : ℕ × K) :
constructor
· intro H
replace H := Quot.exact _ H
- induction H
- case rel x y H => cases' H with n x; exact ⟨0, rfl⟩
- case refl H => exact ⟨0, rfl⟩
- case symm x y H ih => cases' ih with w ih; exact ⟨w, ih.symm⟩
- case trans x y z H1 H2 ih1 ih2 =>
+ induction H with
+ | rel x y H => cases' H with n x; exact ⟨0, rfl⟩
+ | refl H => exact ⟨0, rfl⟩
+ | symm x y H ih => cases' ih with w ih; exact ⟨w, ih.symm⟩
+ | trans x y z H1 H2 ih1 ih2 =>
cases' ih1 with z1 ih1
cases' ih2 with z2 ih2
exists z2 + (y.1 + z1)
@@ -344,9 +344,9 @@ theorem frobenius_mk (x : ℕ × K) :
dsimp only
suffices ∀ p' : ℕ, mk K p (n, x) ^ p' = mk K p (n, x ^ p') by apply this
intro p
- induction' p with p ih
- case zero => apply R.sound; rw [(frobenius _ _).iterate_map_one, pow_zero]
- case succ =>
+ induction p with
+ | zero => apply R.sound; rw [(frobenius _ _).iterate_map_one, pow_zero]
+ | succ p ih =>
rw [pow_succ, ih]
symm
apply R.sound
The main changes are:
PerfectRing
typeclass with a Prop
-valued (non-constructive) version,PerfectField
,@@ -3,9 +3,7 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Yury Kudryashov
-/
-import Mathlib.Algebra.CharP.Basic
-import Mathlib.Algebra.Hom.Iterate
-import Mathlib.Algebra.Ring.Equiv
+import Mathlib.FieldTheory.Perfect
#align_import field_theory.perfect_closure from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
@@ -13,118 +11,10 @@ import Mathlib.Algebra.Ring.Equiv
# The perfect closure of a field
-/
-
universe u v
open Function
-section Defs
-
-variable (R : Type u) [CommSemiring R] (p : ℕ) [Fact p.Prime] [CharP R p]
-
-/-- A perfect ring is a ring of characteristic p that has p-th root. -/
-class PerfectRing : Type u where
- pthRoot' : R → R
- frobenius_pthRoot' : ∀ x, frobenius R p (pthRoot' x) = x
- pthRoot_frobenius' : ∀ x, pthRoot' (frobenius R p x) = x
-#align perfect_ring PerfectRing
-
-/-- Frobenius automorphism of a perfect ring. -/
-def frobeniusEquiv [PerfectRing R p] : R ≃+* R :=
- { frobenius R p with
- invFun := PerfectRing.pthRoot' p
- left_inv := PerfectRing.pthRoot_frobenius'
- right_inv := PerfectRing.frobenius_pthRoot' }
-#align frobenius_equiv frobeniusEquiv
-
-/-- `p`-th root of an element in a `PerfectRing` as a `RingHom`. -/
-def pthRoot [PerfectRing R p] : R →+* R :=
- (frobeniusEquiv R p).symm
-#align pth_root pthRoot
-
-end Defs
-
-section
-
-variable {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] (f : R →* S) (g : R →+* S)
- {p : ℕ} [Fact p.Prime] [CharP R p] [PerfectRing R p] [CharP S p] [PerfectRing S p]
-
-@[simp]
-theorem coe_frobeniusEquiv : ⇑(frobeniusEquiv R p) = frobenius R p :=
- rfl
-#align coe_frobenius_equiv coe_frobeniusEquiv
-
-@[simp]
-theorem coe_frobeniusEquiv_symm : ⇑(frobeniusEquiv R p).symm = pthRoot R p :=
- rfl
-#align coe_frobenius_equiv_symm coe_frobeniusEquiv_symm
-
-@[simp]
-theorem frobenius_pthRoot (x : R) : frobenius R p (pthRoot R p x) = x :=
- (frobeniusEquiv R p).apply_symm_apply x
-#align frobenius_pth_root frobenius_pthRoot
-
-@[simp]
-theorem pthRoot_pow_p (x : R) : pthRoot R p x ^ p = x :=
- frobenius_pthRoot x
-#align pth_root_pow_p pthRoot_pow_p
-
-@[simp]
-theorem pthRoot_frobenius (x : R) : pthRoot R p (frobenius R p x) = x :=
- (frobeniusEquiv R p).symm_apply_apply x
-#align pth_root_frobenius pthRoot_frobenius
-
--- Porting note: @[simp] can prove this
-theorem pthRoot_pow_p' (x : R) : pthRoot R p (x ^ p) = x :=
- pthRoot_frobenius x
-#align pth_root_pow_p' pthRoot_pow_p'
-
-theorem leftInverse_pthRoot_frobenius : LeftInverse (pthRoot R p) (frobenius R p) :=
- pthRoot_frobenius
-#align left_inverse_pth_root_frobenius leftInverse_pthRoot_frobenius
-
-theorem rightInverse_pthRoot_frobenius : Function.RightInverse (pthRoot R p) (frobenius R p) :=
- frobenius_pthRoot
-#align right_inverse_pth_root_frobenius rightInverse_pthRoot_frobenius
-
-theorem commute_frobenius_pthRoot : Function.Commute (frobenius R p) (pthRoot R p) := fun x =>
- (frobenius_pthRoot x).trans (pthRoot_frobenius x).symm
-#align commute_frobenius_pth_root commute_frobenius_pthRoot
-
-theorem eq_pthRoot_iff {x y : R} : x = pthRoot R p y ↔ frobenius R p x = y :=
- (frobeniusEquiv R p).toEquiv.eq_symm_apply
-#align eq_pth_root_iff eq_pthRoot_iff
-
-theorem pthRoot_eq_iff {x y : R} : pthRoot R p x = y ↔ x = frobenius R p y :=
- (frobeniusEquiv R p).toEquiv.symm_apply_eq
-#align pth_root_eq_iff pthRoot_eq_iff
-
-theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
- eq_pthRoot_iff.2 <| by rw [← f.map_frobenius, frobenius_pthRoot]
-#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
-
-theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
- f ((pthRoot R p)^[n] x) = (pthRoot S p)^[n] (f x) :=
- Semiconj.iterate_right f.map_pthRoot n x
-#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
-
-theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
- g.toMonoidHom.map_pthRoot x
-#align ring_hom.map_pth_root RingHom.map_pthRoot
-
-theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
- g ((pthRoot R p)^[n] x) = (pthRoot S p)^[n] (g x) :=
- g.toMonoidHom.map_iterate_pthRoot x n
-#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRoot
-
-variable (p)
-
-theorem injective_pow_p {x y : R} (hxy : x ^ p = y ^ p) : x = y :=
- leftInverse_pthRoot_frobenius.injective hxy
-#align injective_pow_p injective_pow_p
-
-end
-
section
variable (K : Type u) [CommRing K] (p : ℕ) [Fact p.Prime] [CharP K p]
@@ -155,6 +45,9 @@ def mk (x : ℕ × K) : PerfectClosure K p :=
Quot.mk (R K p) x
#align perfect_closure.mk PerfectClosure.mk
+@[simp] theorem mk_succ_pow (m : ℕ) (x : K) : mk K p ⟨m + 1, x ^ p⟩ = mk K p ⟨m, x⟩ :=
+ Eq.symm $ Quot.sound (R.intro m x)
+
@[simp]
theorem quot_mk_eq_mk (x : ℕ × K) : (Quot.mk (R K p) x : PerfectClosure K p) = mk K p x :=
rfl
@@ -227,7 +120,7 @@ instance : CommMonoid (PerfectClosure K p) :=
Quot.inductionOn g fun ⟨s, z⟩ => by
simp only [quot_mk_eq_mk, mk_mul_mk] -- Porting note: added this line
apply congr_arg (Quot.mk _)
- simp only [add_assoc, mul_assoc, RingHom.iterate_map_mul, ← iterate_add_apply,
+ simp only [add_assoc, mul_assoc, iterate_map_mul, ← iterate_add_apply,
add_comm, add_left_comm]
one := mk K p (0, 1)
one_mul := fun e =>
@@ -339,7 +232,7 @@ instance PerfectClosure.addCommGroup : AddCommGroup (PerfectClosure K p) :=
Quot.inductionOn g fun ⟨s, z⟩ => by
simp only [quot_mk_eq_mk, mk_add_mk] -- Porting note: added this line
apply congr_arg (Quot.mk _)
- simp only [RingHom.iterate_map_add, ← iterate_add_apply, add_assoc, add_comm s _]
+ simp only [iterate_map_add, ← iterate_add_apply, add_assoc, add_comm s _]
zero := 0
zero_add := fun e =>
Quot.inductionOn e fun ⟨n, x⟩ =>
@@ -376,7 +269,7 @@ instance PerfectClosure.commRing : CommRing (PerfectClosure K p) :=
simp only [quot_mk_eq_mk, mk_add_mk, mk_mul_mk] -- Porting note: added this line
simp only [add_assoc, add_comm, add_left_comm]
apply R.sound
- simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
+ simp only [iterate_map_mul, iterate_map_add, ← iterate_add_apply,
mul_add, add_comm, add_left_comm]
right_distrib := fun e f g =>
Quot.inductionOn e fun ⟨m, x⟩ =>
@@ -385,7 +278,7 @@ instance PerfectClosure.commRing : CommRing (PerfectClosure K p) :=
simp only [quot_mk_eq_mk, mk_add_mk, mk_mul_mk] -- Porting note: added this line
simp only [add_assoc, add_comm _ s, add_left_comm _ s]
apply R.sound
- simp only [RingHom.iterate_map_mul, RingHom.iterate_map_add, ← iterate_add_apply,
+ simp only [iterate_map_mul, iterate_map_add, ← iterate_add_apply,
add_mul, add_comm, add_left_comm] }
theorem eq_iff' (x y : ℕ × K) :
@@ -457,7 +350,7 @@ theorem frobenius_mk (x : ℕ × K) :
rw [pow_succ, ih]
symm
apply R.sound
- simp only [pow_succ, (frobenius _ _).iterate_map_mul]
+ simp only [pow_succ, iterate_map_mul]
#align perfect_closure.frobenius_mk PerfectClosure.frobenius_mk
/-- Embedding of `K` into `PerfectClosure K p` -/
@@ -475,7 +368,7 @@ theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
end Ring
-theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
+theorem eq_iff [CommRing K] [IsReduced K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p)^[y.1] x.2 = (frobenius K p)^[x.1] y.2 :=
(eq_iff' K p x y).trans
⟨fun ⟨z, H⟩ => (frobenius_inj K p).iterate z <| by simpa only [add_comm, iterate_add] using H,
@@ -511,7 +404,7 @@ instance : DivisionRing (PerfectClosure K p) :=
rw [mk_inv, mk_mul_mk]
refine (eq_iff K p _ _).2 ?_
simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
- iterate_zero_apply, ← (frobenius _ p).iterate_map_mul] at this ⊢
+ iterate_zero_apply, ← iterate_map_mul] at this ⊢
rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one]
inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
@@ -520,69 +413,61 @@ instance : Field (PerfectClosure K p) :=
(inferInstance : CommRing (PerfectClosure K p)) with }
instance : PerfectRing (PerfectClosure K p) p where
- pthRoot' e :=
- liftOn e (fun x => mk K p (x.1 + 1, x.2)) fun x y H =>
+ bijective_frobenius := by
+ let f : PerfectClosure K p → PerfectClosure K p := fun e ↦
+ liftOn e (fun x => mk K p (x.1 + 1, x.2)) fun x y H =>
match x, y, H with
| _, _, R.intro n x => Quot.sound (R.intro _ _)
- frobenius_pthRoot' e :=
- induction_on e fun ⟨n, x⟩ => by
- simp only [liftOn_mk, frobenius_mk]
- exact (Quot.sound <| R.intro _ _).symm
- pthRoot_frobenius' e :=
- induction_on e fun ⟨n, x⟩ => by
- simp only [liftOn_mk, frobenius_mk]
- exact (Quot.sound <| R.intro _ _).symm
-
-theorem eq_pthRoot (x : ℕ × K) :
- mk K p x = (pthRoot (PerfectClosure K p) p)^[x.1] (of K p x.2) := by
- rcases x with ⟨m, x⟩
- induction' m with m ih
- · rfl
- rw [iterate_succ_apply', ← ih]
- rfl
-#align perfect_closure.eq_pth_root PerfectClosure.eq_pthRoot
+ have hl : LeftInverse f (frobenius (PerfectClosure K p) p) := fun e ↦
+ induction_on e fun ⟨n, x⟩ => by
+ simp only [liftOn_mk, frobenius_mk]
+ exact (Quot.sound <| R.intro _ _).symm
+ have hr : RightInverse f (frobenius (PerfectClosure K p) p) := fun e ↦
+ induction_on e fun ⟨n, x⟩ => by
+ simp only [liftOn_mk, frobenius_mk]
+ exact (Quot.sound <| R.intro _ _).symm
+ exact bijective_iff_has_inverse.mpr ⟨f, hl, hr⟩
+
+@[simp]
+theorem iterate_frobenius_mk (n : ℕ) (x : K) :
+ (frobenius (PerfectClosure K p) p)^[n] (mk K p ⟨n, x⟩) = of K p x := by
+ induction' n with n ih; rfl
+ rw [iterate_succ_apply, ← ih, frobenius_mk, mk_succ_pow]
/-- Given a field `K` of characteristic `p` and a perfect ring `L` of the same characteristic,
any homomorphism `K →+* L` can be lifted to `PerfectClosure K p`. -/
-def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
+noncomputable def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
(K →+* L) ≃ (PerfectClosure K p →+* L) where
toFun f :=
{ toFun := by
- refine' fun e => liftOn e (fun x => (pthRoot L p)^[x.1] (f x.2)) _
- rintro a b ⟨n⟩
- simp only [f.map_frobenius, iterate_succ_apply, pthRoot_frobenius],
- map_one' := f.map_one,
- map_zero' := f.map_zero,
+ refine' fun e => liftOn e (fun x => (frobeniusEquiv L p).symm^[x.1] (f x.2)) _
+ rintro - - ⟨n, x⟩
+ simp [f.map_frobenius]
+ map_one' := f.map_one
+ map_zero' := f.map_zero
map_mul' := by
- have := (leftInverse_pthRoot_frobenius (R := L) (p := p)).iterate
- rintro ⟨x⟩ ⟨y⟩
- simp only [quot_mk_eq_mk, liftOn_mk, mk_mul_mk, RingHom.map_iterate_frobenius,
- RingHom.iterate_map_mul, RingHom.map_mul]
- rw [iterate_add_apply, this _ _, add_comm, iterate_add_apply, this _ _],
+ rintro ⟨n, x⟩ ⟨m, y⟩
+ simp only [quot_mk_eq_mk, liftOn_mk, f.map_iterate_frobenius, mk_mul_mk, map_mul,
+ iterate_map_mul]
+ have := LeftInverse.iterate (frobeniusEquiv_symm_apply_frobenius L p)
+ rw [iterate_add_apply, this _ _, add_comm, iterate_add_apply, this _ _]
map_add' := by
- have := (leftInverse_pthRoot_frobenius (R := L) (p := p)).iterate
- rintro ⟨x⟩ ⟨y⟩
- simp only [quot_mk_eq_mk, liftOn_mk, mk_add_mk, RingHom.map_iterate_frobenius,
- RingHom.iterate_map_add, RingHom.map_add]
- rw [iterate_add_apply, this _ _, add_comm x.1, iterate_add_apply, this _ _] }
+ rintro ⟨n, x⟩ ⟨m, y⟩
+ simp only [quot_mk_eq_mk, liftOn_mk, f.map_iterate_frobenius, mk_add_mk, map_add,
+ iterate_map_add]
+ have := LeftInverse.iterate (frobeniusEquiv_symm_apply_frobenius L p)
+ rw [iterate_add_apply, this _ _, add_comm n, iterate_add_apply, this _ _] }
invFun f := f.comp (of K p)
left_inv f := by ext x; rfl
right_inv f := by
- ext ⟨x⟩
+ ext ⟨n, x⟩
simp only [quot_mk_eq_mk, RingHom.comp_apply, RingHom.coe_mk, MonoidHom.coe_mk, OneHom.coe_mk,
liftOn_mk]
- rw [eq_pthRoot, RingHom.map_iterate_pthRoot]
+ apply (injective_frobenius L p).iterate n
+ rw [← f.map_iterate_frobenius, iterate_frobenius_mk,
+ RightInverse.iterate (frobenius_apply_frobeniusEquiv_symm L p) n]
#align perfect_closure.lift PerfectClosure.lift
end Field
end PerfectClosure
-
-/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
-noncomputable def PerfectRing.ofSurjective (k : Type*) [CommRing k] [IsReduced k] (p : ℕ)
- [Fact p.Prime] [CharP k p] (h : Function.Surjective <| frobenius k p) : PerfectRing k p
- where
- pthRoot' := Function.surjInv h
- frobenius_pthRoot' := Function.surjInv_eq h
- pthRoot_frobenius' _ := frobenius_inj _ _ <| Function.surjInv_eq h _
-#align perfect_ring.of_surjective PerfectRing.ofSurjective
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -164,7 +164,7 @@ variable {K p}
/-- Lift a function `ℕ × K → L` to a function on `PerfectClosure K p`. -/
-- Porting note: removed `@[elab_as_elim]` for "unexpected eliminator resulting type L"
-def liftOn {L : Type _} (x : PerfectClosure K p) (f : ℕ × K → L)
+def liftOn {L : Type*} (x : PerfectClosure K p) (f : ℕ × K → L)
(hf : ∀ x y, R K p x y → f x = f y) : L :=
Quot.liftOn x f hf
#align perfect_closure.lift_on PerfectClosure.liftOn
@@ -579,7 +579,7 @@ end Field
end PerfectClosure
/-- A reduced ring with prime characteristic and surjective frobenius map is perfect. -/
-noncomputable def PerfectRing.ofSurjective (k : Type _) [CommRing k] [IsReduced k] (p : ℕ)
+noncomputable def PerfectRing.ofSurjective (k : Type*) [CommRing k] [IsReduced k] (p : ℕ)
[Fact p.Prime] [CharP k p] (h : Function.Surjective <| frobenius k p) : PerfectRing k p
where
pthRoot' := Function.surjInv h
@@ -2,16 +2,13 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Yury Kudryashov
-
-! This file was ported from Lean 3 source module field_theory.perfect_closure
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.CharP.Basic
import Mathlib.Algebra.Hom.Iterate
import Mathlib.Algebra.Ring.Equiv
+#align_import field_theory.perfect_closure from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# The perfect closure of a field
-/
@@ -107,7 +107,7 @@ theorem MonoidHom.map_pthRoot (x : R) : f (pthRoot R p x) = pthRoot S p (f x) :=
#align monoid_hom.map_pth_root MonoidHom.map_pthRoot
theorem MonoidHom.map_iterate_pthRoot (x : R) (n : ℕ) :
- f ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (f x) :=
+ f ((pthRoot R p)^[n] x) = (pthRoot S p)^[n] (f x) :=
Semiconj.iterate_right f.map_pthRoot n x
#align monoid_hom.map_iterate_pth_root MonoidHom.map_iterate_pthRoot
@@ -116,7 +116,7 @@ theorem RingHom.map_pthRoot (x : R) : g (pthRoot R p x) = pthRoot S p (g x) :=
#align ring_hom.map_pth_root RingHom.map_pthRoot
theorem RingHom.map_iterate_pthRoot (x : R) (n : ℕ) :
- g ((pthRoot R p^[n]) x) = (pthRoot S p^[n]) (g x) :=
+ g ((pthRoot R p)^[n] x) = (pthRoot S p)^[n] (g x) :=
g.toMonoidHom.map_iterate_pthRoot x n
#align ring_hom.map_iterate_pth_root RingHom.map_iterate_pthRoot
@@ -187,8 +187,8 @@ theorem induction_on (x : PerfectClosure K p) {q : PerfectClosure K p → Prop}
variable (K p)
private theorem mul_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
- mk K p (x1.1 + y.1, (frobenius K p^[y.1]) x1.2 * (frobenius K p^[x1.1]) y.2) =
- mk K p (x2.1 + y.1, (frobenius K p^[y.1]) x2.2 * (frobenius K p^[x2.1]) y.2) :=
+ mk K p (x1.1 + y.1, (frobenius K p)^[y.1] x1.2 * (frobenius K p)^[x1.1] y.2) =
+ mk K p (x2.1 + y.1, (frobenius K p)^[y.1] x2.2 * (frobenius K p)^[x2.1] y.2) :=
match x1, x2, H with
| _, _, R.intro n x =>
Quot.sound <| by
@@ -197,8 +197,8 @@ private theorem mul_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
apply R.intro
private theorem mul_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
- mk K p (x.1 + y1.1, (frobenius K p^[y1.1]) x.2 * (frobenius K p^[x.1]) y1.2) =
- mk K p (x.1 + y2.1, (frobenius K p^[y2.1]) x.2 * (frobenius K p^[x.1]) y2.2) :=
+ mk K p (x.1 + y1.1, (frobenius K p)^[y1.1] x.2 * (frobenius K p)^[x.1] y1.2) =
+ mk K p (x.1 + y2.1, (frobenius K p)^[y2.1] x.2 * (frobenius K p)^[x.1] y2.2) :=
match y1, y2, H with
| _, _, R.intro n y =>
Quot.sound <| by
@@ -210,7 +210,7 @@ instance : Mul (PerfectClosure K p) :=
(fun x : ℕ × K =>
Quot.lift
(fun y : ℕ × K =>
- mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 * (frobenius K p^[x.1]) y.2))
+ mk K p (x.1 + y.1, (frobenius K p)^[y.1] x.2 * (frobenius K p)^[x.1] y.2))
(mul_aux_right K p x))
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => mul_aux_left K p x1 x2 y H⟩
@@ -218,7 +218,7 @@ instance : Mul (PerfectClosure K p) :=
@[simp]
theorem mk_mul_mk (x y : ℕ × K) :
mk K p x * mk K p y =
- mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 * (frobenius K p^[x.1]) y.2) :=
+ mk K p (x.1 + y.1, (frobenius K p)^[y.1] x.2 * (frobenius K p)^[x.1] y.2) :=
rfl
#align perfect_closure.mk_mul_mk PerfectClosure.mk_mul_mk
@@ -254,8 +254,8 @@ instance : Inhabited (PerfectClosure K p) :=
⟨1⟩
private theorem add_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
- mk K p (x1.1 + y.1, (frobenius K p^[y.1]) x1.2 + (frobenius K p^[x1.1]) y.2) =
- mk K p (x2.1 + y.1, (frobenius K p^[y.1]) x2.2 + (frobenius K p^[x2.1]) y.2) :=
+ mk K p (x1.1 + y.1, (frobenius K p)^[y.1] x1.2 + (frobenius K p)^[x1.1] y.2) =
+ mk K p (x2.1 + y.1, (frobenius K p)^[y.1] x2.2 + (frobenius K p)^[x2.1] y.2) :=
match x1, x2, H with
| _, _, R.intro n x =>
Quot.sound <| by
@@ -264,8 +264,8 @@ private theorem add_aux_left (x1 x2 y : ℕ × K) (H : R K p x1 x2) :
apply R.intro
private theorem add_aux_right (x y1 y2 : ℕ × K) (H : R K p y1 y2) :
- mk K p (x.1 + y1.1, (frobenius K p^[y1.1]) x.2 + (frobenius K p^[x.1]) y1.2) =
- mk K p (x.1 + y2.1, (frobenius K p^[y2.1]) x.2 + (frobenius K p^[x.1]) y2.2) :=
+ mk K p (x.1 + y1.1, (frobenius K p)^[y1.1] x.2 + (frobenius K p)^[x.1] y1.2) =
+ mk K p (x.1 + y2.1, (frobenius K p)^[y2.1] x.2 + (frobenius K p)^[x.1] y2.2) :=
match y1, y2, H with
| _, _, R.intro n y =>
Quot.sound <| by
@@ -277,7 +277,7 @@ instance : Add (PerfectClosure K p) :=
(fun x : ℕ × K =>
Quot.lift
(fun y : ℕ × K =>
- mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 + (frobenius K p^[x.1]) y.2))
+ mk K p (x.1 + y.1, (frobenius K p)^[y.1] x.2 + (frobenius K p)^[x.1] y.2))
(add_aux_right K p x))
fun x1 x2 (H : R K p x1 x2) =>
funext fun e => Quot.inductionOn e fun y => add_aux_left K p x1 x2 y H⟩
@@ -285,7 +285,7 @@ instance : Add (PerfectClosure K p) :=
@[simp]
theorem mk_add_mk (x y : ℕ × K) :
mk K p x + mk K p y =
- mk K p (x.1 + y.1, (frobenius K p^[y.1]) x.2 + (frobenius K p^[x.1]) y.2) :=
+ mk K p (x.1 + y.1, (frobenius K p)^[y.1] x.2 + (frobenius K p)^[x.1] y.2) :=
rfl
#align perfect_closure.mk_add_mk PerfectClosure.mk_add_mk
@@ -323,7 +323,7 @@ theorem mk_zero (n : ℕ) : mk K p (n, 0) = 0 := by
#align perfect_closure.mk_zero PerfectClosure.mk_zero
-- Porting note: improved proof structure
-theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p^[m]) x = y) :
+theorem R.sound (m n : ℕ) (x y : K) (H : (frobenius K p)^[m] x = y) :
mk K p (n, x) = mk K p (m + n, y) := by
subst H
induction' m with m ih
@@ -392,7 +392,7 @@ instance PerfectClosure.commRing : CommRing (PerfectClosure K p) :=
add_mul, add_comm, add_left_comm] }
theorem eq_iff' (x y : ℕ × K) :
- mk K p x = mk K p y ↔ ∃ z, (frobenius K p^[y.1 + z]) x.2 = (frobenius K p^[x.1 + z]) y.2 := by
+ mk K p x = mk K p y ↔ ∃ z, (frobenius K p)^[y.1 + z] x.2 = (frobenius K p)^[x.1 + z] y.2 := by
constructor
· intro H
replace H := Quot.exact _ H
@@ -479,7 +479,7 @@ theorem of_apply (x : K) : of K p x = mk _ _ (0, x) :=
end Ring
theorem eq_iff [CommRing K] [IsDomain K] (p : ℕ) [Fact p.Prime] [CharP K p] (x y : ℕ × K) :
- Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p^[y.1]) x.2 = (frobenius K p^[x.1]) y.2 :=
+ Quot.mk (R K p) x = Quot.mk (R K p) y ↔ (frobenius K p)^[y.1] x.2 = (frobenius K p)^[x.1] y.2 :=
(eq_iff' K p x y).trans
⟨fun ⟨z, H⟩ => (frobenius_inj K p).iterate z <| by simpa only [add_comm, iterate_add] using H,
fun H => ⟨0, H⟩⟩
@@ -537,7 +537,7 @@ instance : PerfectRing (PerfectClosure K p) p where
exact (Quot.sound <| R.intro _ _).symm
theorem eq_pthRoot (x : ℕ × K) :
- mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) := by
+ mk K p x = (pthRoot (PerfectClosure K p) p)^[x.1] (of K p x.2) := by
rcases x with ⟨m, x⟩
induction' m with m ih
· rfl
@@ -551,7 +551,7 @@ def lift (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :
(K →+* L) ≃ (PerfectClosure K p →+* L) where
toFun f :=
{ toFun := by
- refine' fun e => liftOn e (fun x => (pthRoot L p^[x.1]) (f x.2)) _
+ refine' fun e => liftOn e (fun x => (pthRoot L p)^[x.1] (f x.2)) _
rintro a b ⟨n⟩
simp only [f.map_frobenius, iterate_succ_apply, pthRoot_frobenius],
map_one' := f.map_one,
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -514,7 +514,7 @@ instance : DivisionRing (PerfectClosure K p) :=
rw [mk_inv, mk_mul_mk]
refine (eq_iff K p _ _).2 ?_
simp only [(frobenius _ _).iterate_map_one, (frobenius K p).iterate_map_zero,
- iterate_zero_apply, ← (frobenius _ p).iterate_map_mul] at this⊢
+ iterate_zero_apply, ← (frobenius _ p).iterate_map_mul] at this ⊢
rw [mul_inv_cancel this, (frobenius _ _).iterate_map_one]
inv_zero := congr_arg (Quot.mk (R K p)) (by rw [inv_zero]) }
by
s! (#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 by
s".
@@ -536,8 +536,8 @@ instance : PerfectRing (PerfectClosure K p) p where
simp only [liftOn_mk, frobenius_mk]
exact (Quot.sound <| R.intro _ _).symm
-theorem eq_pthRoot (x : ℕ × K) : mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) :=
- by
+theorem eq_pthRoot (x : ℕ × K) :
+ mk K p x = (pthRoot (PerfectClosure K p) p^[x.1]) (of K p x.2) := by
rcases x with ⟨m, x⟩
induction' m with m ih
· rfl
The unported dependencies are