ring_theory.witt_vector.defs
β·
Mathlib.RingTheory.WittVector.Defs
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -84,7 +84,7 @@ theorem ext {x y : π R} (h : β n, x.coeff n = y.coeff n) : x = y :=
by
cases x
cases y
- simp only at h
+ simp only at h
simp [Function.funext_iff, h]
#align witt_vector.ext WittVector.ext
-/
@@ -298,7 +298,7 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
Β· simp only [invOf_eq_inv, one_mul, inv_pow, tsub_zero, RingHom.map_one, pow_zero]
simp only [one_pow, one_mul, xInTermsOfW_zero, sub_self, bindβ_X_right]
Β· intro i hin hi0
- rw [Finset.mem_range] at hin
+ rw [Finset.mem_range] at hin
rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.Pos _), MulZeroClass.mul_zero]
Β· rw [Finset.mem_range]; intro; contradiction
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -44,7 +44,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
#print WittVector /-
-/- ./././Mathport/Syntax/Translate/Command.lean:440:34: infer kinds are unsupported in Lean 4: mk [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:436:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -44,7 +44,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
#print WittVector /-
-/- ./././Mathport/Syntax/Translate/Command.lean:430:34: infer kinds are unsupported in Lean 4: mk [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:440:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-/
-import Mathbin.RingTheory.WittVector.StructurePolynomial
+import RingTheory.WittVector.StructurePolynomial
#align_import ring_theory.witt_vector.defs from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
@@ -44,7 +44,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
#print WittVector /-
-/- ./././Mathport/Syntax/Translate/Command.lean:429:34: infer kinds are unsupported in Lean 4: mk [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:430:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-
-! This file was ported from Lean 3 source module ring_theory.witt_vector.defs
-! leanprover-community/mathlib commit 36938f775671ff28bea1c0310f1608e4afbb22e0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.RingTheory.WittVector.StructurePolynomial
+#align_import ring_theory.witt_vector.defs from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
+
/-!
# Witt vectors
mathlib commit https://github.com/leanprover-community/mathlib/commit/8efcf8022aac8e01df8d302dcebdbc25d6a886c8
@@ -113,7 +113,7 @@ instance : Functor (WittVector p)
instance : LawfulFunctor (WittVector p)
where
- mapConst_eq Ξ± Ξ² := rfl
+ map_const Ξ± Ξ² := rfl
id_map := fun Ξ± β¨v, _β© => rfl
comp_map Ξ± Ξ² Ξ³ f g v := rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -47,7 +47,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
#print WittVector /-
-/- ./././Mathport/Syntax/Translate/Command.lean:430:34: infer kinds are unsupported in Lean 4: mk [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:429:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
@@ -62,7 +62,6 @@ structure WittVector (p : β) (R : Type _) where mk ::
variable {p : β}
--- mathport name: exprπ
/- We cannot make this `localized` notation, because the `p` on the RHS doesn't occur on the left
Hiding the `p` in the notation is very convenient, so we opt for repeating the `local notation`
in other files that use Witt vectors. -/
@@ -120,61 +119,76 @@ instance : LawfulFunctor (WittVector p)
variable (p) [hp : Fact p.Prime] [CommRing R]
-include hp
-
open MvPolynomial
section RingOperations
+#print WittVector.wittZero /-
/-- The polynomials used for defining the element `0` of the ring of Witt vectors. -/
def wittZero : β β MvPolynomial (Fin 0 Γ β) β€ :=
wittStructureInt p 0
#align witt_vector.witt_zero WittVector.wittZero
+-/
+#print WittVector.wittOne /-
/-- The polynomials used for defining the element `1` of the ring of Witt vectors. -/
def wittOne : β β MvPolynomial (Fin 0 Γ β) β€ :=
wittStructureInt p 1
#align witt_vector.witt_one WittVector.wittOne
+-/
+#print WittVector.wittAdd /-
/-- The polynomials used for defining the addition of the ring of Witt vectors. -/
def wittAdd : β β MvPolynomial (Fin 2 Γ β) β€ :=
wittStructureInt p (X 0 + X 1)
#align witt_vector.witt_add WittVector.wittAdd
+-/
+#print WittVector.wittNSMul /-
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
def wittNSMul (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
wittStructureInt p (n β’ X 0)
#align witt_vector.witt_nsmul WittVector.wittNSMul
+-/
+#print WittVector.wittZSMul /-
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
def wittZSMul (n : β€) : β β MvPolynomial (Fin 1 Γ β) β€ :=
wittStructureInt p (n β’ X 0)
#align witt_vector.witt_zsmul WittVector.wittZSMul
+-/
+#print WittVector.wittSub /-
/-- The polynomials used for describing the subtraction of the ring of Witt vectors. -/
def wittSub : β β MvPolynomial (Fin 2 Γ β) β€ :=
wittStructureInt p (X 0 - X 1)
#align witt_vector.witt_sub WittVector.wittSub
+-/
+#print WittVector.wittMul /-
/-- The polynomials used for defining the multiplication of the ring of Witt vectors. -/
def wittMul : β β MvPolynomial (Fin 2 Γ β) β€ :=
wittStructureInt p (X 0 * X 1)
#align witt_vector.witt_mul WittVector.wittMul
+-/
+#print WittVector.wittNeg /-
/-- The polynomials used for defining the negation of the ring of Witt vectors. -/
def wittNeg : β β MvPolynomial (Fin 1 Γ β) β€ :=
wittStructureInt p (-X 0)
#align witt_vector.witt_neg WittVector.wittNeg
+-/
+#print WittVector.wittPow /-
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
def wittPow (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
wittStructureInt p (X 0 ^ n)
#align witt_vector.witt_pow WittVector.wittPow
+-/
variable {p}
-omit hp
-
+#print WittVector.peval /-
/-- An auxiliary definition used in `witt_vector.eval`.
Evaluates a polynomial whose variables come from the disjoint union of `k` copies of `β`,
with a curried evaluation `x`.
@@ -182,7 +196,9 @@ This can be defined more generally but we use only a specific instance here. -/
def peval {k : β} (Ο : MvPolynomial (Fin k Γ β) β€) (x : Fin k β β β R) : R :=
aeval (Function.uncurry x) Ο
#align witt_vector.peval WittVector.peval
+-/
+#print WittVector.eval /-
/-- Let `Ο` be a family of polynomials, indexed by natural numbers, whose variables come from the
disjoint union of `k` copies of `β`, and let `xα΅’` be a Witt vector for `0 β€ i < k`.
@@ -195,6 +211,7 @@ evaluating this at `(xβ, xβ)` gives us the sum of two Witt vectors `xβ + x
def eval {k : β} (Ο : β β MvPolynomial (Fin k Γ β) β€) (x : Fin k β π R) : π R :=
mk' p fun n => peval (Ο n) fun i => (x i).coeff
#align witt_vector.eval WittVector.eval
+-/
variable (R) [Fact p.Prime]
@@ -247,6 +264,7 @@ end RingOperations
section WittStructureSimplifications
+#print WittVector.wittZero_eq_zero /-
@[simp]
theorem wittZero_eq_zero (n : β) : wittZero p n = 0 :=
by
@@ -254,7 +272,9 @@ theorem wittZero_eq_zero (n : β) : wittZero p n = 0 :=
simp only [witt_zero, wittStructureRat, bindβ, aeval_zero', constantCoeff_xInTermsOfW,
RingHom.map_zero, AlgHom.map_zero, map_wittStructureInt]
#align witt_vector.witt_zero_eq_zero WittVector.wittZero_eq_zero
+-/
+#print WittVector.wittOne_zero_eq_one /-
@[simp]
theorem wittOne_zero_eq_one : wittOne p 0 = 1 :=
by
@@ -262,7 +282,9 @@ theorem wittOne_zero_eq_one : wittOne p 0 = 1 :=
simp only [witt_one, wittStructureRat, xInTermsOfW_zero, AlgHom.map_one, RingHom.map_one,
bindβ_X_right, map_wittStructureInt]
#align witt_vector.witt_one_zero_eq_one WittVector.wittOne_zero_eq_one
+-/
+#print WittVector.wittOne_pos_eq_zero /-
@[simp]
theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
by
@@ -283,7 +305,9 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.Pos _), MulZeroClass.mul_zero]
Β· rw [Finset.mem_range]; intro; contradiction
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
+-/
+#print WittVector.wittAdd_zero /-
@[simp]
theorem wittAdd_zero : wittAdd p 0 = X (0, 0) + X (1, 0) :=
by
@@ -291,7 +315,9 @@ theorem wittAdd_zero : wittAdd p 0 = X (0, 0) + X (1, 0) :=
simp only [witt_add, wittStructureRat, AlgHom.map_add, RingHom.map_add, rename_X,
xInTermsOfW_zero, map_X, wittPolynomial_zero, bindβ_X_right, map_wittStructureInt]
#align witt_vector.witt_add_zero WittVector.wittAdd_zero
+-/
+#print WittVector.wittSub_zero /-
@[simp]
theorem wittSub_zero : wittSub p 0 = X (0, 0) - X (1, 0) :=
by
@@ -299,7 +325,9 @@ theorem wittSub_zero : wittSub p 0 = X (0, 0) - X (1, 0) :=
simp only [witt_sub, wittStructureRat, AlgHom.map_sub, RingHom.map_sub, rename_X,
xInTermsOfW_zero, map_X, wittPolynomial_zero, bindβ_X_right, map_wittStructureInt]
#align witt_vector.witt_sub_zero WittVector.wittSub_zero
+-/
+#print WittVector.wittMul_zero /-
@[simp]
theorem wittMul_zero : wittMul p 0 = X (0, 0) * X (1, 0) :=
by
@@ -307,7 +335,9 @@ theorem wittMul_zero : wittMul p 0 = X (0, 0) * X (1, 0) :=
simp only [witt_mul, wittStructureRat, rename_X, xInTermsOfW_zero, map_X, wittPolynomial_zero,
RingHom.map_mul, bindβ_X_right, AlgHom.map_mul, map_wittStructureInt]
#align witt_vector.witt_mul_zero WittVector.wittMul_zero
+-/
+#print WittVector.wittNeg_zero /-
@[simp]
theorem wittNeg_zero : wittNeg p 0 = -X (0, 0) :=
by
@@ -315,48 +345,61 @@ theorem wittNeg_zero : wittNeg p 0 = -X (0, 0) :=
simp only [witt_neg, wittStructureRat, rename_X, xInTermsOfW_zero, map_X, wittPolynomial_zero,
RingHom.map_neg, AlgHom.map_neg, bindβ_X_right, map_wittStructureInt]
#align witt_vector.witt_neg_zero WittVector.wittNeg_zero
+-/
+#print WittVector.constantCoeff_wittAdd /-
@[simp]
theorem constantCoeff_wittAdd (n : β) : constantCoeff (wittAdd p n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [add_zero, RingHom.map_add, constant_coeff_X]
#align witt_vector.constant_coeff_witt_add WittVector.constantCoeff_wittAdd
+-/
+#print WittVector.constantCoeff_wittSub /-
@[simp]
theorem constantCoeff_wittSub (n : β) : constantCoeff (wittSub p n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [sub_zero, RingHom.map_sub, constant_coeff_X]
#align witt_vector.constant_coeff_witt_sub WittVector.constantCoeff_wittSub
+-/
+#print WittVector.constantCoeff_wittMul /-
@[simp]
theorem constantCoeff_wittMul (n : β) : constantCoeff (wittMul p n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [MulZeroClass.mul_zero, RingHom.map_mul, constant_coeff_X]
#align witt_vector.constant_coeff_witt_mul WittVector.constantCoeff_wittMul
+-/
+#print WittVector.constantCoeff_wittNeg /-
@[simp]
theorem constantCoeff_wittNeg (n : β) : constantCoeff (wittNeg p n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [neg_zero, RingHom.map_neg, constant_coeff_X]
#align witt_vector.constant_coeff_witt_neg WittVector.constantCoeff_wittNeg
+-/
+#print WittVector.constantCoeff_wittNSMul /-
@[simp]
theorem constantCoeff_wittNSMul (m : β) (n : β) : constantCoeff (wittNSMul p m n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [smul_zero, map_nsmul, constant_coeff_X]
#align witt_vector.constant_coeff_witt_nsmul WittVector.constantCoeff_wittNSMul
+-/
+#print WittVector.constantCoeff_wittZSMul /-
@[simp]
theorem constantCoeff_wittZSMul (z : β€) (n : β) : constantCoeff (wittZSMul p z n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [smul_zero, map_zsmul, constant_coeff_X]
#align witt_vector.constant_coeff_witt_zsmul WittVector.constantCoeff_wittZSMul
+-/
end WittStructureSimplifications
@@ -364,25 +407,29 @@ section Coeff
variable (p R)
+#print WittVector.zero_coeff /-
@[simp]
theorem zero_coeff (n : β) : (0 : π R).coeff n = 0 :=
show (aeval _ (wittZero p n) : R) = 0 by simp only [witt_zero_eq_zero, AlgHom.map_zero]
#align witt_vector.zero_coeff WittVector.zero_coeff
+-/
+#print WittVector.one_coeff_zero /-
@[simp]
theorem one_coeff_zero : (1 : π R).coeff 0 = 1 :=
show (aeval _ (wittOne p 0) : R) = 1 by simp only [witt_one_zero_eq_one, AlgHom.map_one]
#align witt_vector.one_coeff_zero WittVector.one_coeff_zero
+-/
+#print WittVector.one_coeff_eq_of_pos /-
@[simp]
theorem one_coeff_eq_of_pos (n : β) (hn : 0 < n) : coeff (1 : π R) n = 0 :=
show (aeval _ (wittOne p n) : R) = 0 by simp only [hn, witt_one_pos_eq_zero, AlgHom.map_zero]
#align witt_vector.one_coeff_eq_of_pos WittVector.one_coeff_eq_of_pos
+-/
variable {p R}
-omit hp
-
#print WittVector.v2_coeff /-
@[simp]
theorem v2_coeff {p' R'} (x y : WittVector p' R') (i : Fin 2) :
@@ -390,8 +437,6 @@ theorem v2_coeff {p' R'} (x y : WittVector p' R') (i : Fin 2) :
#align witt_vector.v2_coeff WittVector.v2_coeff
-/
-include hp
-
#print WittVector.add_coeff /-
theorem add_coeff (x y : π R) (n : β) : (x + y).coeff n = peval (wittAdd p n) ![x.coeff, y.coeff] :=
by simp [(Β· + Β·), eval]
@@ -436,13 +481,17 @@ theorem pow_coeff (m : β) (x : π R) (n : β) : (x ^ m).coeff n = peval (wi
#align witt_vector.pow_coeff WittVector.pow_coeff
-/
+#print WittVector.add_coeff_zero /-
theorem add_coeff_zero (x y : π R) : (x + y).coeff 0 = x.coeff 0 + y.coeff 0 := by
simp [add_coeff, peval]
#align witt_vector.add_coeff_zero WittVector.add_coeff_zero
+-/
+#print WittVector.mul_coeff_zero /-
theorem mul_coeff_zero (x y : π R) : (x * y).coeff 0 = x.coeff 0 * y.coeff 0 := by
simp [mul_coeff, peval]
#align witt_vector.mul_coeff_zero WittVector.mul_coeff_zero
+-/
end Coeff
mathlib commit https://github.com/leanprover-community/mathlib/commit/58a272265b5e05f258161260dd2c5d247213cbd3
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
! This file was ported from Lean 3 source module ring_theory.witt_vector.defs
-! leanprover-community/mathlib commit f1944b30c97c5eb626e498307dec8b022a05bd0a
+! leanprover-community/mathlib commit 36938f775671ff28bea1c0310f1608e4afbb22e0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.RingTheory.WittVector.StructurePolynomial
/-!
# Witt vectors
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we define the type of `p`-typical Witt vectors and ring operations on it.
The ring axioms are verified in `ring_theory/witt_vector/basic.lean`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/13361559d66b84f80b6d5a1c4a26aa5054766725
@@ -43,6 +43,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
+#print WittVector /-
/- ./././Mathport/Syntax/Translate/Command.lean:430:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
@@ -54,6 +55,7 @@ which is isomorphic to the `p`-adic integers `β€_[p]`. -/
structure WittVector (p : β) (R : Type _) where mk ::
coeff : β β R
#align witt_vector WittVector
+-/
variable {p : β}
@@ -69,7 +71,7 @@ namespace WittVector
variable (p) {R : Type _}
/-- Construct a Witt vector `mk p x : π R` from a sequence `x` of elements of `R`. -/
-add_decl_doc WittVector.mk
+add_decl_doc WittVector.mk'
/-- `x.coeff n` is the `n`th coefficient of the Witt vector `x`.
@@ -77,6 +79,7 @@ This concept does not have a standard name in the literature.
-/
add_decl_doc WittVector.coeff
+#print WittVector.ext /-
@[ext]
theorem ext {x y : π R} (h : β n, x.coeff n = y.coeff n) : x = y :=
by
@@ -85,21 +88,26 @@ theorem ext {x y : π R} (h : β n, x.coeff n = y.coeff n) : x = y :=
simp only at h
simp [Function.funext_iff, h]
#align witt_vector.ext WittVector.ext
+-/
+#print WittVector.ext_iff /-
theorem ext_iff {x y : π R} : x = y β β n, x.coeff n = y.coeff n :=
β¨fun h n => by rw [h], extβ©
#align witt_vector.ext_iff WittVector.ext_iff
+-/
-theorem coeff_mk (x : β β R) : (mk p x).coeff = x :=
+#print WittVector.coeff_mk /-
+theorem coeff_mk (x : β β R) : (mk' p x).coeff = x :=
rfl
#align witt_vector.coeff_mk WittVector.coeff_mk
+-/
/- These instances are not needed for the rest of the development,
but it is interesting to establish early on that `witt_vector p` is a lawful functor. -/
instance : Functor (WittVector p)
where
- map Ξ± Ξ² f v := mk p (f β v.coeff)
- mapConst Ξ± Ξ² a v := mk p fun _ => a
+ map Ξ± Ξ² f v := mk' p (f β v.coeff)
+ mapConst Ξ± Ξ² a v := mk' p fun _ => a
instance : LawfulFunctor (WittVector p)
where
@@ -131,14 +139,14 @@ def wittAdd : β β MvPolynomial (Fin 2 Γ β) β€ :=
#align witt_vector.witt_add WittVector.wittAdd
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
-def wittNsmul (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
+def wittNSMul (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
wittStructureInt p (n β’ X 0)
-#align witt_vector.witt_nsmul WittVector.wittNsmul
+#align witt_vector.witt_nsmul WittVector.wittNSMul
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
-def wittZsmul (n : β€) : β β MvPolynomial (Fin 1 Γ β) β€ :=
+def wittZSMul (n : β€) : β β MvPolynomial (Fin 1 Γ β) β€ :=
wittStructureInt p (n β’ X 0)
-#align witt_vector.witt_zsmul WittVector.wittZsmul
+#align witt_vector.witt_zsmul WittVector.wittZSMul
/-- The polynomials used for describing the subtraction of the ring of Witt vectors. -/
def wittSub : β β MvPolynomial (Fin 2 Γ β) β€ :=
@@ -182,7 +190,7 @@ ring operations on `π R`. For example, `witt_vector.witt_add` is such a `Ο`
evaluating this at `(xβ, xβ)` gives us the sum of two Witt vectors `xβ + xβ`.
-/
def eval {k : β} (Ο : β β MvPolynomial (Fin k Γ β) β€) (x : Fin k β π R) : π R :=
- mk p fun n => peval (Ο n) fun i => (x i).coeff
+ mk' p fun n => peval (Ο n) fun i => (x i).coeff
#align witt_vector.eval WittVector.eval
variable (R) [Fact p.Prime]
@@ -202,13 +210,17 @@ instance : Add (π R) :=
instance : Sub (π R) :=
β¨fun x y => eval (wittSub p) ![x, y]β©
+#print WittVector.hasNatScalar /-
instance hasNatScalar : SMul β (π R) :=
- β¨fun n x => eval (wittNsmul p n) ![x]β©
+ β¨fun n x => eval (wittNSMul p n) ![x]β©
#align witt_vector.has_nat_scalar WittVector.hasNatScalar
+-/
+#print WittVector.hasIntScalar /-
instance hasIntScalar : SMul β€ (π R) :=
- β¨fun n x => eval (wittZsmul p n) ![x]β©
+ β¨fun n x => eval (wittZSMul p n) ![x]β©
#align witt_vector.has_int_scalar WittVector.hasIntScalar
+-/
instance : Mul (π R) :=
β¨fun x y => eval (wittMul p) ![x, y]β©
@@ -216,9 +228,11 @@ instance : Mul (π R) :=
instance : Neg (π R) :=
β¨fun x => eval (wittNeg p) ![x]β©
+#print WittVector.hasNatPow /-
instance hasNatPow : Pow (π R) β :=
β¨fun x n => eval (wittPow p n) ![x]β©
#align witt_vector.has_nat_pow WittVector.hasNatPow
+-/
instance : NatCast (π R) :=
β¨Nat.unaryCastβ©
@@ -328,18 +342,18 @@ theorem constantCoeff_wittNeg (n : β) : constantCoeff (wittNeg p n) = 0 :=
#align witt_vector.constant_coeff_witt_neg WittVector.constantCoeff_wittNeg
@[simp]
-theorem constantCoeff_wittNsmul (m : β) (n : β) : constantCoeff (wittNsmul p m n) = 0 :=
+theorem constantCoeff_wittNSMul (m : β) (n : β) : constantCoeff (wittNSMul p m n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [smul_zero, map_nsmul, constant_coeff_X]
-#align witt_vector.constant_coeff_witt_nsmul WittVector.constantCoeff_wittNsmul
+#align witt_vector.constant_coeff_witt_nsmul WittVector.constantCoeff_wittNSMul
@[simp]
-theorem constantCoeff_wittZsmul (z : β€) (n : β) : constantCoeff (wittZsmul p z n) = 0 :=
+theorem constantCoeff_wittZSMul (z : β€) (n : β) : constantCoeff (wittZSMul p z n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
simp only [smul_zero, map_zsmul, constant_coeff_X]
-#align witt_vector.constant_coeff_witt_zsmul WittVector.constantCoeff_wittZsmul
+#align witt_vector.constant_coeff_witt_zsmul WittVector.constantCoeff_wittZSMul
end WittStructureSimplifications
@@ -366,42 +380,58 @@ variable {p R}
omit hp
+#print WittVector.v2_coeff /-
@[simp]
theorem v2_coeff {p' R'} (x y : WittVector p' R') (i : Fin 2) :
(![x, y] i).coeff = ![x.coeff, y.coeff] i := by fin_cases i <;> simp
#align witt_vector.v2_coeff WittVector.v2_coeff
+-/
include hp
+#print WittVector.add_coeff /-
theorem add_coeff (x y : π R) (n : β) : (x + y).coeff n = peval (wittAdd p n) ![x.coeff, y.coeff] :=
by simp [(Β· + Β·), eval]
#align witt_vector.add_coeff WittVector.add_coeff
+-/
+#print WittVector.sub_coeff /-
theorem sub_coeff (x y : π R) (n : β) : (x - y).coeff n = peval (wittSub p n) ![x.coeff, y.coeff] :=
by simp [Sub.sub, eval]
#align witt_vector.sub_coeff WittVector.sub_coeff
+-/
+#print WittVector.mul_coeff /-
theorem mul_coeff (x y : π R) (n : β) : (x * y).coeff n = peval (wittMul p n) ![x.coeff, y.coeff] :=
by simp [(Β· * Β·), eval]
#align witt_vector.mul_coeff WittVector.mul_coeff
+-/
+#print WittVector.neg_coeff /-
theorem neg_coeff (x : π R) (n : β) : (-x).coeff n = peval (wittNeg p n) ![x.coeff] := by
simp [Neg.neg, eval, Matrix.cons_fin_one]
#align witt_vector.neg_coeff WittVector.neg_coeff
+-/
+#print WittVector.nsmul_coeff /-
theorem nsmul_coeff (m : β) (x : π R) (n : β) :
- (m β’ x).coeff n = peval (wittNsmul p m n) ![x.coeff] := by
+ (m β’ x).coeff n = peval (wittNSMul p m n) ![x.coeff] := by
simp [SMul.smul, eval, Matrix.cons_fin_one]
#align witt_vector.nsmul_coeff WittVector.nsmul_coeff
+-/
+#print WittVector.zsmul_coeff /-
theorem zsmul_coeff (m : β€) (x : π R) (n : β) :
- (m β’ x).coeff n = peval (wittZsmul p m n) ![x.coeff] := by
+ (m β’ x).coeff n = peval (wittZSMul p m n) ![x.coeff] := by
simp [SMul.smul, eval, Matrix.cons_fin_one]
#align witt_vector.zsmul_coeff WittVector.zsmul_coeff
+-/
+#print WittVector.pow_coeff /-
theorem pow_coeff (m : β) (x : π R) (n : β) : (x ^ m).coeff n = peval (wittPow p m n) ![x.coeff] :=
by simp [Pow.pow, eval, Matrix.cons_fin_one]
#align witt_vector.pow_coeff WittVector.pow_coeff
+-/
theorem add_coeff_zero (x y : π R) : (x + y).coeff 0 = x.coeff 0 + y.coeff 0 := by
simp [add_coeff, peval]
@@ -414,41 +444,55 @@ theorem mul_coeff_zero (x y : π R) : (x * y).coeff 0 = x.coeff 0 * y.coeff 0
end Coeff
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print WittVector.wittAdd_vars /-
theorem wittAdd_vars (n : β) : (wittAdd p n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
#align witt_vector.witt_add_vars WittVector.wittAdd_vars
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print WittVector.wittSub_vars /-
theorem wittSub_vars (n : β) : (wittSub p n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
#align witt_vector.witt_sub_vars WittVector.wittSub_vars
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print WittVector.wittMul_vars /-
theorem wittMul_vars (n : β) : (wittMul p n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
#align witt_vector.witt_mul_vars WittVector.wittMul_vars
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print WittVector.wittNeg_vars /-
theorem wittNeg_vars (n : β) : (wittNeg p n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
#align witt_vector.witt_neg_vars WittVector.wittNeg_vars
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem wittNsmul_vars (m : β) (n : β) :
- (wittNsmul p m n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
+#print WittVector.wittNSMul_vars /-
+theorem wittNSMul_vars (m : β) (n : β) :
+ (wittNSMul p m n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
-#align witt_vector.witt_nsmul_vars WittVector.wittNsmul_vars
+#align witt_vector.witt_nsmul_vars WittVector.wittNSMul_vars
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem wittZsmul_vars (m : β€) (n : β) :
- (wittZsmul p m n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
+#print WittVector.wittZSMul_vars /-
+theorem wittZSMul_vars (m : β€) (n : β) :
+ (wittZSMul p m n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
-#align witt_vector.witt_zsmul_vars WittVector.wittZsmul_vars
+#align witt_vector.witt_zsmul_vars WittVector.wittZSMul_vars
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print WittVector.wittPow_vars /-
theorem wittPow_vars (m : β) (n : β) : (wittPow p m n).vars β Finset.univ ΓΛ’ Finset.range (n + 1) :=
wittStructureInt_vars _ _ _
#align witt_vector.witt_pow_vars WittVector.wittPow_vars
+-/
end WittVector
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -43,7 +43,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
-/- ./././Mathport/Syntax/Translate/Command.lean:429:34: infer kinds are unsupported in Lean 4: mk [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:430:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -82,7 +82,7 @@ theorem ext {x y : π R} (h : β n, x.coeff n = y.coeff n) : x = y :=
by
cases x
cases y
- simp only at h
+ simp only at h
simp [Function.funext_iff, h]
#align witt_vector.ext WittVector.ext
@@ -262,9 +262,9 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
Β· simp only [invOf_eq_inv, one_mul, inv_pow, tsub_zero, RingHom.map_one, pow_zero]
simp only [one_pow, one_mul, xInTermsOfW_zero, sub_self, bindβ_X_right]
Β· intro i hin hi0
- rw [Finset.mem_range] at hin
+ rw [Finset.mem_range] at hin
rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.Pos _), MulZeroClass.mul_zero]
- Β· rw [Finset.mem_range]; intro ; contradiction
+ Β· rw [Finset.mem_range]; intro; contradiction
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
@[simp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -264,9 +264,7 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
Β· intro i hin hi0
rw [Finset.mem_range] at hin
rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.Pos _), MulZeroClass.mul_zero]
- Β· rw [Finset.mem_range]
- intro
- contradiction
+ Β· rw [Finset.mem_range]; intro ; contradiction
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
@[simp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -43,7 +43,7 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
-/- ./././Mathport/Syntax/Translate/Command.lean:424:34: infer kinds are unsupported in Lean 4: mk [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:429:34: infer kinds are unsupported in Lean 4: mk [] -/
/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a313d8bba1bad05faba71a4a4e9742ab5bd9efd
@@ -127,37 +127,37 @@ def wittOne : β β MvPolynomial (Fin 0 Γ β) β€ :=
/-- The polynomials used for defining the addition of the ring of Witt vectors. -/
def wittAdd : β β MvPolynomial (Fin 2 Γ β) β€ :=
- wittStructureInt p (x 0 + x 1)
+ wittStructureInt p (X 0 + X 1)
#align witt_vector.witt_add WittVector.wittAdd
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
def wittNsmul (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
- wittStructureInt p (n β’ x 0)
+ wittStructureInt p (n β’ X 0)
#align witt_vector.witt_nsmul WittVector.wittNsmul
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
def wittZsmul (n : β€) : β β MvPolynomial (Fin 1 Γ β) β€ :=
- wittStructureInt p (n β’ x 0)
+ wittStructureInt p (n β’ X 0)
#align witt_vector.witt_zsmul WittVector.wittZsmul
/-- The polynomials used for describing the subtraction of the ring of Witt vectors. -/
def wittSub : β β MvPolynomial (Fin 2 Γ β) β€ :=
- wittStructureInt p (x 0 - x 1)
+ wittStructureInt p (X 0 - X 1)
#align witt_vector.witt_sub WittVector.wittSub
/-- The polynomials used for defining the multiplication of the ring of Witt vectors. -/
def wittMul : β β MvPolynomial (Fin 2 Γ β) β€ :=
- wittStructureInt p (x 0 * x 1)
+ wittStructureInt p (X 0 * X 1)
#align witt_vector.witt_mul WittVector.wittMul
/-- The polynomials used for defining the negation of the ring of Witt vectors. -/
def wittNeg : β β MvPolynomial (Fin 1 Γ β) β€ :=
- wittStructureInt p (-x 0)
+ wittStructureInt p (-X 0)
#align witt_vector.witt_neg WittVector.wittNeg
/-- The polynomials used for defining repeated addition of the ring of Witt vectors. -/
def wittPow (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
- wittStructureInt p (x 0 ^ n)
+ wittStructureInt p (X 0 ^ n)
#align witt_vector.witt_pow WittVector.wittPow
variable {p}
@@ -270,7 +270,7 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
@[simp]
-theorem wittAdd_zero : wittAdd p 0 = x (0, 0) + x (1, 0) :=
+theorem wittAdd_zero : wittAdd p 0 = X (0, 0) + X (1, 0) :=
by
apply MvPolynomial.map_injective (Int.castRingHom β) Int.cast_injective
simp only [witt_add, wittStructureRat, AlgHom.map_add, RingHom.map_add, rename_X,
@@ -278,7 +278,7 @@ theorem wittAdd_zero : wittAdd p 0 = x (0, 0) + x (1, 0) :=
#align witt_vector.witt_add_zero WittVector.wittAdd_zero
@[simp]
-theorem wittSub_zero : wittSub p 0 = x (0, 0) - x (1, 0) :=
+theorem wittSub_zero : wittSub p 0 = X (0, 0) - X (1, 0) :=
by
apply MvPolynomial.map_injective (Int.castRingHom β) Int.cast_injective
simp only [witt_sub, wittStructureRat, AlgHom.map_sub, RingHom.map_sub, rename_X,
@@ -286,7 +286,7 @@ theorem wittSub_zero : wittSub p 0 = x (0, 0) - x (1, 0) :=
#align witt_vector.witt_sub_zero WittVector.wittSub_zero
@[simp]
-theorem wittMul_zero : wittMul p 0 = x (0, 0) * x (1, 0) :=
+theorem wittMul_zero : wittMul p 0 = X (0, 0) * X (1, 0) :=
by
apply MvPolynomial.map_injective (Int.castRingHom β) Int.cast_injective
simp only [witt_mul, wittStructureRat, rename_X, xInTermsOfW_zero, map_X, wittPolynomial_zero,
@@ -294,7 +294,7 @@ theorem wittMul_zero : wittMul p 0 = x (0, 0) * x (1, 0) :=
#align witt_vector.witt_mul_zero WittVector.wittMul_zero
@[simp]
-theorem wittNeg_zero : wittNeg p 0 = -x (0, 0) :=
+theorem wittNeg_zero : wittNeg p 0 = -X (0, 0) :=
by
apply MvPolynomial.map_injective (Int.castRingHom β) Int.cast_injective
simp only [witt_neg, wittStructureRat, rename_X, xInTermsOfW_zero, map_X, wittPolynomial_zero,
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -263,7 +263,7 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 :=
simp only [one_pow, one_mul, xInTermsOfW_zero, sub_self, bindβ_X_right]
Β· intro i hin hi0
rw [Finset.mem_range] at hin
- rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.Pos _), mul_zero]
+ rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.Pos _), MulZeroClass.mul_zero]
Β· rw [Finset.mem_range]
intro
contradiction
@@ -319,7 +319,7 @@ theorem constantCoeff_wittSub (n : β) : constantCoeff (wittSub p n) = 0 :=
theorem constantCoeff_wittMul (n : β) : constantCoeff (wittMul p n) = 0 :=
by
apply constantCoeff_wittStructureInt p _ _ n
- simp only [mul_zero, RingHom.map_mul, constant_coeff_X]
+ simp only [MulZeroClass.mul_zero, RingHom.map_mul, constant_coeff_X]
#align witt_vector.constant_coeff_witt_mul WittVector.constantCoeff_wittMul
@[simp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -11,20 +11,20 @@ import Mathlib.RingTheory.WittVector.StructurePolynomial
# Witt vectors
In this file we define the type of `p`-typical Witt vectors and ring operations on it.
-The ring axioms are verified in `RingTheory.WittVector.Basic`.
+The ring axioms are verified in `Mathlib/RingTheory/WittVector/Basic.lean`.
For a fixed commutative ring `R` and prime `p`,
a Witt vector `x : π R` is an infinite sequence `β β R` of elements of `R`.
However, the ring operations `+` and `*` are not defined in the obvious component-wise way.
Instead, these operations are defined via certain polynomials
-using the machinery in `StructurePolynomial.lean`.
+using the machinery in `Mathlib/RingTheory/WittVector/StructurePolynomial.lean`.
The `n`th value of the sum of two Witt vectors can depend on the `0`-th through `n`th values
of the summands. This effectively simulates a βcarryingβ operation.
## Main definitions
-* `witt_vector p R`: the type of `p`-typical Witt vectors with coefficients in `R`.
-* `witt_vector.coeff x n`: projects the `n`th value of the Witt vector `x`.
+* `WittVector p R`: the type of `p`-typical Witt vectors with coefficients in `R`.
+* `WittVector.coeff x n`: projects the `n`th value of the Witt vector `x`.
## Notation
@@ -40,12 +40,12 @@ We use notation `π R`, entered `\bbW`, for the Witt vectors over `R`.
noncomputable section
-/-- `witt_vector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
+/-- `WittVector p R` is the ring of `p`-typical Witt vectors over the commutative ring `R`,
where `p` is a prime number.
If `p` is invertible in `R`, this ring is isomorphic to `β β R` (the product of `β` copies of `R`).
-If `R` is a ring of characteristic `p`, then `witt_vector p R` is a ring of characteristic `0`.
-The canonical example is `witt_vector p (zmod p)`,
+If `R` is a ring of characteristic `p`, then `WittVector p R` is a ring of characteristic `0`.
+The canonical example is `WittVector p (ZMod p)`,
which is isomorphic to the `p`-adic integers `β€_[p]`. -/
structure WittVector (p : β) (R : Type*) where mk' ::
coeff : β β R
@@ -56,13 +56,11 @@ def WittVector.mk (p : β) {R : Type*} (coeff : β β R) : WittVector p R :=
variable {p : β}
--- mathport name: exprπ
/- We cannot make this `localized` notation, because the `p` on the RHS doesn't occur on the left
Hiding the `p` in the notation is very convenient, so we opt for repeating the `local notation`
in other files that use Witt vectors. -/
-local notation "π" => WittVector p
+local notation "π" => WittVector p -- type as `\bbW`
--- type as `\bbW`
namespace WittVector
variable {R : Type*}
@@ -95,7 +93,7 @@ theorem coeff_mk (x : β β R) : (mk p x).coeff = x :=
#align witt_vector.coeff_mk WittVector.coeff_mk
/- These instances are not needed for the rest of the development,
-but it is interesting to establish early on that `witt_vector p` is a lawful functor. -/
+but it is interesting to establish early on that `WittVector p` is a lawful functor. -/
instance : Functor (WittVector p) where
map f v := mk p (f β v.coeff)
mapConst a _ := mk p fun _ => a
@@ -160,7 +158,7 @@ def wittPow (n : β) : β β MvPolynomial (Fin 1 Γ β) β€ :=
variable {p}
-/-- An auxiliary definition used in `witt_vector.eval`.
+/-- An auxiliary definition used in `WittVector.eval`.
Evaluates a polynomial whose variables come from the disjoint union of `k` copies of `β`,
with a curried evaluation `x`.
This can be defined more generally but we use only a specific instance here. -/
@@ -173,8 +171,9 @@ disjoint union of `k` copies of `β`, and let `xα΅’` be a Witt vector for `0
`eval Ο x` evaluates `Ο` mapping the variable `X_(i, n)` to the `n`th coefficient of `xα΅’`.
-Instantiating `Ο` with certain polynomials defined in `structure_polynomial.lean` establishes the
-ring operations on `π R`. For example, `witt_vector.witt_add` is such a `Ο` with `k = 2`;
+Instantiating `Ο` with certain polynomials defined in
+`Mathlib/RingTheory/WittVector/StructurePolynomial.lean` establishes the
+ring operations on `π R`. For example, `WittVector.wittAdd` is such a `Ο` with `k = 2`;
evaluating this at `(xβ, xβ)` gives us the sum of two Witt vectors `xβ + xβ`.
-/
def eval {k : β} (Ο : β β MvPolynomial (Fin k Γ β) β€) (x : Fin k β π R) : π R :=
@@ -353,16 +352,19 @@ theorem v2_coeff {p' R'} (x y : WittVector p' R') (i : Fin 2) :
-- Porting note: the lemmas below needed `coeff_mk` added to the `simp` calls
-theorem add_coeff (x y : π R) (n : β) : (x + y).coeff n = peval (wittAdd p n) ![x.coeff, y.coeff] :=
- by simp [(Β· + Β·), Add.add, eval, coeff_mk]
+theorem add_coeff (x y : π R) (n : β) :
+ (x + y).coeff n = peval (wittAdd p n) ![x.coeff, y.coeff] := by
+ simp [(Β· + Β·), Add.add, eval, coeff_mk]
#align witt_vector.add_coeff WittVector.add_coeff
-theorem sub_coeff (x y : π R) (n : β) : (x - y).coeff n = peval (wittSub p n) ![x.coeff, y.coeff] :=
- by simp [(Β· - Β·), Sub.sub, eval, coeff_mk]
+theorem sub_coeff (x y : π R) (n : β) :
+ (x - y).coeff n = peval (wittSub p n) ![x.coeff, y.coeff] := by
+ simp [(Β· - Β·), Sub.sub, eval, coeff_mk]
#align witt_vector.sub_coeff WittVector.sub_coeff
-theorem mul_coeff (x y : π R) (n : β) : (x * y).coeff n = peval (wittMul p n) ![x.coeff, y.coeff] :=
- by simp [(Β· * Β·), Mul.mul, eval, coeff_mk]
+theorem mul_coeff (x y : π R) (n : β) :
+ (x * y).coeff n = peval (wittMul p n) ![x.coeff, y.coeff] := by
+ simp [(Β· * Β·), Mul.mul, eval, coeff_mk]
#align witt_vector.mul_coeff WittVector.mul_coeff
theorem neg_coeff (x : π R) (n : β) : (-x).coeff n = peval (wittNeg p n) ![x.coeff] := by
@@ -379,8 +381,9 @@ theorem zsmul_coeff (m : β€) (x : π R) (n : β) :
simp [(Β· β’ Β·), SMul.smul, eval, Matrix.cons_fin_one, coeff_mk]
#align witt_vector.zsmul_coeff WittVector.zsmul_coeff
-theorem pow_coeff (m : β) (x : π R) (n : β) : (x ^ m).coeff n = peval (wittPow p m n) ![x.coeff] :=
- by simp [(Β· ^ Β·), Pow.pow, eval, Matrix.cons_fin_one, coeff_mk]
+theorem pow_coeff (m : β) (x : π R) (n : β) :
+ (x ^ m).coeff n = peval (wittPow p m n) ![x.coeff] := by
+ simp [(Β· ^ Β·), Pow.pow, eval, Matrix.cons_fin_one, coeff_mk]
#align witt_vector.pow_coeff WittVector.pow_coeff
theorem add_coeff_zero (x y : π R) : (x + y).coeff 0 = x.coeff 0 + y.coeff 0 := by
f ^ n
(#9617)
This involves moving lemmas from Algebra.GroupPower.Ring
to Algebra.GroupWithZero.Basic
and changing some 0 < n
assumptions to n β 0
.
From LeanAPAP
@@ -255,7 +255,7 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 := by
simp only [one_pow, one_mul, xInTermsOfW_zero, sub_self, bindβ_X_right]
Β· intro i hin hi0
rw [Finset.mem_range] at hin
- rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.pos _), mul_zero]
+ rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_ne_zero _ hp.1.ne_zero), mul_zero]
Β· rw [Finset.mem_range]; intro; contradiction
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -255,7 +255,7 @@ theorem wittOne_pos_eq_zero (n : β) (hn : 0 < n) : wittOne p n = 0 := by
simp only [one_pow, one_mul, xInTermsOfW_zero, sub_self, bindβ_X_right]
Β· intro i hin hi0
rw [Finset.mem_range] at hin
- rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.pos _), MulZeroClass.mul_zero]
+ rw [IH _ hin (Nat.pos_of_ne_zero hi0), zero_pow (pow_pos hp.1.pos _), mul_zero]
Β· rw [Finset.mem_range]; intro; contradiction
#align witt_vector.witt_one_pos_eq_zero WittVector.wittOne_pos_eq_zero
@@ -302,7 +302,7 @@ theorem constantCoeff_wittSub (n : β) : constantCoeff (wittSub p n) = 0 := by
@[simp]
theorem constantCoeff_wittMul (n : β) : constantCoeff (wittMul p n) = 0 := by
apply constantCoeff_wittStructureInt p _ _ n
- simp only [MulZeroClass.mul_zero, RingHom.map_mul, constantCoeff_X]
+ simp only [mul_zero, RingHom.map_mul, constantCoeff_X]
#align witt_vector.constant_coeff_witt_mul WittVector.constantCoeff_wittMul
@[simp]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -47,12 +47,12 @@ If `p` is invertible in `R`, this ring is isomorphic to `β β R` (the product
If `R` is a ring of characteristic `p`, then `witt_vector p R` is a ring of characteristic `0`.
The canonical example is `witt_vector p (zmod p)`,
which is isomorphic to the `p`-adic integers `β€_[p]`. -/
-structure WittVector (p : β) (R : Type _) where mk' ::
+structure WittVector (p : β) (R : Type*) where mk' ::
coeff : β β R
#align witt_vector WittVector
-- Porting note: added to make the `p` argument explicit
-def WittVector.mk (p : β) {R : Type _} (coeff : β β R) : WittVector p R := mk' coeff
+def WittVector.mk (p : β) {R : Type*} (coeff : β β R) : WittVector p R := mk' coeff
variable {p : β}
@@ -65,7 +65,7 @@ local notation "π" => WittVector p
-- type as `\bbW`
namespace WittVector
-variable {R : Type _}
+variable {R : Type*}
/-- Construct a Witt vector `mk p x : π R` from a sequence `x` of elements of `R`. -/
add_decl_doc WittVector.mk
@@ -2,14 +2,11 @@
Copyright (c) 2020 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Robert Y. Lewis
-
-! This file was ported from Lean 3 source module ring_theory.witt_vector.defs
-! leanprover-community/mathlib commit f1944b30c97c5eb626e498307dec8b022a05bd0a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.RingTheory.WittVector.StructurePolynomial
+#align_import ring_theory.witt_vector.defs from "leanprover-community/mathlib"@"f1944b30c97c5eb626e498307dec8b022a05bd0a"
+
/-!
# Witt vectors
@@ -14,13 +14,13 @@ import Mathlib.RingTheory.WittVector.StructurePolynomial
# Witt vectors
In this file we define the type of `p`-typical Witt vectors and ring operations on it.
-The ring axioms are verified in `ring_theory/witt_vector/basic.lean`.
+The ring axioms are verified in `RingTheory.WittVector.Basic`.
For a fixed commutative ring `R` and prime `p`,
a Witt vector `x : π R` is an infinite sequence `β β R` of elements of `R`.
However, the ring operations `+` and `*` are not defined in the obvious component-wise way.
Instead, these operations are defined via certain polynomials
-using the machinery in `structure_polynomial.lean`.
+using the machinery in `StructurePolynomial.lean`.
The `n`th value of the sum of two Witt vectors can depend on the `0`-th through `n`th values
of the summands. This effectively simulates a βcarryingβ operation.
@@ -55,7 +55,7 @@ structure WittVector (p : β) (R : Type _) where mk' ::
#align witt_vector WittVector
-- Porting note: added to make the `p` argument explicit
-def WittVector.mk (p : β) {R : Type _} (coeff : β β R): WittVector p R := mk' coeff
+def WittVector.mk (p : β) {R : Type _} (coeff : β β R) : WittVector p R := mk' coeff
variable {p : β}
@@ -68,7 +68,7 @@ local notation "π" => WittVector p
-- type as `\bbW`
namespace WittVector
-variable (p) {R : Type _}
+variable {R : Type _}
/-- Construct a Witt vector `mk p x : π R` from a sequence `x` of elements of `R`. -/
add_decl_doc WittVector.mk
@@ -88,9 +88,11 @@ theorem ext {x y : π R} (h : β n, x.coeff n = y.coeff n) : x = y := by
#align witt_vector.ext WittVector.ext
theorem ext_iff {x y : π R} : x = y β β n, x.coeff n = y.coeff n :=
- β¨fun h n => by rw [h], ext pβ©
+ β¨fun h n => by rw [h], extβ©
#align witt_vector.ext_iff WittVector.ext_iff
+variable (p)
+
theorem coeff_mk (x : β β R) : (mk p x).coeff = x :=
rfl
#align witt_vector.coeff_mk WittVector.coeff_mk
The unported dependencies are