ring_theory.witt_vector.defs ⟷ Mathlib.RingTheory.WittVector.Defs

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -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
Diff
@@ -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.
 
Diff
@@ -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.
 
Diff
@@ -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.
 
Diff
@@ -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
 
Diff
@@ -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
 
Diff
@@ -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
 
Diff
@@ -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`.
 
Diff
@@ -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
 
Diff
@@ -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.
 
Diff
@@ -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]
Diff
@@ -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]
Diff
@@ -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.
 
Diff
@@ -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,
Diff
@@ -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]

Changes in mathlib4

mathlib3
mathlib4
chore: tidy various files (#10453)
Diff
@@ -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
feat: The support of 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

Diff
@@ -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
 
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

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

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

Diff
@@ -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]
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -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
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,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
 
fix: filenames with typos in doc (#5836)
Diff
@@ -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.
 
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -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 : β„•}
 
feat: port RingTheory.WittVector.Basic (#4688)

Co-authored-by: adomani <adomani@gmail.com> Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -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
feat: port RingTheory.WittVector.Defs (#4687)

Dependencies 10 + 668

669 files ported (98.5%)
277482 lines ported (98.8%)
Show graph

The unported dependencies are