group_theory.perm.fin
⟷
Mathlib.GroupTheory.Perm.Fin
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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
@@ -131,7 +131,7 @@ theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
by
induction' n with n ih
· simp
- · rw [finRotate_succ_eq_decomposeFin]; simp [ih, pow_succ]
+ · rw [finRotate_succ_eq_decomposeFin]; simp [ih, pow_succ']
#align sign_fin_rotate sign_finRotate
-/
@@ -155,9 +155,9 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) :=
refine' ⟨0, by decide, fun x hx' => ⟨x, _⟩⟩
clear hx'
cases' x with x hx
- rw [coe_coe, zpow_coe_nat, Fin.ext_iff, Fin.val_mk]
+ rw [coe_coe, zpow_natCast, Fin.ext_iff, Fin.val_mk]
induction' x with x ih; · rfl
- rw [pow_succ, perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
+ rw [pow_succ', perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
exact ne_of_lt (Nat.lt_of_succ_lt_succ hx)
#align is_cycle_fin_rotate isCycle_finRotate
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -155,7 +155,7 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) :=
refine' ⟨0, by decide, fun x hx' => ⟨x, _⟩⟩
clear hx'
cases' x with x hx
- rw [coe_coe, zpow_ofNat, Fin.ext_iff, Fin.val_mk]
+ rw [coe_coe, zpow_coe_nat, Fin.ext_iff, Fin.val_mk]
induction' x with x ih; · rfl
rw [pow_succ, perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -328,14 +328,15 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
rcases lt_trichotomy j i with (hlt | heq | hgt)
· have : (j + 1).cast_succ = j.succ := by ext;
rw [coe_cast_succ, coe_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
- rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_below, this, swap_apply_of_ne_of_ne]
+ rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_of_castSucc_lt, this, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· exact (Fin.succ_injective _).Ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero']
+ · rw [HEq, Fin.cycleRange_self, Fin.succAbove_of_castSucc_lt, swap_apply_right,
+ Fin.castSucc_zero']
· rw [Fin.castSucc_zero']; apply Fin.succ_pos
- · rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
+ · rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_of_le_castSucc, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· apply (Fin.succ_injective _).Ne hgt.ne.symm
· simpa [Fin.le_iff_val_le_val] using hgt
@@ -348,8 +349,8 @@ theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
i.cycleRange (i.succAboveEmb j) = j.succ :=
by
cases' lt_or_ge j.cast_succ i with h h
- · rw [Fin.succAbove_below _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
- · rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (fin.le_cast_succ_iff.mp h)]
+ · rw [Fin.succAbove_of_castSucc_lt _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
+ · rw [Fin.succAbove_of_le_castSucc _ _ h, Fin.cycleRange_of_gt (fin.le_cast_succ_iff.mp h)]
#align fin.cycle_range_succ_above Fin.cycleRange_succAbove
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2021 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-/
-import Mathbin.GroupTheory.Perm.Cycle.Type
-import Mathbin.GroupTheory.Perm.Option
-import Mathbin.Logic.Equiv.Fin
-import Mathbin.Logic.Equiv.Fintype
+import GroupTheory.Perm.Cycle.Type
+import GroupTheory.Perm.Option
+import Logic.Equiv.Fin
+import Logic.Equiv.Fintype
#align_import group_theory.perm.fin from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -74,7 +74,7 @@ theorem Equiv.Perm.decomposeFin_symm_apply_succ {n : ℕ} (e : Perm (Fin n)) (p
@[simp]
theorem Equiv.Perm.decomposeFin_symm_apply_one {n : ℕ} (e : Perm (Fin (n + 1))) (p : Fin (n + 2)) :
Equiv.Perm.decomposeFin.symm (p, e) 1 = swap 0 p (e 0).succ := by
- rw [← Fin.succ_zero_eq_one, Equiv.Perm.decomposeFin_symm_apply_succ e p 0]
+ rw [← Fin.succ_zero_eq_one', Equiv.Perm.decomposeFin_symm_apply_succ e p 0]
#align equiv.perm.decompose_fin_symm_apply_one Equiv.Perm.decomposeFin_symm_apply_one
-/
@@ -333,8 +333,8 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· exact (Fin.succ_injective _).Ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
- · rw [Fin.castSucc_zero]; apply Fin.succ_pos
+ · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero']
+ · rw [Fin.castSucc_zero']; apply Fin.succ_pos
· rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· apply (Fin.succ_injective _).Ne hgt.ne.symm
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2021 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module group_theory.perm.fin
-! leanprover-community/mathlib commit 19cb3751e5e9b3d97adb51023949c50c13b5fdfd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.GroupTheory.Perm.Cycle.Type
import Mathbin.GroupTheory.Perm.Option
import Mathbin.Logic.Equiv.Fin
import Mathbin.Logic.Equiv.Fintype
+#align_import group_theory.perm.fin from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
+
/-!
# Permutations of `fin n`
mathlib commit https://github.com/leanprover-community/mathlib/commit/2fe465deb81bcd7ccafa065bb686888a82f15372
@@ -198,7 +198,7 @@ namespace Fin
/-- `fin.cycle_range i` is the cycle `(0 1 2 ... i)` leaving `(i+1 ... (n-1))` unchanged. -/
def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
(finRotate (i + 1)).extendDomain
- (Equiv.ofLeftInverse' (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding coe
+ (Equiv.ofLeftInverse' (Fin.castLEEmb (Nat.succ_le_of_lt i.is_lt)).toEmbedding coe
(by intro x; ext; simp))
#align fin.cycle_range Fin.cycleRange
-/
@@ -221,7 +221,7 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
· simp
have :
j =
- (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding
+ (Fin.castLEEmb (Nat.succ_le_of_lt i.is_lt)).toEmbedding
⟨j, lt_of_le_of_lt h (Nat.lt_succ_self i)⟩ :=
by simp
ext
@@ -324,7 +324,7 @@ theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1)
#print Fin.succAbove_cycleRange /-
@[simp]
theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
- i.succ.succAbove (i.cycleRange j) = swap 0 i.succ j.succ :=
+ i.succ.succAboveEmb (i.cycleRange j) = swap 0 i.succ j.succ :=
by
cases n
· rcases j with ⟨_, ⟨⟩⟩
@@ -336,8 +336,8 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· exact (Fin.succ_injective _).Ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSuccEmb_zero]
- · rw [Fin.castSuccEmb_zero]; apply Fin.succ_pos
+ · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
+ · rw [Fin.castSucc_zero]; apply Fin.succ_pos
· rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· apply (Fin.succ_injective _).Ne hgt.ne.symm
@@ -348,7 +348,7 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
#print Fin.cycleRange_succAbove /-
@[simp]
theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
- i.cycleRange (i.succAbove j) = j.succ :=
+ i.cycleRange (i.succAboveEmb j) = j.succ :=
by
cases' lt_or_ge j.cast_succ i with h h
· rw [Fin.succAbove_below _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
@@ -366,7 +366,7 @@ theorem cycleRange_symm_zero {n : ℕ} (i : Fin (n + 1)) : i.cycleRange.symm 0 =
#print Fin.cycleRange_symm_succ /-
@[simp]
theorem cycleRange_symm_succ {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
- i.cycleRange.symm j.succ = i.succAbove j :=
+ i.cycleRange.symm j.succ = i.succAboveEmb j :=
i.cycleRange.Injective (by simp)
#align fin.cycle_range_symm_succ Fin.cycleRange_symm_succ
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5dc6092d09e5e489106865241986f7f2ad28d4c8
@@ -336,8 +336,8 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· exact (Fin.succ_injective _).Ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
- · rw [Fin.castSucc_zero]; apply Fin.succ_pos
+ · rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSuccEmb_zero]
+ · rw [Fin.castSuccEmb_zero]; apply Fin.succ_pos
· rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· apply (Fin.succ_injective _).Ne hgt.ne.symm
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -81,12 +81,15 @@ theorem Equiv.Perm.decomposeFin_symm_apply_one {n : ℕ} (e : Perm (Fin (n + 1))
#align equiv.perm.decompose_fin_symm_apply_one Equiv.Perm.decomposeFin_symm_apply_one
-/
+#print Equiv.Perm.decomposeFin.symm_sign /-
@[simp]
theorem Equiv.Perm.decomposeFin.symm_sign {n : ℕ} (p : Fin (n + 1)) (e : Perm (Fin n)) :
Perm.sign (Equiv.Perm.decomposeFin.symm (p, e)) = ite (p = 0) 1 (-1) * Perm.sign e := by
refine' Fin.cases _ _ p <;> simp [Equiv.Perm.decomposeFin, Fin.succ_ne_zero]
#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_sign
+-/
+#print Finset.univ_perm_fin_succ /-
/-- The set of all permutations of `fin (n + 1)` can be constructed by augmenting the set of
permutations of `fin n` by each element of `fin (n + 1)` in turn. -/
theorem Finset.univ_perm_fin_succ {n : ℕ} :
@@ -95,6 +98,7 @@ theorem Finset.univ_perm_fin_succ {n : ℕ} :
Equiv.Perm.decomposeFin.symm.toEmbedding :=
(Finset.univ_map_equiv_to_embedding _).symm
#align finset.univ_perm_fin_succ Finset.univ_perm_fin_succ
+-/
section CycleRange
@@ -124,6 +128,7 @@ theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
#align fin_rotate_succ finRotate_succ_eq_decomposeFin
-/
+#print sign_finRotate /-
@[simp]
theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
by
@@ -131,16 +136,21 @@ theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
· simp
· rw [finRotate_succ_eq_decomposeFin]; simp [ih, pow_succ]
#align sign_fin_rotate sign_finRotate
+-/
+#print support_finRotate /-
@[simp]
theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ := by ext; simp
#align support_fin_rotate support_finRotate
+-/
+#print support_finRotate_of_le /-
theorem support_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : support (finRotate n) = Finset.univ :=
by
obtain ⟨m, rfl⟩ := exists_add_of_le h
rw [add_comm, support_finRotate]
#align support_fin_rotate_of_le support_finRotate_of_le
+-/
#print isCycle_finRotate /-
theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) :=
@@ -276,6 +286,7 @@ theorem cycleRange_apply {n : ℕ} (i j : Fin n.succ) :
#align fin.cycle_range_apply Fin.cycleRange_apply
-/
+#print Fin.cycleRange_zero /-
@[simp]
theorem cycleRange_zero (n : ℕ) : cycleRange (0 : Fin n.succ) = 1 :=
by
@@ -284,6 +295,7 @@ theorem cycleRange_zero (n : ℕ) : cycleRange (0 : Fin n.succ) = 1 :=
· simp
· rw [cycle_range_of_gt (Fin.succ_pos j), one_apply]
#align fin.cycle_range_zero Fin.cycleRange_zero
+-/
#print Fin.cycleRange_last /-
@[simp]
@@ -292,6 +304,7 @@ theorem cycleRange_last (n : ℕ) : cycleRange (last n) = finRotate (n + 1) := b
#align fin.cycle_range_last Fin.cycleRange_last
-/
+#print Fin.cycleRange_zero' /-
@[simp]
theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
by
@@ -299,12 +312,16 @@ theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
· cases h
exact cycle_range_zero n
#align fin.cycle_range_zero' Fin.cycleRange_zero'
+-/
+#print Fin.sign_cycleRange /-
@[simp]
theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1) ^ (i : ℕ) := by
simp [cycle_range]
#align fin.sign_cycle_range Fin.sign_cycleRange
+-/
+#print Fin.succAbove_cycleRange /-
@[simp]
theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
i.succ.succAbove (i.cycleRange j) = swap 0 i.succ j.succ :=
@@ -326,6 +343,7 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· apply (Fin.succ_injective _).Ne hgt.ne.symm
· simpa [Fin.le_iff_val_le_val] using hgt
#align fin.succ_above_cycle_range Fin.succAbove_cycleRange
+-/
#print Fin.cycleRange_succAbove /-
@[simp]
@@ -353,6 +371,7 @@ theorem cycleRange_symm_succ {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
#align fin.cycle_range_symm_succ Fin.cycleRange_symm_succ
-/
+#print Fin.isCycle_cycleRange /-
theorem isCycle_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) : IsCycle (cycleRange i) :=
by
cases' i with i hi
@@ -360,7 +379,9 @@ theorem isCycle_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) : IsCycle
· exact (h0 rfl).elim
exact is_cycle_fin_rotate.extend_domain _
#align fin.is_cycle_cycle_range Fin.isCycle_cycleRange
+-/
+#print Fin.cycleType_cycleRange /-
@[simp]
theorem cycleType_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) :
cycleType (cycleRange i) = {i + 1} :=
@@ -371,6 +392,7 @@ theorem cycleType_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) :
rw [cycle_range, cycle_type_extend_domain]
exact cycleType_finRotate
#align fin.cycle_type_cycle_range Fin.cycleType_cycleRange
+-/
#print Fin.isThreeCycle_cycleRange_two /-
theorem isThreeCycle_cycleRange_two {n : ℕ} : IsThreeCycle (cycleRange 2 : Perm (Fin (n + 3))) := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -236,8 +236,7 @@ theorem coe_cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
coe_add_one_of_lt
(calc
(j : ℕ) < i := fin.lt_iff_coe_lt_coe.mp (lt_of_le_of_ne h h')
- _ ≤ n := nat.lt_succ_iff.mp i.2
- )
+ _ ≤ n := nat.lt_succ_iff.mp i.2)
#align fin.coe_cycle_range_of_le Fin.coe_cycleRange_of_le
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -81,21 +81,12 @@ theorem Equiv.Perm.decomposeFin_symm_apply_one {n : ℕ} (e : Perm (Fin (n + 1))
#align equiv.perm.decompose_fin_symm_apply_one Equiv.Perm.decomposeFin_symm_apply_one
-/
-/- warning: equiv.perm.decompose_fin.symm_sign -> Equiv.Perm.decomposeFin.symm_sign is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_signₓ'. -/
@[simp]
theorem Equiv.Perm.decomposeFin.symm_sign {n : ℕ} (p : Fin (n + 1)) (e : Perm (Fin n)) :
Perm.sign (Equiv.Perm.decomposeFin.symm (p, e)) = ite (p = 0) 1 (-1) * Perm.sign e := by
refine' Fin.cases _ _ p <;> simp [Equiv.Perm.decomposeFin, Fin.succ_ne_zero]
#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_sign
-/- warning: finset.univ_perm_fin_succ -> Finset.univ_perm_fin_succ is a dubious translation:
-lean 3 declaration is
- forall {n : Nat}, Eq.{1} (Finset.{0} (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Finset.univ.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.fintype.{0, 0} (Fin (Nat.succ n)) (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (Fin.fintype (Nat.succ n)) (Fin.fintype (Nat.succ n)))) (Finset.map.{0, 0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.toEmbedding.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n))) (Finset.univ.{0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Prod.fintype.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) (Fin.fintype (Nat.succ n)) (Equiv.fintype.{0, 0} (Fin n) (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n) (Fin.fintype n)))))
-but is expected to have type
- forall {n : Nat}, Eq.{1} (Finset.{0} (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Finset.univ.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (equivFintype.{0, 0} (Fin (Nat.succ n)) (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (Fin.fintype (Nat.succ n)) (Fin.fintype (Nat.succ n)))) (Finset.map.{0, 0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.toEmbedding.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n))) (Finset.univ.{0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (instFintypeProd.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) (Fin.fintype (Nat.succ n)) (equivFintype.{0, 0} (Fin n) (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n) (Fin.fintype n)))))
-Case conversion may be inaccurate. Consider using '#align finset.univ_perm_fin_succ Finset.univ_perm_fin_succₓ'. -/
/-- The set of all permutations of `fin (n + 1)` can be constructed by augmenting the set of
permutations of `fin n` by each element of `fin (n + 1)` in turn. -/
theorem Finset.univ_perm_fin_succ {n : ℕ} :
@@ -133,9 +124,6 @@ theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
#align fin_rotate_succ finRotate_succ_eq_decomposeFin
-/
-/- warning: sign_fin_rotate -> sign_finRotate is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align sign_fin_rotate sign_finRotateₓ'. -/
@[simp]
theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
by
@@ -144,22 +132,10 @@ theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
· rw [finRotate_succ_eq_decomposeFin]; simp [ih, pow_succ]
#align sign_fin_rotate sign_finRotate
-/- warning: support_fin_rotate -> support_finRotate is a dubious translation:
-lean 3 declaration is
- forall {n : Nat}, Eq.{1} (Finset.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.support.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Finset.univ.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))
-but is expected to have type
- forall {n : Nat}, Eq.{1} (Finset.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (Equiv.Perm.support.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (Finset.univ.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))
-Case conversion may be inaccurate. Consider using '#align support_fin_rotate support_finRotateₓ'. -/
@[simp]
theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ := by ext; simp
#align support_fin_rotate support_finRotate
-/- warning: support_fin_rotate_of_le -> support_finRotate_of_le is a dubious translation:
-lean 3 declaration is
- forall {n : Nat}, (LE.le.{0} Nat Nat.hasLe (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) n) -> (Eq.{1} (Finset.{0} (Fin n)) (Equiv.Perm.support.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n) (finRotate n)) (Finset.univ.{0} (Fin n) (Fin.fintype n)))
-but is expected to have type
- forall {n : Nat}, (LE.le.{0} Nat instLENat (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) n) -> (Eq.{1} (Finset.{0} (Fin n)) (Equiv.Perm.support.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n) (finRotate n)) (Finset.univ.{0} (Fin n) (Fin.fintype n)))
-Case conversion may be inaccurate. Consider using '#align support_fin_rotate_of_le support_finRotate_of_leₓ'. -/
theorem support_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : support (finRotate n) = Finset.univ :=
by
obtain ⟨m, rfl⟩ := exists_add_of_le h
@@ -301,12 +277,6 @@ theorem cycleRange_apply {n : ℕ} (i j : Fin n.succ) :
#align fin.cycle_range_apply Fin.cycleRange_apply
-/
-/- warning: fin.cycle_range_zero -> Fin.cycleRange_zero is a dubious translation:
-lean 3 declaration is
- forall (n : Nat), Eq.{1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin.cycleRange (Nat.succ n) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n)))))) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) 1 (OfNat.mk.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) 1 (One.one.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (MulOneClass.toHasOne.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n))))))))))
-but is expected to have type
- forall (n : Nat), Eq.{1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin.cycleRange (Nat.succ n) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n)))) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) 1 (One.toOfNat1.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (InvOneClass.toOne.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvOneMonoid.toInvOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivisionMonoid.toDivInvOneMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivisionMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))))))
-Case conversion may be inaccurate. Consider using '#align fin.cycle_range_zero Fin.cycleRange_zeroₓ'. -/
@[simp]
theorem cycleRange_zero (n : ℕ) : cycleRange (0 : Fin n.succ) = 1 :=
by
@@ -323,12 +293,6 @@ theorem cycleRange_last (n : ℕ) : cycleRange (last n) = finRotate (n + 1) := b
#align fin.cycle_range_last Fin.cycleRange_last
-/
-/- warning: fin.cycle_range_zero' -> Fin.cycleRange_zero' is a dubious translation:
-lean 3 declaration is
- forall {n : Nat} (h : LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n), Eq.{1} (Equiv.Perm.{1} (Fin n)) (Fin.cycleRange n (Fin.mk n (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) h)) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin n)) 1 (OfNat.mk.{0} (Equiv.Perm.{1} (Fin n)) 1 (One.one.{0} (Equiv.Perm.{1} (Fin n)) (MulOneClass.toHasOne.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))))))
-but is expected to have type
- forall {n : Nat} (h : LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n), Eq.{1} (Equiv.Perm.{1} (Fin n)) (Fin.cycleRange n (Fin.mk n (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) h)) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin n)) 1 (One.toOfNat1.{0} (Equiv.Perm.{1} (Fin n)) (InvOneClass.toOne.{0} (Equiv.Perm.{1} (Fin n)) (DivInvOneMonoid.toInvOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivisionMonoid.toDivInvOneMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivisionMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))))))
-Case conversion may be inaccurate. Consider using '#align fin.cycle_range_zero' Fin.cycleRange_zero'ₓ'. -/
@[simp]
theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
by
@@ -337,23 +301,11 @@ theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
exact cycle_range_zero n
#align fin.cycle_range_zero' Fin.cycleRange_zero'
-/- warning: fin.sign_cycle_range -> Fin.sign_cycleRange is a dubious translation:
-lean 3 declaration is
- forall {n : Nat} (i : Fin n), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin n)) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} (Units.{0} Int Int.monoid) Nat (Units.{0} Int Int.monoid) (instHPow.{0, 0} (Units.{0} Int Int.monoid) Nat (Monoid.Pow.{0} (Units.{0} Int Int.monoid) (DivInvMonoid.toMonoid.{0} (Units.{0} Int Int.monoid) (Group.toDivInvMonoid.{0} (Units.{0} Int Int.monoid) (Units.group.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (Fin n) Nat (HasLiftT.mk.{1, 1} (Fin n) Nat (CoeTCₓ.coe.{1, 1} (Fin n) Nat (coeBase.{1, 1} (Fin n) Nat (Fin.coeToNat n)))) i))
-but is expected to have type
- forall {n : Nat} (i : Fin n), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Fin.val n i))
-Case conversion may be inaccurate. Consider using '#align fin.sign_cycle_range Fin.sign_cycleRangeₓ'. -/
@[simp]
theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1) ^ (i : ℕ) := by
simp [cycle_range]
#align fin.sign_cycle_range Fin.sign_cycleRange
-/- warning: fin.succ_above_cycle_range -> Fin.succAbove_cycleRange is a dubious translation:
-lean 3 declaration is
- forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (coeFn.{1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.hasLe n) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) (fun (_x : RelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) => (Fin n) -> (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (RelEmbedding.hasCoeToFun.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Fin.succAbove n (Fin.succ n i)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.{1, 1} (Fin n) (Fin n)) => (Fin n) -> (Fin n)) (Equiv.hasCoeToFun.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) => (Fin (Nat.succ n)) -> (Fin (Nat.succ n))) (Equiv.hasCoeToFun.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n))))) (Fin.succ n i)) (Fin.succ n j))
-but is expected to have type
- forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (InfHomClass.toFunLike.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Lattice.toInf.{0} (Fin n) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n)))) (Lattice.toInf.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n)) (LatticeHomClass.toInfHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (OrderHomClass.toLatticeHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLinearOrderFin n) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (RelEmbedding.instRelHomClassRelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))))) (Fin.succAbove n (Fin.succ n i)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
-Case conversion may be inaccurate. Consider using '#align fin.succ_above_cycle_range Fin.succAbove_cycleRangeₓ'. -/
@[simp]
theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
i.succ.succAbove (i.cycleRange j) = swap 0 i.succ j.succ :=
@@ -402,12 +354,6 @@ theorem cycleRange_symm_succ {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
#align fin.cycle_range_symm_succ Fin.cycleRange_symm_succ
-/
-/- warning: fin.is_cycle_cycle_range -> Fin.isCycle_cycleRange is a dubious translation:
-lean 3 declaration is
- forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) -> (Equiv.Perm.IsCycle.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) i))
-but is expected to have type
- forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) -> (Equiv.Perm.IsCycle.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) i))
-Case conversion may be inaccurate. Consider using '#align fin.is_cycle_cycle_range Fin.isCycle_cycleRangeₓ'. -/
theorem isCycle_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) : IsCycle (cycleRange i) :=
by
cases' i with i hi
@@ -416,12 +362,6 @@ theorem isCycle_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) : IsCycle
exact is_cycle_fin_rotate.extend_domain _
#align fin.is_cycle_cycle_range Fin.isCycle_cycleRange
-/- warning: fin.cycle_type_cycle_range -> Fin.cycleType_cycleRange is a dubious translation:
-lean 3 declaration is
- forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) -> (Eq.{1} (Multiset.{0} Nat) (Equiv.Perm.cycleType.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) a b) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) i)) (Singleton.singleton.{0, 0} Nat (Multiset.{0} Nat) (Multiset.hasSingleton.{0} Nat) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (HasLiftT.mk.{1, 1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (CoeTCₓ.coe.{1, 1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (coeBase.{1, 1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (Fin.coeToNat (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) i) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))
-but is expected to have type
- forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) -> (Eq.{1} (Multiset.{0} Nat) (Equiv.Perm.cycleType.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) a b) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) i)) (Singleton.singleton.{0, 0} Nat (Multiset.{0} Nat) (Multiset.instSingletonMultiset.{0} Nat) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fin.val (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) i) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))
-Case conversion may be inaccurate. Consider using '#align fin.cycle_type_cycle_range Fin.cycleType_cycleRangeₓ'. -/
@[simp]
theorem cycleType_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) :
cycleType (cycleRange i) = {i + 1} :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -141,8 +141,7 @@ theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
by
induction' n with n ih
· simp
- · rw [finRotate_succ_eq_decomposeFin]
- simp [ih, pow_succ]
+ · rw [finRotate_succ_eq_decomposeFin]; simp [ih, pow_succ]
#align sign_fin_rotate sign_finRotate
/- warning: support_fin_rotate -> support_finRotate is a dubious translation:
@@ -152,10 +151,7 @@ but is expected to have type
forall {n : Nat}, Eq.{1} (Finset.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (Equiv.Perm.support.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (Finset.univ.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))
Case conversion may be inaccurate. Consider using '#align support_fin_rotate support_finRotateₓ'. -/
@[simp]
-theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ :=
- by
- ext
- simp
+theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ := by ext; simp
#align support_fin_rotate support_finRotate
/- warning: support_fin_rotate_of_le -> support_finRotate_of_le is a dubious translation:
@@ -217,10 +213,7 @@ namespace Fin
def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
(finRotate (i + 1)).extendDomain
(Equiv.ofLeftInverse' (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding coe
- (by
- intro x
- ext
- simp))
+ (by intro x; ext; simp))
#align fin.cycle_range Fin.cycleRange
-/
@@ -262,8 +255,7 @@ theorem coe_cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
(cycleRange i j : ℕ) = if j = i then 0 else j + 1 :=
by
rw [cycle_range_of_le h]
- split_ifs with h'
- · rfl
+ split_ifs with h'; · rfl
exact
coe_add_one_of_lt
(calc
@@ -326,9 +318,7 @@ theorem cycleRange_zero (n : ℕ) : cycleRange (0 : Fin n.succ) = 1 :=
#print Fin.cycleRange_last /-
@[simp]
-theorem cycleRange_last (n : ℕ) : cycleRange (last n) = finRotate (n + 1) :=
- by
- ext i
+theorem cycleRange_last (n : ℕ) : cycleRange (last n) = finRotate (n + 1) := by ext i;
rw [coe_cycle_range_of_le (le_last _), coe_finRotate]
#align fin.cycle_range_last Fin.cycleRange_last
-/
@@ -371,8 +361,7 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
cases n
· rcases j with ⟨_, ⟨⟩⟩
rcases lt_trichotomy j i with (hlt | heq | hgt)
- · have : (j + 1).cast_succ = j.succ := by
- ext
+ · have : (j + 1).cast_succ = j.succ := by ext;
rw [coe_cast_succ, coe_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_below, this, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
@@ -380,8 +369,7 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
· rw [HEq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
- · rw [Fin.castSucc_zero]
- apply Fin.succ_pos
+ · rw [Fin.castSucc_zero]; apply Fin.succ_pos
· rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· apply (Fin.succ_injective _).Ne hgt.ne.symm
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -82,10 +82,7 @@ theorem Equiv.Perm.decomposeFin_symm_apply_one {n : ℕ} (e : Perm (Fin (n + 1))
-/
/- warning: equiv.perm.decompose_fin.symm_sign -> Equiv.Perm.decomposeFin.symm_sign is a dubious translation:
-lean 3 declaration is
- forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (Nat.succ n))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (coeFn.{1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (fun (_x : Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) => (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) -> (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.hasCoeToFun.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} (Units.{0} Int Int.monoid) (Units.{0} Int Int.monoid) (Units.{0} Int Int.monoid) (instHMul.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasMul.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))) (ite.{1} (Units.{0} Int Int.monoid) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) (Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))))))) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin n)) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n)) e))
-but is expected to have type
- forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.Perm.{1} (Fin (Nat.succ n))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (_x : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) _x) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) e) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (instHMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (MulOneClass.toMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt))) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) e))
+<too large>
Case conversion may be inaccurate. Consider using '#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_signₓ'. -/
@[simp]
theorem Equiv.Perm.decomposeFin.symm_sign {n : ℕ} (p : Fin (n + 1)) (e : Perm (Fin n)) :
@@ -137,10 +134,7 @@ theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
-/
/- warning: sign_fin_rotate -> sign_finRotate is a dubious translation:
-lean 3 declaration is
- forall (n : Nat), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (HPow.hPow.{0, 0, 0} (Units.{0} Int Int.monoid) Nat (Units.{0} Int Int.monoid) (instHPow.{0, 0} (Units.{0} Int Int.monoid) Nat (Monoid.Pow.{0} (Units.{0} Int Int.monoid) (DivInvMonoid.toMonoid.{0} (Units.{0} Int Int.monoid) (Group.toDivInvMonoid.{0} (Units.{0} Int Int.monoid) (Units.group.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) n)
-but is expected to have type
- forall (n : Nat), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (fun (_x : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) n)
+<too large>
Case conversion may be inaccurate. Consider using '#align sign_fin_rotate sign_finRotateₓ'. -/
@[simp]
theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -85,7 +85,7 @@ theorem Equiv.Perm.decomposeFin_symm_apply_one {n : ℕ} (e : Perm (Fin (n + 1))
lean 3 declaration is
forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (Nat.succ n))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (coeFn.{1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (fun (_x : Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) => (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) -> (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.hasCoeToFun.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} (Units.{0} Int Int.monoid) (Units.{0} Int Int.monoid) (Units.{0} Int Int.monoid) (instHMul.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasMul.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))) (ite.{1} (Units.{0} Int Int.monoid) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) (Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))))))) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin n)) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n)) e))
but is expected to have type
- forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.Perm.{1} (Fin (Nat.succ n))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (_x : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) _x) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) e) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (instHMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (MulOneClass.toMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt))) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) e))
+ forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.Perm.{1} (Fin (Nat.succ n))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (_x : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) _x) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) e) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (instHMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (MulOneClass.toMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt))) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) e))
Case conversion may be inaccurate. Consider using '#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_signₓ'. -/
@[simp]
theorem Equiv.Perm.decomposeFin.symm_sign {n : ℕ} (p : Fin (n + 1)) (e : Perm (Fin n)) :
@@ -140,7 +140,7 @@ theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
lean 3 declaration is
forall (n : Nat), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (HPow.hPow.{0, 0, 0} (Units.{0} Int Int.monoid) Nat (Units.{0} Int Int.monoid) (instHPow.{0, 0} (Units.{0} Int Int.monoid) Nat (Monoid.Pow.{0} (Units.{0} Int Int.monoid) (DivInvMonoid.toMonoid.{0} (Units.{0} Int Int.monoid) (Group.toDivInvMonoid.{0} (Units.{0} Int Int.monoid) (Units.group.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) n)
but is expected to have type
- forall (n : Nat), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (fun (_x : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) n)
+ forall (n : Nat), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (fun (_x : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) n)
Case conversion may be inaccurate. Consider using '#align sign_fin_rotate sign_finRotateₓ'. -/
@[simp]
theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
@@ -357,7 +357,7 @@ theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
lean 3 declaration is
forall {n : Nat} (i : Fin n), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin n)) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} (Units.{0} Int Int.monoid) Nat (Units.{0} Int Int.monoid) (instHPow.{0, 0} (Units.{0} Int Int.monoid) Nat (Monoid.Pow.{0} (Units.{0} Int Int.monoid) (DivInvMonoid.toMonoid.{0} (Units.{0} Int Int.monoid) (Group.toDivInvMonoid.{0} (Units.{0} Int Int.monoid) (Units.group.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (Fin n) Nat (HasLiftT.mk.{1, 1} (Fin n) Nat (CoeTCₓ.coe.{1, 1} (Fin n) Nat (coeBase.{1, 1} (Fin n) Nat (Fin.coeToNat n)))) i))
but is expected to have type
- forall {n : Nat} (i : Fin n), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Fin.val n i))
+ forall {n : Nat} (i : Fin n), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Fin.val n i))
Case conversion may be inaccurate. Consider using '#align fin.sign_cycle_range Fin.sign_cycleRangeₓ'. -/
@[simp]
theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1) ^ (i : ℕ) := by
@@ -368,7 +368,7 @@ theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1)
lean 3 declaration is
forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (coeFn.{1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.hasLe n) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) (fun (_x : RelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) => (Fin n) -> (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (RelEmbedding.hasCoeToFun.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Fin.succAbove n (Fin.succ n i)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.{1, 1} (Fin n) (Fin n)) => (Fin n) -> (Fin n)) (Equiv.hasCoeToFun.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) => (Fin (Nat.succ n)) -> (Fin (Nat.succ n))) (Equiv.hasCoeToFun.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n))))) (Fin.succ n i)) (Fin.succ n j))
but is expected to have type
- forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (InfHomClass.toFunLike.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Lattice.toInf.{0} (Fin n) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n)))) (Lattice.toInf.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n)) (LatticeHomClass.toInfHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (OrderHomClass.toLatticeHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLinearOrderFin n) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (RelEmbedding.instRelHomClassRelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))))) (Fin.succAbove n (Fin.succ n i)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
+ forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (InfHomClass.toFunLike.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Lattice.toInf.{0} (Fin n) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n)))) (Lattice.toInf.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n)) (LatticeHomClass.toInfHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (OrderHomClass.toLatticeHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLinearOrderFin n) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (RelEmbedding.instRelHomClassRelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.684 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.682 x._@.Mathlib.Order.Hom.Basic._hyg.684) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.699 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.697 x._@.Mathlib.Order.Hom.Basic._hyg.699))))) (Fin.succAbove n (Fin.succ n i)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
Case conversion may be inaccurate. Consider using '#align fin.succ_above_cycle_range Fin.succAbove_cycleRangeₓ'. -/
@[simp]
theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -366,7 +366,7 @@ theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1)
/- warning: fin.succ_above_cycle_range -> Fin.succAbove_cycleRange is a dubious translation:
lean 3 declaration is
- forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (coeFn.{1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.hasLe n) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) (fun (_x : RelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) => (Fin n) -> (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (RelEmbedding.hasCoeToFun.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Fin.succAbove n (Fin.succ n i)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.{1, 1} (Fin n) (Fin n)) => (Fin n) -> (Fin n)) (Equiv.hasCoeToFun.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) => (Fin (Nat.succ n)) -> (Fin (Nat.succ n))) (Equiv.hasCoeToFun.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n))))) (Fin.succ n i)) (Fin.succ n j))
+ forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (coeFn.{1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.hasLe n) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) (fun (_x : RelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) => (Fin n) -> (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (RelEmbedding.hasCoeToFun.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toHasLe.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Fin.succAbove n (Fin.succ n i)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.{1, 1} (Fin n) (Fin n)) => (Fin n) -> (Fin n)) (Equiv.hasCoeToFun.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) => (Fin (Nat.succ n)) -> (Fin (Nat.succ n))) (Equiv.hasCoeToFun.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n))))) (Fin.succ n i)) (Fin.succ n j))
but is expected to have type
forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (InfHomClass.toFunLike.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Lattice.toInf.{0} (Fin n) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n)))) (Lattice.toInf.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n)) (LatticeHomClass.toInfHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (OrderHomClass.toLatticeHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLinearOrderFin n) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (RelEmbedding.instRelHomClassRelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))))) (Fin.succAbove n (Fin.succ n i)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
Case conversion may be inaccurate. Consider using '#align fin.succ_above_cycle_range Fin.succAbove_cycleRangeₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/730c6d4cab72b9d84fcfb9e95e8796e9cd8f40ba
@@ -254,7 +254,7 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
ext
rw [this, cycle_range, of_left_inverse'_eq_of_injective, ←
Function.Embedding.toEquivRange_eq_ofInjective, ← via_fintype_embedding,
- via_fintype_embedding_apply_image, RelEmbedding.coeFn_toEmbedding, coe_cast_le, coe_finRotate]
+ via_fintype_embedding_apply_image, RelEmbedding.coe_toEmbedding, coe_cast_le, coe_finRotate]
simp only [Fin.ext_iff, coe_last, coe_mk, coe_zero, Fin.eta, apply_ite coe, cast_le_mk]
split_ifs with heq
· rfl
@@ -368,7 +368,7 @@ theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1)
lean 3 declaration is
forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (coeFn.{1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.hasLe n) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) (fun (_x : RelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) => (Fin n) -> (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (RelEmbedding.hasCoeToFun.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Fin.succAbove n (Fin.succ n i)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.{1, 1} (Fin n) (Fin n)) => (Fin n) -> (Fin n)) (Equiv.hasCoeToFun.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) => (Fin (Nat.succ n)) -> (Fin (Nat.succ n))) (Equiv.hasCoeToFun.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n))))) (Fin.succ n i)) (Fin.succ n j))
but is expected to have type
- forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Function.Embedding.{1, 1} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (EmbeddingLike.toFunLike.{1, 1, 1} (Function.Embedding.{1, 1} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Function.instEmbeddingLikeEmbedding.{1, 1} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (RelEmbedding.toEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (Fin.succAbove n (Fin.succ n i))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
+ forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Order.Hom.Lattice._hyg.494 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (InfHomClass.toFunLike.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Lattice.toInf.{0} (Fin n) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n)))) (Lattice.toInf.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n)) (LatticeHomClass.toInfHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (DistribLattice.toLattice.{0} (Fin n) (instDistribLattice.{0} (Fin n) (Fin.instLinearOrderFin n))) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (OrderHomClass.toLatticeHomClass.{0, 0, 0} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin n) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.instLinearOrderFin n) (Fin.instLatticeFinHAddNatInstHAddInstAddNatOfNat n) (RelEmbedding.instRelHomClassRelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697))))) (Fin.succAbove n (Fin.succ n i)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
Case conversion may be inaccurate. Consider using '#align fin.succ_above_cycle_range Fin.succAbove_cycleRangeₓ'. -/
@[simp]
theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65
@@ -222,7 +222,7 @@ namespace Fin
/-- `fin.cycle_range i` is the cycle `(0 1 2 ... i)` leaving `(i+1 ... (n-1))` unchanged. -/
def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
(finRotate (i + 1)).extendDomain
- (Equiv.ofLeftInverse' (Fin.castLe (Nat.succ_le_of_lt i.is_lt)).toEmbedding coe
+ (Equiv.ofLeftInverse' (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding coe
(by
intro x
ext
@@ -248,7 +248,7 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
· simp
have :
j =
- (Fin.castLe (Nat.succ_le_of_lt i.is_lt)).toEmbedding
+ (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding
⟨j, lt_of_le_of_lt h (Nat.lt_succ_self i)⟩ :=
by simp
ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/284fdd2962e67d2932fa3a79ce19fcf92d38e228
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
! This file was ported from Lean 3 source module group_theory.perm.fin
-! leanprover-community/mathlib commit 7e1c1263b6a25eb90bf16e80d8f47a657e403c4c
+! leanprover-community/mathlib commit 19cb3751e5e9b3d97adb51023949c50c13b5fdfd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.Logic.Equiv.Fintype
/-!
# Permutations of `fin n`
+
+> 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/5ec62c8106221a3f9160e4e4fcc3eed79fe213e9
@@ -20,6 +20,7 @@ import Mathbin.Logic.Equiv.Fintype
open Equiv
+#print Equiv.Perm.decomposeFin /-
/-- Permutations of `fin (n + 1)` are equivalent to fixing a single
`fin (n + 1)` and permuting the remaining with a `perm (fin n)`.
The fixed `fin (n + 1)` is swapped with `0`. -/
@@ -27,24 +28,32 @@ def Equiv.Perm.decomposeFin {n : ℕ} : Perm (Fin n.succ) ≃ Fin n.succ × Perm
((Equiv.permCongr <| finSuccEquiv n).trans Equiv.Perm.decomposeOption).trans
(Equiv.prodCongr (finSuccEquiv n).symm (Equiv.refl _))
#align equiv.perm.decompose_fin Equiv.Perm.decomposeFin
+-/
+#print Equiv.Perm.decomposeFin_symm_of_refl /-
@[simp]
theorem Equiv.Perm.decomposeFin_symm_of_refl {n : ℕ} (p : Fin (n + 1)) :
Equiv.Perm.decomposeFin.symm (p, Equiv.refl _) = swap 0 p := by
simp [Equiv.Perm.decomposeFin, Equiv.permCongr_def]
#align equiv.perm.decompose_fin_symm_of_refl Equiv.Perm.decomposeFin_symm_of_refl
+-/
+#print Equiv.Perm.decomposeFin_symm_of_one /-
@[simp]
theorem Equiv.Perm.decomposeFin_symm_of_one {n : ℕ} (p : Fin (n + 1)) :
Equiv.Perm.decomposeFin.symm (p, 1) = swap 0 p :=
Equiv.Perm.decomposeFin_symm_of_refl p
#align equiv.perm.decompose_fin_symm_of_one Equiv.Perm.decomposeFin_symm_of_one
+-/
+#print Equiv.Perm.decomposeFin_symm_apply_zero /-
@[simp]
theorem Equiv.Perm.decomposeFin_symm_apply_zero {n : ℕ} (p : Fin (n + 1)) (e : Perm (Fin n)) :
Equiv.Perm.decomposeFin.symm (p, e) 0 = p := by simp [Equiv.Perm.decomposeFin]
#align equiv.perm.decompose_fin_symm_apply_zero Equiv.Perm.decomposeFin_symm_apply_zero
+-/
+#print Equiv.Perm.decomposeFin_symm_apply_succ /-
@[simp]
theorem Equiv.Perm.decomposeFin_symm_apply_succ {n : ℕ} (e : Perm (Fin n)) (p : Fin (n + 1))
(x : Fin n) : Equiv.Perm.decomposeFin.symm (p, e) x.succ = swap 0 p (e x).succ :=
@@ -59,19 +68,34 @@ theorem Equiv.Perm.decomposeFin_symm_apply_succ {n : ℕ} (e : Perm (Fin n)) (p
simp [h, h'', Fin.succ_ne_zero, Equiv.Perm.decomposeFin, EquivFunctor.map,
swap_apply_of_ne_of_ne, swap_apply_of_ne_of_ne (Option.some_ne_none (e x)) h']
#align equiv.perm.decompose_fin_symm_apply_succ Equiv.Perm.decomposeFin_symm_apply_succ
+-/
+#print Equiv.Perm.decomposeFin_symm_apply_one /-
@[simp]
theorem Equiv.Perm.decomposeFin_symm_apply_one {n : ℕ} (e : Perm (Fin (n + 1))) (p : Fin (n + 2)) :
Equiv.Perm.decomposeFin.symm (p, e) 1 = swap 0 p (e 0).succ := by
rw [← Fin.succ_zero_eq_one, Equiv.Perm.decomposeFin_symm_apply_succ e p 0]
#align equiv.perm.decompose_fin_symm_apply_one Equiv.Perm.decomposeFin_symm_apply_one
+-/
+/- warning: equiv.perm.decompose_fin.symm_sign -> Equiv.Perm.decomposeFin.symm_sign is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (Nat.succ n))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (coeFn.{1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (fun (_x : Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) => (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) -> (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.hasCoeToFun.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} (Units.{0} Int Int.monoid) (Units.{0} Int Int.monoid) (Units.{0} Int Int.monoid) (instHMul.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasMul.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))) (ite.{1} (Units.{0} Int Int.monoid) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) (Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid))))))) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin n)) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n)) e))
+but is expected to have type
+ forall {n : Nat} (p : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (e : Equiv.Perm.{1} (Fin n)), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.Perm.{1} (Fin (Nat.succ n))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (Fin.fintype (Nat.succ n))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (_x : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) _x) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (HMul.hMul.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) e) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (instHMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (MulOneClass.toMul.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt))) (ite.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) p (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (Nat.succ n))) => Units.{0} Int Int.instMonoidInt) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (fun (a : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) => Equiv.Perm.{1} (Fin (Nat.succ n))) a) (Equiv.instFunLikeEquiv.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n)) (Prod.mk.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) p e))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt)))))))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) e))
+Case conversion may be inaccurate. Consider using '#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_signₓ'. -/
@[simp]
theorem Equiv.Perm.decomposeFin.symm_sign {n : ℕ} (p : Fin (n + 1)) (e : Perm (Fin n)) :
Perm.sign (Equiv.Perm.decomposeFin.symm (p, e)) = ite (p = 0) 1 (-1) * Perm.sign e := by
refine' Fin.cases _ _ p <;> simp [Equiv.Perm.decomposeFin, Fin.succ_ne_zero]
#align equiv.perm.decompose_fin.symm_sign Equiv.Perm.decomposeFin.symm_sign
+/- warning: finset.univ_perm_fin_succ -> Finset.univ_perm_fin_succ is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat}, Eq.{1} (Finset.{0} (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Finset.univ.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.fintype.{0, 0} (Fin (Nat.succ n)) (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (Fin.fintype (Nat.succ n)) (Fin.fintype (Nat.succ n)))) (Finset.map.{0, 0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.toEmbedding.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n))) (Finset.univ.{0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Prod.fintype.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) (Fin.fintype (Nat.succ n)) (Equiv.fintype.{0, 0} (Fin n) (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n) (Fin.fintype n)))))
+but is expected to have type
+ forall {n : Nat}, Eq.{1} (Finset.{0} (Equiv.Perm.{1} (Fin (Nat.succ n)))) (Finset.univ.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (equivFintype.{0, 0} (Fin (Nat.succ n)) (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (Fin.fintype (Nat.succ n)) (Fin.fintype (Nat.succ n)))) (Finset.map.{0, 0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.toEmbedding.{1, 1} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.symm.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (Equiv.Perm.decomposeFin n))) (Finset.univ.{0} (Prod.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n))) (instFintypeProd.{0, 0} (Fin (Nat.succ n)) (Equiv.Perm.{1} (Fin n)) (Fin.fintype (Nat.succ n)) (equivFintype.{0, 0} (Fin n) (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n) (Fin.fintype n)))))
+Case conversion may be inaccurate. Consider using '#align finset.univ_perm_fin_succ Finset.univ_perm_fin_succₓ'. -/
/-- The set of all permutations of `fin (n + 1)` can be constructed by augmenting the set of
permutations of `fin n` by each element of `fin (n + 1)` in turn. -/
theorem Finset.univ_perm_fin_succ {n : ℕ} :
@@ -91,8 +115,9 @@ Define the permutations `fin.cycle_range i`, the cycle `(0 1 2 ... i)`.
open Equiv.Perm
-#print finRotate_succ /-
-theorem finRotate_succ {n : ℕ} : finRotate n.succ = decomposeFin.symm (1, finRotate n) :=
+#print finRotate_succ_eq_decomposeFin /-
+theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
+ finRotate n.succ = decomposeFin.symm (1, finRotate n) :=
by
ext i
cases n; · simp
@@ -105,18 +130,30 @@ theorem finRotate_succ {n : ℕ} : finRotate n.succ = decomposeFin.symm (1, finR
rw [Fin.val_succ, Function.Injective.map_swap Fin.val_injective, Fin.val_succ, coe_finRotate,
if_neg h, Fin.val_zero, Fin.val_one,
swap_apply_of_ne_of_ne (Nat.succ_ne_zero _) (Nat.succ_succ_ne_one _)]
-#align fin_rotate_succ finRotate_succ
+#align fin_rotate_succ finRotate_succ_eq_decomposeFin
-/
+/- warning: sign_fin_rotate -> sign_finRotate is a dubious translation:
+lean 3 declaration is
+ forall (n : Nat), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (HPow.hPow.{0, 0, 0} (Units.{0} Int Int.monoid) Nat (Units.{0} Int Int.monoid) (instHPow.{0, 0} (Units.{0} Int Int.monoid) Nat (Monoid.Pow.{0} (Units.{0} Int Int.monoid) (DivInvMonoid.toMonoid.{0} (Units.{0} Int Int.monoid) (Group.toDivInvMonoid.{0} (Units.{0} Int Int.monoid) (Units.group.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) n)
+but is expected to have type
+ forall (n : Nat), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (fun (_x : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Equiv.Perm.permGroup.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) => Units.{0} Int Int.instMonoidInt) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) n)
+Case conversion may be inaccurate. Consider using '#align sign_fin_rotate sign_finRotateₓ'. -/
@[simp]
theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
by
induction' n with n ih
· simp
- · rw [finRotate_succ]
+ · rw [finRotate_succ_eq_decomposeFin]
simp [ih, pow_succ]
#align sign_fin_rotate sign_finRotate
+/- warning: support_fin_rotate -> support_finRotate is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat}, Eq.{1} (Finset.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Equiv.Perm.support.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))))) (Finset.univ.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))))
+but is expected to have type
+ forall {n : Nat}, Eq.{1} (Finset.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (Equiv.Perm.support.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) a b) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (finRotate (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))))) (Finset.univ.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))))
+Case conversion may be inaccurate. Consider using '#align support_fin_rotate support_finRotateₓ'. -/
@[simp]
theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ :=
by
@@ -124,12 +161,19 @@ theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ
simp
#align support_fin_rotate support_finRotate
+/- warning: support_fin_rotate_of_le -> support_finRotate_of_le is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat}, (LE.le.{0} Nat Nat.hasLe (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) n) -> (Eq.{1} (Finset.{0} (Fin n)) (Equiv.Perm.support.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n) (finRotate n)) (Finset.univ.{0} (Fin n) (Fin.fintype n)))
+but is expected to have type
+ forall {n : Nat}, (LE.le.{0} Nat instLENat (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) n) -> (Eq.{1} (Finset.{0} (Fin n)) (Equiv.Perm.support.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n) (finRotate n)) (Finset.univ.{0} (Fin n) (Fin.fintype n)))
+Case conversion may be inaccurate. Consider using '#align support_fin_rotate_of_le support_finRotate_of_leₓ'. -/
theorem support_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : support (finRotate n) = Finset.univ :=
by
obtain ⟨m, rfl⟩ := exists_add_of_le h
rw [add_comm, support_finRotate]
#align support_fin_rotate_of_le support_finRotate_of_le
+#print isCycle_finRotate /-
theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) :=
by
refine' ⟨0, by decide, fun x hx' => ⟨x, _⟩⟩
@@ -141,29 +185,37 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) :=
rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
exact ne_of_lt (Nat.lt_of_succ_lt_succ hx)
#align is_cycle_fin_rotate isCycle_finRotate
+-/
+#print isCycle_finRotate_of_le /-
theorem isCycle_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : IsCycle (finRotate n) :=
by
obtain ⟨m, rfl⟩ := exists_add_of_le h
rw [add_comm]
exact isCycle_finRotate
#align is_cycle_fin_rotate_of_le isCycle_finRotate_of_le
+-/
+#print cycleType_finRotate /-
@[simp]
theorem cycleType_finRotate {n : ℕ} : cycleType (finRotate (n + 2)) = {n + 2} :=
by
rw [is_cycle_fin_rotate.cycle_type, support_finRotate, ← Fintype.card, Fintype.card_fin]
rfl
#align cycle_type_fin_rotate cycleType_finRotate
+-/
+#print cycleType_finRotate_of_le /-
theorem cycleType_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : cycleType (finRotate n) = {n} :=
by
obtain ⟨m, rfl⟩ := exists_add_of_le h
rw [add_comm, cycleType_finRotate]
#align cycle_type_fin_rotate_of_le cycleType_finRotate_of_le
+-/
namespace Fin
+#print Fin.cycleRange /-
/-- `fin.cycle_range i` is the cycle `(0 1 2 ... i)` leaving `(i+1 ... (n-1))` unchanged. -/
def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
(finRotate (i + 1)).extendDomain
@@ -173,7 +225,9 @@ def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
ext
simp))
#align fin.cycle_range Fin.cycleRange
+-/
+#print Fin.cycleRange_of_gt /-
theorem cycleRange_of_gt {n : ℕ} {i j : Fin n.succ} (h : i < j) : cycleRange i j = j :=
by
rw [cycle_range, of_left_inverse'_eq_of_injective, ←
@@ -181,7 +235,9 @@ theorem cycleRange_of_gt {n : ℕ} {i j : Fin n.succ} (h : i < j) : cycleRange i
via_fintype_embedding_apply_not_mem_range]
simpa
#align fin.cycle_range_of_gt Fin.cycleRange_of_gt
+-/
+#print Fin.cycleRange_of_le /-
theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
cycleRange i j = if j = i then 0 else j + 1 :=
by
@@ -202,7 +258,9 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
· rw [Fin.val_add_one_of_lt]
exact lt_of_lt_of_le (lt_of_le_of_ne h (mt (congr_arg coe) HEq)) (le_last i)
#align fin.cycle_range_of_le Fin.cycleRange_of_le
+-/
+#print Fin.coe_cycleRange_of_le /-
theorem coe_cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
(cycleRange i j : ℕ) = if j = i then 0 else j + 1 :=
by
@@ -216,24 +274,34 @@ theorem coe_cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
_ ≤ n := nat.lt_succ_iff.mp i.2
)
#align fin.coe_cycle_range_of_le Fin.coe_cycleRange_of_le
+-/
+#print Fin.cycleRange_of_lt /-
theorem cycleRange_of_lt {n : ℕ} {i j : Fin n.succ} (h : j < i) : cycleRange i j = j + 1 := by
rw [cycle_range_of_le h.le, if_neg h.ne]
#align fin.cycle_range_of_lt Fin.cycleRange_of_lt
+-/
+#print Fin.coe_cycleRange_of_lt /-
theorem coe_cycleRange_of_lt {n : ℕ} {i j : Fin n.succ} (h : j < i) :
(cycleRange i j : ℕ) = j + 1 := by rw [coe_cycle_range_of_le h.le, if_neg h.ne]
#align fin.coe_cycle_range_of_lt Fin.coe_cycleRange_of_lt
+-/
+#print Fin.cycleRange_of_eq /-
theorem cycleRange_of_eq {n : ℕ} {i j : Fin n.succ} (h : j = i) : cycleRange i j = 0 := by
rw [cycle_range_of_le h.le, if_pos h]
#align fin.cycle_range_of_eq Fin.cycleRange_of_eq
+-/
+#print Fin.cycleRange_self /-
@[simp]
theorem cycleRange_self {n : ℕ} (i : Fin n.succ) : cycleRange i i = 0 :=
cycleRange_of_eq rfl
#align fin.cycle_range_self Fin.cycleRange_self
+-/
+#print Fin.cycleRange_apply /-
theorem cycleRange_apply {n : ℕ} (i j : Fin n.succ) :
cycleRange i j = if j < i then j + 1 else if j = i then 0 else j :=
by
@@ -242,7 +310,14 @@ theorem cycleRange_apply {n : ℕ} (i j : Fin n.succ) :
· exact cycle_range_of_eq h₂
· exact cycle_range_of_gt (lt_of_le_of_ne (le_of_not_gt h₁) (Ne.symm h₂))
#align fin.cycle_range_apply Fin.cycleRange_apply
+-/
+/- warning: fin.cycle_range_zero -> Fin.cycleRange_zero is a dubious translation:
+lean 3 declaration is
+ forall (n : Nat), Eq.{1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin.cycleRange (Nat.succ n) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n)))))) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) 1 (OfNat.mk.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) 1 (One.one.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (MulOneClass.toHasOne.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n))))))))))
+but is expected to have type
+ forall (n : Nat), Eq.{1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin.cycleRange (Nat.succ n) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n)))) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) 1 (One.toOfNat1.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (InvOneClass.toOne.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivInvOneMonoid.toInvOneClass.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (DivisionMonoid.toDivInvOneMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Group.toDivisionMonoid.{0} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Equiv.Perm.permGroup.{0} (Fin (Nat.succ n)))))))))
+Case conversion may be inaccurate. Consider using '#align fin.cycle_range_zero Fin.cycleRange_zeroₓ'. -/
@[simp]
theorem cycleRange_zero (n : ℕ) : cycleRange (0 : Fin n.succ) = 1 :=
by
@@ -252,13 +327,21 @@ theorem cycleRange_zero (n : ℕ) : cycleRange (0 : Fin n.succ) = 1 :=
· rw [cycle_range_of_gt (Fin.succ_pos j), one_apply]
#align fin.cycle_range_zero Fin.cycleRange_zero
+#print Fin.cycleRange_last /-
@[simp]
theorem cycleRange_last (n : ℕ) : cycleRange (last n) = finRotate (n + 1) :=
by
ext i
rw [coe_cycle_range_of_le (le_last _), coe_finRotate]
#align fin.cycle_range_last Fin.cycleRange_last
+-/
+/- warning: fin.cycle_range_zero' -> Fin.cycleRange_zero' is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat} (h : LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n), Eq.{1} (Equiv.Perm.{1} (Fin n)) (Fin.cycleRange n (Fin.mk n (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) h)) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin n)) 1 (OfNat.mk.{0} (Equiv.Perm.{1} (Fin n)) 1 (One.one.{0} (Equiv.Perm.{1} (Fin n)) (MulOneClass.toHasOne.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))))))
+but is expected to have type
+ forall {n : Nat} (h : LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n), Eq.{1} (Equiv.Perm.{1} (Fin n)) (Fin.cycleRange n (Fin.mk n (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) h)) (OfNat.ofNat.{0} (Equiv.Perm.{1} (Fin n)) 1 (One.toOfNat1.{0} (Equiv.Perm.{1} (Fin n)) (InvOneClass.toOne.{0} (Equiv.Perm.{1} (Fin n)) (DivInvOneMonoid.toInvOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivisionMonoid.toDivInvOneMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivisionMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))))))
+Case conversion may be inaccurate. Consider using '#align fin.cycle_range_zero' Fin.cycleRange_zero'ₓ'. -/
@[simp]
theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
by
@@ -267,11 +350,23 @@ theorem cycleRange_zero' {n : ℕ} (h : 0 < n) : cycleRange ⟨0, h⟩ = 1 :=
exact cycle_range_zero n
#align fin.cycle_range_zero' Fin.cycleRange_zero'
+/- warning: fin.sign_cycle_range -> Fin.sign_cycleRange is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat} (i : Fin n), Eq.{1} (Units.{0} Int Int.monoid) (coeFn.{1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (fun (_x : MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) => (Equiv.Perm.{1} (Fin n)) -> (Units.{0} Int Int.monoid)) (MonoidHom.hasCoeToFun.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.monoid) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.mulOneClass.{0} Int Int.monoid)) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => Fin.decidableEq n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} (Units.{0} Int Int.monoid) Nat (Units.{0} Int Int.monoid) (instHPow.{0, 0} (Units.{0} Int Int.monoid) Nat (Monoid.Pow.{0} (Units.{0} Int Int.monoid) (DivInvMonoid.toMonoid.{0} (Units.{0} Int Int.monoid) (Group.toDivInvMonoid.{0} (Units.{0} Int Int.monoid) (Units.group.{0} Int Int.monoid))))) (Neg.neg.{0} (Units.{0} Int Int.monoid) (Units.hasNeg.{0} Int Int.monoid (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.ring)))) (OfNat.ofNat.{0} (Units.{0} Int Int.monoid) 1 (OfNat.mk.{0} (Units.{0} Int Int.monoid) 1 (One.one.{0} (Units.{0} Int Int.monoid) (MulOneClass.toHasOne.{0} (Units.{0} Int Int.monoid) (Units.mulOneClass.{0} Int Int.monoid)))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (Fin n) Nat (HasLiftT.mk.{1, 1} (Fin n) Nat (CoeTCₓ.coe.{1, 1} (Fin n) Nat (coeBase.{1, 1} (Fin n) Nat (Fin.coeToNat n)))) i))
+but is expected to have type
+ forall {n : Nat} (i : Fin n), Eq.{1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (FunLike.coe.{1, 1, 1} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.Perm.{1} (Fin n)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) _x) (MulHomClass.toFunLike.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (MulOneClass.toMul.{0} (Equiv.Perm.{1} (Fin n)) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n)))))) (MulOneClass.toMul.{0} (Units.{0} Int Int.instMonoidInt) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (MonoidHomClass.toMulHomClass.{0, 0, 0} (MonoidHom.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)) (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt) (MonoidHom.monoidHomClass.{0, 0} (Equiv.Perm.{1} (Fin n)) (Units.{0} Int Int.instMonoidInt) (Monoid.toMulOneClass.{0} (Equiv.Perm.{1} (Fin n)) (DivInvMonoid.toMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Group.toDivInvMonoid.{0} (Equiv.Perm.{1} (Fin n)) (Equiv.Perm.permGroup.{0} (Fin n))))) (Units.instMulOneClassUnits.{0} Int Int.instMonoidInt)))) (Equiv.Perm.sign.{0} (Fin n) (fun (a : Fin n) (b : Fin n) => instDecidableEqFin n a b) (Fin.fintype n)) (Fin.cycleRange n i)) (HPow.hPow.{0, 0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (instHPow.{0, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) Nat (Monoid.Pow.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvMonoid.toMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Group.toDivInvMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instGroupUnits.{0} Int Int.instMonoidInt))))) (Neg.neg.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instNegUnits.{0} Int Int.instMonoidInt (NonUnitalNonAssocRing.toHasDistribNeg.{0} Int (NonAssocRing.toNonUnitalNonAssocRing.{0} Int (Ring.toNonAssocRing.{0} Int Int.instRingInt)))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) 1 (One.toOfNat1.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (InvOneClass.toOne.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivInvOneMonoid.toInvOneClass.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionMonoid.toDivInvOneMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (DivisionCommMonoid.toDivisionMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (CommGroup.toDivisionCommMonoid.{0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Equiv.Perm.{1} (Fin n)) => Units.{0} Int Int.instMonoidInt) (Fin.cycleRange n i)) (Units.instCommGroupUnitsToMonoid.{0} Int Int.instCommMonoidInt))))))))) (Fin.val n i))
+Case conversion may be inaccurate. Consider using '#align fin.sign_cycle_range Fin.sign_cycleRangeₓ'. -/
@[simp]
theorem sign_cycleRange {n : ℕ} (i : Fin n) : Perm.sign (cycleRange i) = (-1) ^ (i : ℕ) := by
simp [cycle_range]
#align fin.sign_cycle_range Fin.sign_cycleRange
+/- warning: fin.succ_above_cycle_range -> Fin.succAbove_cycleRange is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (coeFn.{1, 1} (OrderEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.hasLe n) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) (fun (_x : RelEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) => (Fin n) -> (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))) (RelEmbedding.hasCoeToFun.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (LE.le.{0} (Fin n) (Fin.hasLe n)) (LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Preorder.toLE.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (PartialOrder.toPreorder.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.partialOrder (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))) (Fin.succAbove n (Fin.succ n i)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin n)) (fun (_x : Equiv.{1, 1} (Fin n) (Fin n)) => (Fin n) -> (Fin n)) (Equiv.hasCoeToFun.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (coeFn.{1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (fun (_x : Equiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) => (Fin (Nat.succ n)) -> (Fin (Nat.succ n))) (Equiv.hasCoeToFun.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => Fin.decidableEq (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (OfNat.mk.{0} (Fin (Nat.succ n)) 0 (Zero.zero.{0} (Fin (Nat.succ n)) (Fin.hasZeroOfNeZero (Nat.succ n) (NeZero.succ n))))) (Fin.succ n i)) (Fin.succ n j))
+but is expected to have type
+ forall {n : Nat} (i : Fin n) (j : Fin n), Eq.{1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (a : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) a) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Function.Embedding.{1, 1} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Fin n) => Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) _x) (EmbeddingLike.toFunLike.{1, 1, 1} (Function.Embedding.{1, 1} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Function.instEmbeddingLikeEmbedding.{1, 1} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (RelEmbedding.toEmbedding.{0, 0} (Fin n) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.680 : Fin n) (x._@.Mathlib.Order.Hom.Basic._hyg.682 : Fin n) => LE.le.{0} (Fin n) (instLEFin n) x._@.Mathlib.Order.Hom.Basic._hyg.680 x._@.Mathlib.Order.Hom.Basic._hyg.682) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.695 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (x._@.Mathlib.Order.Hom.Basic._hyg.697 : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => LE.le.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (instLEFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) x._@.Mathlib.Order.Hom.Basic._hyg.695 x._@.Mathlib.Order.Hom.Basic._hyg.697) (Fin.succAbove n (Fin.succ n i))) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin n)) (Fin n) (fun (_x : Fin n) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin n) => Fin n) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin n) (Fin n)) (Fin.cycleRange n i) j)) (FunLike.coe.{1, 1, 1} (Equiv.Perm.{1} (Fin (Nat.succ n))) (Fin (Nat.succ n)) (fun (_x : Fin (Nat.succ n)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Fin (Nat.succ n)) => Fin (Nat.succ n)) _x) (Equiv.instFunLikeEquiv.{1, 1} (Fin (Nat.succ n)) (Fin (Nat.succ n))) (Equiv.swap.{1} (Fin (Nat.succ n)) (fun (a : Fin (Nat.succ n)) (b : Fin (Nat.succ n)) => instDecidableEqFin (Nat.succ n) a b) (OfNat.ofNat.{0} (Fin (Nat.succ n)) 0 (Fin.instOfNatFin (Nat.succ n) 0 (NeZero.succ n))) (Fin.succ n i)) (Fin.succ n j))
+Case conversion may be inaccurate. Consider using '#align fin.succ_above_cycle_range Fin.succAbove_cycleRangeₓ'. -/
@[simp]
theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
i.succ.succAbove (i.cycleRange j) = swap 0 i.succ j.succ :=
@@ -296,6 +391,7 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· simpa [Fin.le_iff_val_le_val] using hgt
#align fin.succ_above_cycle_range Fin.succAbove_cycleRange
+#print Fin.cycleRange_succAbove /-
@[simp]
theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
i.cycleRange (i.succAbove j) = j.succ :=
@@ -304,18 +400,29 @@ theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
· rw [Fin.succAbove_below _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
· rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (fin.le_cast_succ_iff.mp h)]
#align fin.cycle_range_succ_above Fin.cycleRange_succAbove
+-/
+#print Fin.cycleRange_symm_zero /-
@[simp]
theorem cycleRange_symm_zero {n : ℕ} (i : Fin (n + 1)) : i.cycleRange.symm 0 = i :=
i.cycleRange.Injective (by simp)
#align fin.cycle_range_symm_zero Fin.cycleRange_symm_zero
+-/
+#print Fin.cycleRange_symm_succ /-
@[simp]
theorem cycleRange_symm_succ {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
i.cycleRange.symm j.succ = i.succAbove j :=
i.cycleRange.Injective (by simp)
#align fin.cycle_range_symm_succ Fin.cycleRange_symm_succ
+-/
+/- warning: fin.is_cycle_cycle_range -> Fin.isCycle_cycleRange is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) -> (Equiv.Perm.IsCycle.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) i))
+but is expected to have type
+ forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) -> (Equiv.Perm.IsCycle.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) i))
+Case conversion may be inaccurate. Consider using '#align fin.is_cycle_cycle_range Fin.isCycle_cycleRangeₓ'. -/
theorem isCycle_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) : IsCycle (cycleRange i) :=
by
cases' i with i hi
@@ -324,6 +431,12 @@ theorem isCycle_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) : IsCycle
exact is_cycle_fin_rotate.extend_domain _
#align fin.is_cycle_cycle_range Fin.isCycle_cycleRange
+/- warning: fin.cycle_type_cycle_range -> Fin.cycleType_cycleRange is a dubious translation:
+lean 3 declaration is
+ forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (One.one.{0} Nat Nat.hasOne)) (NeZero.succ n)))))) -> (Eq.{1} (Multiset.{0} Nat) (Equiv.Perm.cycleType.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) => Fin.decidableEq (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) a b) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))) i)) (Singleton.singleton.{0, 0} Nat (Multiset.{0} Nat) (Multiset.hasSingleton.{0} Nat) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (HasLiftT.mk.{1, 1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (CoeTCₓ.coe.{1, 1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (coeBase.{1, 1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) Nat (Fin.coeToNat (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne)))))))) i) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))
+but is expected to have type
+ forall {n : Nat} {i : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))}, (Ne.{1} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) i (OfNat.ofNat.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) 0 (Fin.instOfNatFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) 0 (NeZero.succ n)))) -> (Eq.{1} (Multiset.{0} Nat) (Equiv.Perm.cycleType.{0} (Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (Fin.fintype (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (a : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (b : Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) => instDecidableEqFin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) a b) (Fin.cycleRange (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) i)) (Singleton.singleton.{0, 0} Nat (Multiset.{0} Nat) (Multiset.instSingletonMultiset.{0} Nat) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fin.val (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))) i) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))
+Case conversion may be inaccurate. Consider using '#align fin.cycle_type_cycle_range Fin.cycleType_cycleRangeₓ'. -/
@[simp]
theorem cycleType_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) :
cycleType (cycleRange i) = {i + 1} :=
@@ -335,9 +448,11 @@ theorem cycleType_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) :
exact cycleType_finRotate
#align fin.cycle_type_cycle_range Fin.cycleType_cycleRange
+#print Fin.isThreeCycle_cycleRange_two /-
theorem isThreeCycle_cycleRange_two {n : ℕ} : IsThreeCycle (cycleRange 2 : Perm (Fin (n + 3))) := by
rw [is_three_cycle, cycle_type_cycle_range] <;> decide
#align fin.is_three_cycle_cycle_range_two Fin.isThreeCycle_cycleRange_two
+-/
end Fin
mathlib commit https://github.com/leanprover-community/mathlib/commit/da3fc4a33ff6bc75f077f691dc94c217b8d41559
@@ -118,13 +118,13 @@ theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n :=
#align sign_fin_rotate sign_finRotate
@[simp]
-theorem support_finRotate {n : ℕ} : Support (finRotate (n + 2)) = Finset.univ :=
+theorem support_finRotate {n : ℕ} : support (finRotate (n + 2)) = Finset.univ :=
by
ext
simp
#align support_fin_rotate support_finRotate
-theorem support_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : Support (finRotate n) = Finset.univ :=
+theorem support_finRotate_of_le {n : ℕ} (h : 2 ≤ n) : support (finRotate n) = Finset.univ :=
by
obtain ⟨m, rfl⟩ := exists_add_of_le h
rw [add_comm, support_finRotate]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Previously Mathlib.GroupTheory.Perm.Fin
knew about LinearMap
for no good reason, because it relied on Mathlib.RingTheory.Int.Basic
for some basic things, but that file also has heavy imports.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -313,3 +313,5 @@ theorem isThreeCycle_cycleRange_two {n : ℕ} : IsThreeCycle (cycleRange 2 : Per
end Fin
end CycleRange
+
+assert_not_exists LinearMap
These are changes from #11997, the latest adaptation PR for nightly-2024-04-07, which can be made directly on master.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>
@@ -126,7 +126,7 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) := by
rw [zpow_natCast, Fin.ext_iff, Fin.val_mk]
induction' x with x ih; · rfl
rw [pow_succ', Perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
- rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
+ rw [Ne, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
exact ne_of_lt (Nat.lt_of_succ_lt_succ hx)
#align is_cycle_fin_rotate isCycle_finRotate
We change the following field in the definition of an additive commutative monoid:
nsmul_succ : ∀ (n : ℕ) (x : G),
- AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+ AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
where the latter is more natural
We adjust the definitions of ^
in monoids, groups, etc.
Originally there was a warning comment about why this natural order was preferred
use
x * npowRec n x
and notnpowRec n x * x
in the definition to make sure that definitional unfolding ofnpowRec
is blocked, to avoid deep recursion issues.
but it seems to no longer apply.
Remarks on the PR :
pow_succ
and pow_succ'
have switched their meanings.Ideal.IsPrime.mul_mem_pow
which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul
.@@ -125,7 +125,7 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) := by
cases' x with x hx
rw [zpow_natCast, Fin.ext_iff, Fin.val_mk]
induction' x with x ih; · rfl
- rw [pow_succ, Perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
+ rw [pow_succ', Perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
exact ne_of_lt (Nat.lt_of_succ_lt_succ hx)
#align is_cycle_fin_rotate isCycle_finRotate
zpow_coe_nat
to zpow_natCast
(#11528)
... and add a deprecated alias for the old name. This is mostly just me discovering the power of F2
@@ -123,7 +123,7 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) := by
refine' ⟨0, by simp, fun x hx' => ⟨x, _⟩⟩
clear hx'
cases' x with x hx
- rw [zpow_coe_nat, Fin.ext_iff, Fin.val_mk]
+ rw [zpow_natCast, Fin.ext_iff, Fin.val_mk]
induction' x with x ih; · rfl
rw [pow_succ, Perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -85,7 +85,7 @@ Define the permutations `Fin.cycleRange i`, the cycle `(0 1 2 ... i)`.
open Equiv.Perm
---Porting note: renamed from finRotate_succ because there is already a theorem with that name
+-- Porting note: renamed from finRotate_succ because there is already a theorem with that name
theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
finRotate n.succ = decomposeFin.symm (1, finRotate n) := by
ext i
Fin.eq_of_veq
and Fin.veq_of_eq
(#10626)
We have Fin.eq_of_val_eq
and Fin.val_eq_of_eq
in Lean core now.
Also slightly shake the tree.
@@ -307,7 +307,7 @@ theorem cycleType_cycleRange {n : ℕ} {i : Fin (n + 1)} (h0 : i ≠ 0) :
#align fin.cycle_type_cycle_range Fin.cycleType_cycleRange
theorem isThreeCycle_cycleRange_two {n : ℕ} : IsThreeCycle (cycleRange 2 : Perm (Fin (n + 3))) := by
- rw [IsThreeCycle, cycleType_cycleRange] <;> simp [Fin.eq_iff_veq]
+ rw [IsThreeCycle, cycleType_cycleRange] <;> simp [Fin.ext_iff]
#align fin.is_three_cycle_cycle_range_two Fin.isThreeCycle_cycleRange_two
end Fin
zpow_ofNat
and ofNat_zsmul
(#10969)
Previously these were syntactically identical to the corresponding zpow_coe_nat
and coe_nat_zsmul
lemmas, now they are about OfNat.ofNat
.
Unfortunately, almost every call site uses the ofNat
name to refer to Nat.cast
, so the downstream proofs had to be adjusted too.
@@ -123,7 +123,7 @@ theorem isCycle_finRotate {n : ℕ} : IsCycle (finRotate (n + 2)) := by
refine' ⟨0, by simp, fun x hx' => ⟨x, _⟩⟩
clear hx'
cases' x with x hx
- rw [zpow_ofNat, Fin.ext_iff, Fin.val_mk]
+ rw [zpow_coe_nat, Fin.ext_iff, Fin.val_mk]
induction' x with x ih; · rfl
rw [pow_succ, Perm.mul_apply, coe_finRotate_of_ne_last, ih (lt_trans x.lt_succ_self hx)]
rw [Ne.def, Fin.ext_iff, ih (lt_trans x.lt_succ_self hx), Fin.val_last]
Rename succAbove_below
, succAbove_above
, predAbove_below
and predAbove_Above
to more appropriate things, and vary and extend these results to allow for faster proofs elsewhere.
Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -256,15 +256,15 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
· have : castSucc (j + 1) = j.succ := by
ext
rw [coe_castSucc, val_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
- rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_below, this, swap_apply_of_ne_of_ne]
+ rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_of_castSucc_lt, this, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· exact (Fin.succ_injective _).ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [heq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
+ · rw [heq, Fin.cycleRange_self, Fin.succAbove_of_castSucc_lt, swap_apply_right, Fin.castSucc_zero]
· rw [Fin.castSucc_zero]
apply Fin.succ_pos
- · rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
+ · rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_of_le_castSucc, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· apply (Fin.succ_injective _).ne hgt.ne.symm
· simpa [Fin.le_iff_val_le_val] using hgt
@@ -274,8 +274,8 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
i.cycleRange (i.succAbove j) = j.succ := by
cases' lt_or_ge (castSucc j) i with h h
- · rw [Fin.succAbove_below _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
- · rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (Fin.le_castSucc_iff.mp h)]
+ · rw [Fin.succAbove_of_castSucc_lt _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
+ · rw [Fin.succAbove_of_le_castSucc _ _ h, Fin.cycleRange_of_gt (Fin.le_castSucc_iff.mp h)]
#align fin.cycle_range_succ_above Fin.cycleRange_succAbove
@[simp]
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -103,7 +103,7 @@ theorem finRotate_succ_eq_decomposeFin {n : ℕ} :
@[simp]
theorem sign_finRotate (n : ℕ) : Perm.sign (finRotate (n + 1)) = (-1) ^ n := by
induction' n with n ih
- · simp
+ · simp; rfl
· rw [finRotate_succ_eq_decomposeFin]
simp [ih, pow_succ]
#align sign_fin_rotate sign_finRotate
@@ -2,17 +2,14 @@
Copyright (c) 2021 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module group_theory.perm.fin
-! leanprover-community/mathlib commit 7e1c1263b6a25eb90bf16e80d8f47a657e403c4c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.GroupTheory.Perm.Cycle.Type
import Mathlib.GroupTheory.Perm.Option
import Mathlib.Logic.Equiv.Fin
import Mathlib.Logic.Equiv.Fintype
+#align_import group_theory.perm.fin from "leanprover-community/mathlib"@"7e1c1263b6a25eb90bf16e80d8f47a657e403c4c"
+
/-!
# Permutations of `Fin n`
-/
Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
@@ -155,7 +155,7 @@ namespace Fin
/-- `Fin.cycleRange i` is the cycle `(0 1 2 ... i)` leaving `(i+1 ... (n-1))` unchanged. -/
def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
(finRotate (i + 1)).extendDomain
- (Equiv.ofLeftInverse' (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding (↑)
+ (Equiv.ofLeftInverse' (Fin.castLEEmb (Nat.succ_le_of_lt i.is_lt)).toEmbedding (↑)
(by
intro x
ext
@@ -163,8 +163,8 @@ def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
#align fin.cycle_range Fin.cycleRange
theorem cycleRange_of_gt {n : ℕ} {i j : Fin n.succ} (h : i < j) : cycleRange i j = j := by
- rw [cycleRange, ofLeftInverse'_eq_ofInjective, ←
- Function.Embedding.toEquivRange_eq_ofInjective, ← viaFintypeEmbedding,
+ rw [cycleRange, ofLeftInverse'_eq_ofInjective,
+ ← Function.Embedding.toEquivRange_eq_ofInjective, ← viaFintypeEmbedding,
viaFintypeEmbedding_apply_not_mem_range]
simpa
#align fin.cycle_range_of_gt Fin.cycleRange_of_gt
@@ -174,12 +174,12 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
cases n
· exact Subsingleton.elim (α := Fin 1) _ _ --Porting note; was `simp`
have : j = (Fin.castLE (Nat.succ_le_of_lt i.is_lt))
- ⟨j, lt_of_le_of_lt h (Nat.lt_succ_self i)⟩ :=
- by simp
+ ⟨j, lt_of_le_of_lt h (Nat.lt_succ_self i)⟩ := by simp
ext
erw [this, cycleRange, ofLeftInverse'_eq_ofInjective, ←
Function.Embedding.toEquivRange_eq_ofInjective, ← viaFintypeEmbedding,
- viaFintypeEmbedding_apply_image, coe_castLE, coe_finRotate]
+ viaFintypeEmbedding_apply_image, castLEEmb_toEmbedding, Function.Embedding.coeFn_mk,
+ coe_castLE, coe_finRotate]
simp only [Fin.ext_iff, val_last, val_mk, val_zero, Fin.eta, castLE_mk]
split_ifs with heq
· rfl
@@ -256,16 +256,16 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
cases n
· rcases j with ⟨_, ⟨⟩⟩
rcases lt_trichotomy j i with (hlt | heq | hgt)
- · have : castSuccEmb (j + 1) = j.succ := by
+ · have : castSucc (j + 1) = j.succ := by
ext
- rw [coe_castSuccEmb, val_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
+ rw [coe_castSucc, val_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_below, this, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· exact (Fin.succ_injective _).ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [heq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSuccEmb_zero]
- · rw [Fin.castSuccEmb_zero]
+ · rw [heq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
+ · rw [Fin.castSucc_zero]
apply Fin.succ_pos
· rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
@@ -276,9 +276,9 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
@[simp]
theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
i.cycleRange (i.succAbove j) = j.succ := by
- cases' lt_or_ge (castSuccEmb j) i with h h
+ cases' lt_or_ge (castSucc j) i with h h
· rw [Fin.succAbove_below _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
- · rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (Fin.le_castSuccEmb_iff.mp h)]
+ · rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (Fin.le_castSucc_iff.mp h)]
#align fin.cycle_range_succ_above Fin.cycleRange_succAbove
@[simp]
@@ -256,16 +256,16 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
cases n
· rcases j with ⟨_, ⟨⟩⟩
rcases lt_trichotomy j i with (hlt | heq | hgt)
- · have : castSucc (j + 1) = j.succ := by
+ · have : castSuccEmb (j + 1) = j.succ := by
ext
- rw [coe_castSucc, val_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
+ rw [coe_castSuccEmb, val_succ, Fin.val_add_one_of_lt (lt_of_lt_of_le hlt i.le_last)]
rw [Fin.cycleRange_of_lt hlt, Fin.succAbove_below, this, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
· exact (Fin.succ_injective _).ne hlt.ne
· rw [Fin.lt_iff_val_lt_val]
simpa [this] using hlt
- · rw [heq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSucc_zero]
- · rw [Fin.castSucc_zero]
+ · rw [heq, Fin.cycleRange_self, Fin.succAbove_below, swap_apply_right, Fin.castSuccEmb_zero]
+ · rw [Fin.castSuccEmb_zero]
apply Fin.succ_pos
· rw [Fin.cycleRange_of_gt hgt, Fin.succAbove_above, swap_apply_of_ne_of_ne]
· apply Fin.succ_ne_zero
@@ -276,9 +276,9 @@ theorem succAbove_cycleRange {n : ℕ} (i j : Fin n) :
@[simp]
theorem cycleRange_succAbove {n : ℕ} (i : Fin (n + 1)) (j : Fin n) :
i.cycleRange (i.succAbove j) = j.succ := by
- cases' lt_or_ge (castSucc j) i with h h
+ cases' lt_or_ge (castSuccEmb j) i with h h
· rw [Fin.succAbove_below _ _ h, Fin.cycleRange_of_lt h, Fin.coeSucc_eq_succ]
- · rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (Fin.le_castSucc_iff.mp h)]
+ · rw [Fin.succAbove_above _ _ h, Fin.cycleRange_of_gt (Fin.le_castSuccEmb_iff.mp h)]
#align fin.cycle_range_succ_above Fin.cycleRange_succAbove
@[simp]
The changes I made were.
Use FunLike.coe
instead of the previous definition for the coercion from RelEmbedding
To functions and OrderIso
to functions. The previous definition was
instance : CoeFun (r ↪r s) fun _ => α → β :=
-- ⟨fun o => o.toEmbedding⟩
This does not display nicely.
I also restored the simp
attributes on a few lemmas that had their simp
attributes removed during the port. Eventually
we might want a RelEmbeddingLike
class, but this PR does not implement that.
I also added a few lemmas that proved that coercions to function commute with RelEmbedding.toRelHom
or similar.
The other changes are just fixing the build. One strange issue is that the lemma Finset.mapEmbedding_apply
seems to be harder to use, it has to be used with rw
instead of simp
Co-authored-by: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com>
@@ -173,11 +173,11 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
cycleRange i j = if j = i then 0 else j + 1 := by
cases n
· exact Subsingleton.elim (α := Fin 1) _ _ --Porting note; was `simp`
- have : j = (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding
+ have : j = (Fin.castLE (Nat.succ_le_of_lt i.is_lt))
⟨j, lt_of_le_of_lt h (Nat.lt_succ_self i)⟩ :=
by simp
ext
- rw [this, cycleRange, ofLeftInverse'_eq_ofInjective, ←
+ erw [this, cycleRange, ofLeftInverse'_eq_ofInjective, ←
Function.Embedding.toEquivRange_eq_ofInjective, ← viaFintypeEmbedding,
viaFintypeEmbedding_apply_image, coe_castLE, coe_finRotate]
simp only [Fin.ext_iff, val_last, val_mk, val_zero, Fin.eta, castLE_mk]
@@ -155,7 +155,7 @@ namespace Fin
/-- `Fin.cycleRange i` is the cycle `(0 1 2 ... i)` leaving `(i+1 ... (n-1))` unchanged. -/
def cycleRange {n : ℕ} (i : Fin n) : Perm (Fin n) :=
(finRotate (i + 1)).extendDomain
- (Equiv.ofLeftInverse' (Fin.castLe (Nat.succ_le_of_lt i.is_lt)).toEmbedding (↑)
+ (Equiv.ofLeftInverse' (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding (↑)
(by
intro x
ext
@@ -173,14 +173,14 @@ theorem cycleRange_of_le {n : ℕ} {i j : Fin n.succ} (h : j ≤ i) :
cycleRange i j = if j = i then 0 else j + 1 := by
cases n
· exact Subsingleton.elim (α := Fin 1) _ _ --Porting note; was `simp`
- have : j = (Fin.castLe (Nat.succ_le_of_lt i.is_lt)).toEmbedding
+ have : j = (Fin.castLE (Nat.succ_le_of_lt i.is_lt)).toEmbedding
⟨j, lt_of_le_of_lt h (Nat.lt_succ_self i)⟩ :=
by simp
ext
rw [this, cycleRange, ofLeftInverse'_eq_ofInjective, ←
Function.Embedding.toEquivRange_eq_ofInjective, ← viaFintypeEmbedding,
- viaFintypeEmbedding_apply_image, coe_castLe, coe_finRotate]
- simp only [Fin.ext_iff, val_last, val_mk, val_zero, Fin.eta, castLe_mk]
+ viaFintypeEmbedding_apply_image, coe_castLE, coe_finRotate]
+ simp only [Fin.ext_iff, val_last, val_mk, val_zero, Fin.eta, castLE_mk]
split_ifs with heq
· rfl
· rw [Fin.val_add_one_of_lt]
The unported dependencies are