computability.reduceMathlib.Computability.Reduce

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -3,7 +3,7 @@ Copyright (c) 2019 Minchao Wu. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Minchao Wu, Mario Carneiro
 -/
-import Mathbin.Computability.Halting
+import Computability.Halting
 
 #align_import computability.reduce from "leanprover-community/mathlib"@"bd15ff41b70f5e2cc210f26f25a8d5c53b20d3de"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2019 Minchao Wu. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Minchao Wu, Mario Carneiro
-
-! This file was ported from Lean 3 source module computability.reduce
-! leanprover-community/mathlib commit bd15ff41b70f5e2cc210f26f25a8d5c53b20d3de
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Computability.Halting
 
+#align_import computability.reduce from "leanprover-community/mathlib"@"bd15ff41b70f5e2cc210f26f25a8d5c53b20d3de"
+
 /-!
 # Strong reducibility and degrees.
 
Diff
@@ -48,13 +48,14 @@ def ManyOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop)
 #align many_one_reducible ManyOneReducible
 -/
 
--- mathport name: «expr ≤₀ »
 infixl:1000 " ≤₀ " => ManyOneReducible
 
+#print ManyOneReducible.mk /-
 theorem ManyOneReducible.mk {α β} [Primcodable α] [Primcodable β] {f : α → β} (q : β → Prop)
     (h : Computable f) : (fun a => q (f a)) ≤₀ q :=
   ⟨f, h, fun a => Iff.rfl⟩
 #align many_one_reducible.mk ManyOneReducible.mk
+-/
 
 #print manyOneReducible_refl /-
 @[refl]
@@ -63,12 +64,14 @@ theorem manyOneReducible_refl {α} [Primcodable α] (p : α → Prop) : p ≤₀
 #align many_one_reducible_refl manyOneReducible_refl
 -/
 
+#print ManyOneReducible.trans /-
 @[trans]
 theorem ManyOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ q → q ≤₀ r → p ≤₀ r
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
     ⟨g ∘ f, c₂.comp c₁, fun a => ⟨fun h => by rwa [← h₂, ← h₁], fun h => by rwa [h₁, h₂]⟩⟩
 #align many_one_reducible.trans ManyOneReducible.trans
+-/
 
 #print reflexive_manyOneReducible /-
 theorem reflexive_manyOneReducible {α} [Primcodable α] : Reflexive (@ManyOneReducible α α _ _) :=
@@ -92,13 +95,14 @@ def OneOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop)
 #align one_one_reducible OneOneReducible
 -/
 
--- mathport name: «expr ≤₁ »
 infixl:1000 " ≤₁ " => OneOneReducible
 
+#print OneOneReducible.mk /-
 theorem OneOneReducible.mk {α β} [Primcodable α] [Primcodable β] {f : α → β} (q : β → Prop)
     (h : Computable f) (i : Injective f) : (fun a => q (f a)) ≤₁ q :=
   ⟨f, h, i, fun a => Iff.rfl⟩
 #align one_one_reducible.mk OneOneReducible.mk
+-/
 
 #print oneOneReducible_refl /-
 @[refl]
@@ -107,6 +111,7 @@ theorem oneOneReducible_refl {α} [Primcodable α] (p : α → Prop) : p ≤₁
 #align one_one_reducible_refl oneOneReducible_refl
 -/
 
+#print OneOneReducible.trans /-
 @[trans]
 theorem OneOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : p ≤₁ q → q ≤₁ r → p ≤₁ r
@@ -114,21 +119,28 @@ theorem OneOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Prim
     ⟨g ∘ f, c₂.comp c₁, i₂.comp i₁, fun a =>
       ⟨fun h => by rwa [← h₂, ← h₁], fun h => by rwa [h₁, h₂]⟩⟩
 #align one_one_reducible.trans OneOneReducible.trans
+-/
 
+#print OneOneReducible.to_many_one /-
 theorem OneOneReducible.to_many_one {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : p ≤₁ q → p ≤₀ q
   | ⟨f, c, i, h⟩ => ⟨f, c, h⟩
 #align one_one_reducible.to_many_one OneOneReducible.to_many_one
+-/
 
+#print OneOneReducible.of_equiv /-
 theorem OneOneReducible.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (q : β → Prop)
     (h : Computable e) : (q ∘ e) ≤₁ q :=
   OneOneReducible.mk _ h e.Injective
 #align one_one_reducible.of_equiv OneOneReducible.of_equiv
+-/
 
+#print OneOneReducible.of_equiv_symm /-
 theorem OneOneReducible.of_equiv_symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β}
     (q : β → Prop) (h : Computable e.symm) : q ≤₁ (q ∘ e) := by
   convert OneOneReducible.of_equiv _ h <;> funext <;> simp
 #align one_one_reducible.of_equiv_symm OneOneReducible.of_equiv_symm
+-/
 
 #print reflexive_oneOneReducible /-
 theorem reflexive_oneOneReducible {α} [Primcodable α] : Reflexive (@OneOneReducible α α _ _) :=
@@ -150,6 +162,7 @@ variable [Primcodable α] [Primcodable β] [Primcodable σ]
 
 open Computable
 
+#print ComputablePred.computable_of_manyOneReducible /-
 theorem computable_of_manyOneReducible {p : α → Prop} {q : β → Prop} (h₁ : p ≤₀ q)
     (h₂ : ComputablePred q) : ComputablePred p :=
   by
@@ -158,11 +171,14 @@ theorem computable_of_manyOneReducible {p : α → Prop} {q : β → Prop} (h₁
   rcases computable_iff.1 h₂ with ⟨g, hg, rfl⟩
   exact ⟨by infer_instance, by simpa using hg.comp c⟩
 #align computable_pred.computable_of_many_one_reducible ComputablePred.computable_of_manyOneReducible
+-/
 
+#print ComputablePred.computable_of_oneOneReducible /-
 theorem computable_of_oneOneReducible {p : α → Prop} {q : β → Prop} (h : p ≤₁ q) :
     ComputablePred q → ComputablePred p :=
   computable_of_manyOneReducible h.to_many_one
 #align computable_pred.computable_of_one_one_reducible ComputablePred.computable_of_oneOneReducible
+-/
 
 end ComputablePred
 
@@ -187,17 +203,21 @@ theorem manyOneEquiv_refl {α} [Primcodable α] (p : α → Prop) : ManyOneEquiv
 #align many_one_equiv_refl manyOneEquiv_refl
 -/
 
+#print ManyOneEquiv.symm /-
 @[symm]
 theorem ManyOneEquiv.symm {α β} [Primcodable α] [Primcodable β] {p : α → Prop} {q : β → Prop} :
     ManyOneEquiv p q → ManyOneEquiv q p :=
   And.symm
 #align many_one_equiv.symm ManyOneEquiv.symm
+-/
 
+#print ManyOneEquiv.trans /-
 @[trans]
 theorem ManyOneEquiv.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : ManyOneEquiv p q → ManyOneEquiv q r → ManyOneEquiv p r
   | ⟨pq, qp⟩, ⟨qr, rq⟩ => ⟨pq.trans qr, rq.trans qp⟩
 #align many_one_equiv.trans ManyOneEquiv.trans
+-/
 
 #print equivalence_of_manyOneEquiv /-
 theorem equivalence_of_manyOneEquiv {α} [Primcodable α] : Equivalence (@ManyOneEquiv α α _ _) :=
@@ -212,17 +232,21 @@ theorem oneOneEquiv_refl {α} [Primcodable α] (p : α → Prop) : OneOneEquiv p
 #align one_one_equiv_refl oneOneEquiv_refl
 -/
 
+#print OneOneEquiv.symm /-
 @[symm]
 theorem OneOneEquiv.symm {α β} [Primcodable α] [Primcodable β] {p : α → Prop} {q : β → Prop} :
     OneOneEquiv p q → OneOneEquiv q p :=
   And.symm
 #align one_one_equiv.symm OneOneEquiv.symm
+-/
 
+#print OneOneEquiv.trans /-
 @[trans]
 theorem OneOneEquiv.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : OneOneEquiv p q → OneOneEquiv q r → OneOneEquiv p r
   | ⟨pq, qp⟩, ⟨qr, rq⟩ => ⟨pq.trans qr, rq.trans qp⟩
 #align one_one_equiv.trans OneOneEquiv.trans
+-/
 
 #print equivalence_of_oneOneEquiv /-
 theorem equivalence_of_oneOneEquiv {α} [Primcodable α] : Equivalence (@OneOneEquiv α α _ _) :=
@@ -230,10 +254,12 @@ theorem equivalence_of_oneOneEquiv {α} [Primcodable α] : Equivalence (@OneOneE
 #align equivalence_of_one_one_equiv equivalence_of_oneOneEquiv
 -/
 
+#print OneOneEquiv.to_many_one /-
 theorem OneOneEquiv.to_many_one {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : OneOneEquiv p q → ManyOneEquiv p q
   | ⟨pq, qp⟩ => ⟨pq.to_many_one, qp.to_many_one⟩
 #align one_one_equiv.to_many_one OneOneEquiv.to_many_one
+-/
 
 #print Equiv.Computable /-
 /-- a computable bijection -/
@@ -242,15 +268,19 @@ def Equiv.Computable {α β} [Primcodable α] [Primcodable β] (e : α ≃ β) :
 #align equiv.computable Equiv.Computable
 -/
 
+#print Equiv.Computable.symm /-
 theorem Equiv.Computable.symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} :
     e.Computable → e.symm.Computable :=
   And.symm
 #align equiv.computable.symm Equiv.Computable.symm
+-/
 
+#print Equiv.Computable.trans /-
 theorem Equiv.Computable.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {e₁ : α ≃ β}
     {e₂ : β ≃ γ} : e₁.Computable → e₂.Computable → (e₁.trans e₂).Computable
   | ⟨l₁, r₁⟩, ⟨l₂, r₂⟩ => ⟨l₂.comp l₁, r₁.comp r₂⟩
 #align equiv.computable.trans Equiv.Computable.trans
+-/
 
 #print Computable.eqv /-
 theorem Computable.eqv (α) [Denumerable α] : (Denumerable.eqv α).Computable :=
@@ -258,64 +288,86 @@ theorem Computable.eqv (α) [Denumerable α] : (Denumerable.eqv α).Computable :
 #align computable.eqv Computable.eqv
 -/
 
+#print Computable.equiv₂ /-
 theorem Computable.equiv₂ (α β) [Denumerable α] [Denumerable β] :
     (Denumerable.equiv₂ α β).Computable :=
   (Computable.eqv _).trans (Computable.eqv _).symm
 #align computable.equiv₂ Computable.equiv₂
+-/
 
+#print OneOneEquiv.of_equiv /-
 theorem OneOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : OneOneEquiv (p ∘ e) p :=
   ⟨OneOneReducible.of_equiv _ h.1, OneOneReducible.of_equiv_symm _ h.2⟩
 #align one_one_equiv.of_equiv OneOneEquiv.of_equiv
+-/
 
+#print ManyOneEquiv.of_equiv /-
 theorem ManyOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : ManyOneEquiv (p ∘ e) p :=
   (OneOneEquiv.of_equiv h).to_many_one
 #align many_one_equiv.of_equiv ManyOneEquiv.of_equiv
+-/
 
+#print ManyOneEquiv.le_congr_left /-
 theorem ManyOneEquiv.le_congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv p q) : p ≤₀ r ↔ q ≤₀ r :=
   ⟨h.2.trans, h.1.trans⟩
 #align many_one_equiv.le_congr_left ManyOneEquiv.le_congr_left
+-/
 
+#print ManyOneEquiv.le_congr_right /-
 theorem ManyOneEquiv.le_congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv q r) : p ≤₀ q ↔ p ≤₀ r :=
   ⟨fun h' => h'.trans h.1, fun h' => h'.trans h.2⟩
 #align many_one_equiv.le_congr_right ManyOneEquiv.le_congr_right
+-/
 
+#print OneOneEquiv.le_congr_left /-
 theorem OneOneEquiv.le_congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv p q) : p ≤₁ r ↔ q ≤₁ r :=
   ⟨h.2.trans, h.1.trans⟩
 #align one_one_equiv.le_congr_left OneOneEquiv.le_congr_left
+-/
 
+#print OneOneEquiv.le_congr_right /-
 theorem OneOneEquiv.le_congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv q r) : p ≤₁ q ↔ p ≤₁ r :=
   ⟨fun h' => h'.trans h.1, fun h' => h'.trans h.2⟩
 #align one_one_equiv.le_congr_right OneOneEquiv.le_congr_right
+-/
 
+#print ManyOneEquiv.congr_left /-
 theorem ManyOneEquiv.congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv p q) :
     ManyOneEquiv p r ↔ ManyOneEquiv q r :=
   and_congr h.le_congr_left h.le_congr_right
 #align many_one_equiv.congr_left ManyOneEquiv.congr_left
+-/
 
+#print ManyOneEquiv.congr_right /-
 theorem ManyOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv q r) :
     ManyOneEquiv p q ↔ ManyOneEquiv p r :=
   and_congr h.le_congr_right h.le_congr_left
 #align many_one_equiv.congr_right ManyOneEquiv.congr_right
+-/
 
+#print OneOneEquiv.congr_left /-
 theorem OneOneEquiv.congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv p q) :
     OneOneEquiv p r ↔ OneOneEquiv q r :=
   and_congr h.le_congr_left h.le_congr_right
 #align one_one_equiv.congr_left OneOneEquiv.congr_left
+-/
 
+#print OneOneEquiv.congr_right /-
 theorem OneOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv q r) :
     OneOneEquiv p q ↔ OneOneEquiv p r :=
   and_congr h.le_congr_right h.le_congr_left
 #align one_one_equiv.congr_right OneOneEquiv.congr_right
+-/
 
 #print ULower.down_computable /-
 @[simp]
@@ -330,21 +382,25 @@ theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (
 #align many_one_equiv_up manyOneEquiv_up
 -/
 
--- mathport name: «expr ⊕' »
 local infixl:1001 " ⊕' " => Sum.elim
 
 open Nat.Primrec
 
+#print OneOneReducible.disjoin_left /-
 theorem OneOneReducible.disjoin_left {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : p ≤₁ p ⊕' q :=
   ⟨Sum.inl, Computable.sum_inl, fun x y => Sum.inl.inj_iff.1, fun a => Iff.rfl⟩
 #align one_one_reducible.disjoin_left OneOneReducible.disjoin_left
+-/
 
+#print OneOneReducible.disjoin_right /-
 theorem OneOneReducible.disjoin_right {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : q ≤₁ p ⊕' q :=
   ⟨Sum.inr, Computable.sum_inr, fun x y => Sum.inr.inj_iff.1, fun a => Iff.rfl⟩
 #align one_one_reducible.disjoin_right OneOneReducible.disjoin_right
+-/
 
+#print disjoin_manyOneReducible /-
 theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ r → q ≤₀ r → p ⊕' q ≤₀ r
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
@@ -352,7 +408,9 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
       Computable.id.sum_casesOn (c₁.comp Computable.snd).to₂ (c₂.comp Computable.snd).to₂, fun x =>
       by cases x <;> [apply h₁; apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
+-/
 
+#print disjoin_le /-
 theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : p ⊕' q ≤₀ r ↔ p ≤₀ r ∧ q ≤₀ r :=
   ⟨fun h =>
@@ -360,6 +418,7 @@ theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
       OneOneReducible.disjoin_right.to_many_one.trans h⟩,
     fun ⟨h₁, h₂⟩ => disjoin_manyOneReducible h₁ h₂⟩
 #align disjoin_le disjoin_le
+-/
 
 variable {α : Type u} [Primcodable α] [Inhabited α]
 
Diff
@@ -371,7 +371,7 @@ variable {γ : Type w} [Primcodable γ] [Inhabited γ]
 /-- Computable and injective mapping of predicates to sets of natural numbers.
 -/
 def toNat (p : Set α) : Set ℕ :=
-  { n | p ((Encodable.decode α n).getD default) }
+  {n | p ((Encodable.decode α n).getD default)}
 #align to_nat toNat
 -/
 
Diff
@@ -350,7 +350,7 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
     ⟨Sum.elim f g,
       Computable.id.sum_casesOn (c₁.comp Computable.snd).to₂ (c₂.comp Computable.snd).to₂, fun x =>
-      by cases x <;> [apply h₁;apply h₂]⟩
+      by cases x <;> [apply h₁; apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
 
 theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
Diff
@@ -317,16 +317,16 @@ theorem OneOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Pr
   and_congr h.le_congr_right h.le_congr_left
 #align one_one_equiv.congr_right OneOneEquiv.congr_right
 
-#print Ulower.down_computable /-
+#print ULower.down_computable /-
 @[simp]
-theorem Ulower.down_computable {α} [Primcodable α] : (Ulower.equiv α).Computable :=
+theorem ULower.down_computable {α} [Primcodable α] : (ULower.equiv α).Computable :=
   ⟨Primrec.ulower_down.to_comp, Primrec.ulower_up.to_comp⟩
-#align ulower.down_computable Ulower.down_computable
+#align ulower.down_computable ULower.down_computable
 -/
 
 #print manyOneEquiv_up /-
-theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (p ∘ Ulower.up) p :=
-  ManyOneEquiv.of_equiv Ulower.down_computable.symm
+theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (p ∘ ULower.up) p :=
+  ManyOneEquiv.of_equiv ULower.down_computable.symm
 #align many_one_equiv_up manyOneEquiv_up
 -/
 
Diff
@@ -51,12 +51,6 @@ def ManyOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop)
 -- mathport name: «expr ≤₀ »
 infixl:1000 " ≤₀ " => ManyOneReducible
 
-/- warning: many_one_reducible.mk -> ManyOneReducible.mk is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {f : α -> β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 f) -> (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {f : α -> β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 f) -> (ManyOneReducible.{u2, u1} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
-Case conversion may be inaccurate. Consider using '#align many_one_reducible.mk ManyOneReducible.mkₓ'. -/
 theorem ManyOneReducible.mk {α β} [Primcodable α] [Primcodable β] {f : α → β} (q : β → Prop)
     (h : Computable f) : (fun a => q (f a)) ≤₀ q :=
   ⟨f, h, fun a => Iff.rfl⟩
@@ -69,12 +63,6 @@ theorem manyOneReducible_refl {α} [Primcodable α] (p : α → Prop) : p ≤₀
 #align many_one_reducible_refl manyOneReducible_refl
 -/
 
-/- warning: many_one_reducible.trans -> ManyOneReducible.trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r)
-Case conversion may be inaccurate. Consider using '#align many_one_reducible.trans ManyOneReducible.transₓ'. -/
 @[trans]
 theorem ManyOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ q → q ≤₀ r → p ≤₀ r
@@ -107,12 +95,6 @@ def OneOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop)
 -- mathport name: «expr ≤₁ »
 infixl:1000 " ≤₁ " => OneOneReducible
 
-/- warning: one_one_reducible.mk -> OneOneReducible.mk is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {f : α -> β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 f) -> (Function.Injective.{succ u1, succ u2} α β f) -> (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {f : α -> β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 f) -> (Function.Injective.{succ u2, succ u1} α β f) -> (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.mk OneOneReducible.mkₓ'. -/
 theorem OneOneReducible.mk {α β} [Primcodable α] [Primcodable β] {f : α → β} (q : β → Prop)
     (h : Computable f) (i : Injective f) : (fun a => q (f a)) ≤₁ q :=
   ⟨f, h, i, fun a => Iff.rfl⟩
@@ -125,12 +107,6 @@ theorem oneOneReducible_refl {α} [Primcodable α] (p : α → Prop) : p ≤₁
 #align one_one_reducible_refl oneOneReducible_refl
 -/
 
-/- warning: one_one_reducible.trans -> OneOneReducible.trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (OneOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r) -> (OneOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) -> (OneOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r) -> (OneOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r)
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.trans OneOneReducible.transₓ'. -/
 @[trans]
 theorem OneOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : p ≤₁ q → q ≤₁ r → p ≤₁ r
@@ -139,34 +115,16 @@ theorem OneOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Prim
       ⟨fun h => by rwa [← h₂, ← h₁], fun h => by rwa [h₁, h₂]⟩⟩
 #align one_one_reducible.trans OneOneReducible.trans
 
-/- warning: one_one_reducible.to_many_one -> OneOneReducible.to_many_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u2, u1} α β _inst_1 _inst_2 p q)
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.to_many_one OneOneReducible.to_many_oneₓ'. -/
 theorem OneOneReducible.to_many_one {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : p ≤₁ q → p ≤₀ q
   | ⟨f, c, i, h⟩ => ⟨f, c, h⟩
 #align one_one_reducible.to_many_one OneOneReducible.to_many_one
 
-/- warning: one_one_reducible.of_equiv -> OneOneReducible.of_equiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) -> (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop q (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) -> (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) q)
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.of_equiv OneOneReducible.of_equivₓ'. -/
 theorem OneOneReducible.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (q : β → Prop)
     (h : Computable e) : (q ∘ e) ≤₁ q :=
   OneOneReducible.mk _ h e.Injective
 #align one_one_reducible.of_equiv OneOneReducible.of_equiv
 
-/- warning: one_one_reducible.of_equiv_symm -> OneOneReducible.of_equiv_symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β} (q : β -> Prop), (Computable.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β e))) -> (OneOneReducible.{u2, u1} β α _inst_2 _inst_1 q (Function.comp.{succ u1, succ u2, 1} α β Prop q (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β e))) -> (OneOneReducible.{u1, u2} β α _inst_2 _inst_1 q (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)))
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.of_equiv_symm OneOneReducible.of_equiv_symmₓ'. -/
 theorem OneOneReducible.of_equiv_symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β}
     (q : β → Prop) (h : Computable e.symm) : q ≤₁ (q ∘ e) := by
   convert OneOneReducible.of_equiv _ h <;> funext <;> simp
@@ -192,12 +150,6 @@ variable [Primcodable α] [Primcodable β] [Primcodable σ]
 
 open Computable
 
-/- warning: computable_pred.computable_of_many_one_reducible -> ComputablePred.computable_of_manyOneReducible is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u2} β _inst_2 q) -> (ComputablePred.{u1} α _inst_1 p)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneReducible.{u2, u1} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u1} β _inst_2 q) -> (ComputablePred.{u2} α _inst_1 p)
-Case conversion may be inaccurate. Consider using '#align computable_pred.computable_of_many_one_reducible ComputablePred.computable_of_manyOneReducibleₓ'. -/
 theorem computable_of_manyOneReducible {p : α → Prop} {q : β → Prop} (h₁ : p ≤₀ q)
     (h₂ : ComputablePred q) : ComputablePred p :=
   by
@@ -207,12 +159,6 @@ theorem computable_of_manyOneReducible {p : α → Prop} {q : β → Prop} (h₁
   exact ⟨by infer_instance, by simpa using hg.comp c⟩
 #align computable_pred.computable_of_many_one_reducible ComputablePred.computable_of_manyOneReducible
 
-/- warning: computable_pred.computable_of_one_one_reducible -> ComputablePred.computable_of_oneOneReducible is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u2} β _inst_2 q) -> (ComputablePred.{u1} α _inst_1 p)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u1} β _inst_2 q) -> (ComputablePred.{u2} α _inst_1 p)
-Case conversion may be inaccurate. Consider using '#align computable_pred.computable_of_one_one_reducible ComputablePred.computable_of_oneOneReducibleₓ'. -/
 theorem computable_of_oneOneReducible {p : α → Prop} {q : β → Prop} (h : p ≤₁ q) :
     ComputablePred q → ComputablePred p :=
   computable_of_manyOneReducible h.to_many_one
@@ -241,24 +187,12 @@ theorem manyOneEquiv_refl {α} [Primcodable α] (p : α → Prop) : ManyOneEquiv
 #align many_one_equiv_refl manyOneEquiv_refl
 -/
 
-/- warning: many_one_equiv.symm -> ManyOneEquiv.symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u1} β α _inst_2 _inst_1 q p)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u1, u2} β α _inst_2 _inst_1 q p)
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.symm ManyOneEquiv.symmₓ'. -/
 @[symm]
 theorem ManyOneEquiv.symm {α β} [Primcodable α] [Primcodable β] {p : α → Prop} {q : β → Prop} :
     ManyOneEquiv p q → ManyOneEquiv q p :=
   And.symm
 #align many_one_equiv.symm ManyOneEquiv.symm
 
-/- warning: many_one_equiv.trans -> ManyOneEquiv.trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (ManyOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (ManyOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r)
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.trans ManyOneEquiv.transₓ'. -/
 @[trans]
 theorem ManyOneEquiv.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : ManyOneEquiv p q → ManyOneEquiv q r → ManyOneEquiv p r
@@ -278,24 +212,12 @@ theorem oneOneEquiv_refl {α} [Primcodable α] (p : α → Prop) : OneOneEquiv p
 #align one_one_equiv_refl oneOneEquiv_refl
 -/
 
-/- warning: one_one_equiv.symm -> OneOneEquiv.symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u2, u1} β α _inst_2 _inst_1 q p)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u1, u2} β α _inst_2 _inst_1 q p)
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.symm OneOneEquiv.symmₓ'. -/
 @[symm]
 theorem OneOneEquiv.symm {α β} [Primcodable α] [Primcodable β] {p : α → Prop} {q : β → Prop} :
     OneOneEquiv p q → OneOneEquiv q p :=
   And.symm
 #align one_one_equiv.symm OneOneEquiv.symm
 
-/- warning: one_one_equiv.trans -> OneOneEquiv.trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (OneOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (OneOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r)
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.trans OneOneEquiv.transₓ'. -/
 @[trans]
 theorem OneOneEquiv.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : OneOneEquiv p q → OneOneEquiv q r → OneOneEquiv p r
@@ -308,12 +230,6 @@ theorem equivalence_of_oneOneEquiv {α} [Primcodable α] : Equivalence (@OneOneE
 #align equivalence_of_one_one_equiv equivalence_of_oneOneEquiv
 -/
 
-/- warning: one_one_equiv.to_many_one -> OneOneEquiv.to_many_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q)
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.to_many_one OneOneEquiv.to_many_oneₓ'. -/
 theorem OneOneEquiv.to_many_one {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : OneOneEquiv p q → ManyOneEquiv p q
   | ⟨pq, qp⟩ => ⟨pq.to_many_one, qp.to_many_one⟩
@@ -326,23 +242,11 @@ def Equiv.Computable {α β} [Primcodable α] [Primcodable β] (e : α ≃ β) :
 #align equiv.computable Equiv.Computable
 -/
 
-/- warning: equiv.computable.symm -> Equiv.Computable.symm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (Equiv.Computable.{u2, u1} β α _inst_2 _inst_1 (Equiv.symm.{succ u1, succ u2} α β e))
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (Equiv.Computable.{u1, u2} β α _inst_2 _inst_1 (Equiv.symm.{succ u2, succ u1} α β e))
-Case conversion may be inaccurate. Consider using '#align equiv.computable.symm Equiv.Computable.symmₓ'. -/
 theorem Equiv.Computable.symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} :
     e.Computable → e.symm.Computable :=
   And.symm
 #align equiv.computable.symm Equiv.Computable.symm
 
-/- warning: equiv.computable.trans -> Equiv.Computable.trans is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {e₁ : Equiv.{succ u1, succ u2} α β} {e₂ : Equiv.{succ u2, succ u3} β γ}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e₁) -> (Equiv.Computable.{u2, u3} β γ _inst_2 _inst_3 e₂) -> (Equiv.Computable.{u1, u3} α γ _inst_1 _inst_3 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ e₁ e₂))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {e₁ : Equiv.{succ u3, succ u2} α β} {e₂ : Equiv.{succ u2, succ u1} β γ}, (Equiv.Computable.{u3, u2} α β _inst_1 _inst_2 e₁) -> (Equiv.Computable.{u2, u1} β γ _inst_2 _inst_3 e₂) -> (Equiv.Computable.{u3, u1} α γ _inst_1 _inst_3 (Equiv.trans.{succ u3, succ u2, succ u1} α β γ e₁ e₂))
-Case conversion may be inaccurate. Consider using '#align equiv.computable.trans Equiv.Computable.transₓ'. -/
 theorem Equiv.Computable.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {e₁ : α ≃ β}
     {e₂ : β ≃ γ} : e₁.Computable → e₂.Computable → (e₁.trans e₂).Computable
   | ⟨l₁, r₁⟩, ⟨l₂, r₂⟩ => ⟨l₂.comp l₁, r₁.comp r₂⟩
@@ -354,125 +258,59 @@ theorem Computable.eqv (α) [Denumerable α] : (Denumerable.eqv α).Computable :
 #align computable.eqv Computable.eqv
 -/
 
-/- warning: computable.equiv₂ -> Computable.equiv₂ is a dubious translation:
-lean 3 declaration is
-  forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : Denumerable.{u1} α] [_inst_2 : Denumerable.{u2} β], Equiv.Computable.{u1, u2} α β (Primcodable.ofDenumerable.{u1} α _inst_1) (Primcodable.ofDenumerable.{u2} β _inst_2) (Denumerable.equiv₂.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
-  forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : Denumerable.{u2} α] [_inst_2 : Denumerable.{u1} β], Equiv.Computable.{u2, u1} α β (Primcodable.ofDenumerable.{u2} α _inst_1) (Primcodable.ofDenumerable.{u1} β _inst_2) (Denumerable.equiv₂.{u2, u1} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align computable.equiv₂ Computable.equiv₂ₓ'. -/
 theorem Computable.equiv₂ (α β) [Denumerable α] [Denumerable β] :
     (Denumerable.equiv₂ α β).Computable :=
   (Computable.eqv _).trans (Computable.eqv _).symm
 #align computable.equiv₂ Computable.equiv₂
 
-/- warning: one_one_equiv.of_equiv -> OneOneEquiv.of_equiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop p (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) p)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.of_equiv OneOneEquiv.of_equivₓ'. -/
 theorem OneOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : OneOneEquiv (p ∘ e) p :=
   ⟨OneOneReducible.of_equiv _ h.1, OneOneReducible.of_equiv_symm _ h.2⟩
 #align one_one_equiv.of_equiv OneOneEquiv.of_equiv
 
-/- warning: many_one_equiv.of_equiv -> ManyOneEquiv.of_equiv is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop p (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) p)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.of_equiv ManyOneEquiv.of_equivₓ'. -/
 theorem ManyOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : ManyOneEquiv (p ∘ e) p :=
   (OneOneEquiv.of_equiv h).to_many_one
 #align many_one_equiv.of_equiv ManyOneEquiv.of_equiv
 
-/- warning: many_one_equiv.le_congr_left -> ManyOneEquiv.le_congr_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r))
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.le_congr_left ManyOneEquiv.le_congr_leftₓ'. -/
 theorem ManyOneEquiv.le_congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv p q) : p ≤₀ r ↔ q ≤₀ r :=
   ⟨h.2.trans, h.1.trans⟩
 #align many_one_equiv.le_congr_left ManyOneEquiv.le_congr_left
 
-/- warning: many_one_equiv.le_congr_right -> ManyOneEquiv.le_congr_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r))
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.le_congr_right ManyOneEquiv.le_congr_rightₓ'. -/
 theorem ManyOneEquiv.le_congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv q r) : p ≤₀ q ↔ p ≤₀ r :=
   ⟨fun h' => h'.trans h.1, fun h' => h'.trans h.2⟩
 #align many_one_equiv.le_congr_right ManyOneEquiv.le_congr_right
 
-/- warning: one_one_equiv.le_congr_left -> OneOneEquiv.le_congr_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) (OneOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) (OneOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r))
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.le_congr_left OneOneEquiv.le_congr_leftₓ'. -/
 theorem OneOneEquiv.le_congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv p q) : p ≤₁ r ↔ q ≤₁ r :=
   ⟨h.2.trans, h.1.trans⟩
 #align one_one_equiv.le_congr_left OneOneEquiv.le_congr_left
 
-/- warning: one_one_equiv.le_congr_right -> OneOneEquiv.le_congr_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) (OneOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) (OneOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r))
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.le_congr_right OneOneEquiv.le_congr_rightₓ'. -/
 theorem OneOneEquiv.le_congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv q r) : p ≤₁ q ↔ p ≤₁ r :=
   ⟨fun h' => h'.trans h.1, fun h' => h'.trans h.2⟩
 #align one_one_equiv.le_congr_right OneOneEquiv.le_congr_right
 
-/- warning: many_one_equiv.congr_left -> ManyOneEquiv.congr_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r) (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r) (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r))
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.congr_left ManyOneEquiv.congr_leftₓ'. -/
 theorem ManyOneEquiv.congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv p q) :
     ManyOneEquiv p r ↔ ManyOneEquiv q r :=
   and_congr h.le_congr_left h.le_congr_right
 #align many_one_equiv.congr_left ManyOneEquiv.congr_left
 
-/- warning: many_one_equiv.congr_right -> ManyOneEquiv.congr_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) (ManyOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) (ManyOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r))
-Case conversion may be inaccurate. Consider using '#align many_one_equiv.congr_right ManyOneEquiv.congr_rightₓ'. -/
 theorem ManyOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv q r) :
     ManyOneEquiv p q ↔ ManyOneEquiv p r :=
   and_congr h.le_congr_right h.le_congr_left
 #align many_one_equiv.congr_right ManyOneEquiv.congr_right
 
-/- warning: one_one_equiv.congr_left -> OneOneEquiv.congr_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r) (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r) (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r))
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.congr_left OneOneEquiv.congr_leftₓ'. -/
 theorem OneOneEquiv.congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv p q) :
     OneOneEquiv p r ↔ OneOneEquiv q r :=
   and_congr h.le_congr_left h.le_congr_right
 #align one_one_equiv.congr_left OneOneEquiv.congr_left
 
-/- warning: one_one_equiv.congr_right -> OneOneEquiv.congr_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) (OneOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) (OneOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r))
-Case conversion may be inaccurate. Consider using '#align one_one_equiv.congr_right OneOneEquiv.congr_rightₓ'. -/
 theorem OneOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv q r) :
     OneOneEquiv p q ↔ OneOneEquiv p r :=
@@ -497,34 +335,16 @@ local infixl:1001 " ⊕' " => Sum.elim
 
 open Nat.Primrec
 
-/- warning: one_one_reducible.disjoin_left -> OneOneReducible.disjoin_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u1, max u1 u2} α (Sum.{u1, u2} α β) _inst_1 (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) p (Sum.elim.{u1, u2, 1} α β Prop p q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u2, max u1 u2} α (Sum.{u2, u1} α β) _inst_1 (Primcodable.sum.{u2, u1} α β _inst_1 _inst_2) p (Sum.elim.{u2, u1, 1} α β Prop p q)
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.disjoin_left OneOneReducible.disjoin_leftₓ'. -/
 theorem OneOneReducible.disjoin_left {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : p ≤₁ p ⊕' q :=
   ⟨Sum.inl, Computable.sum_inl, fun x y => Sum.inl.inj_iff.1, fun a => Iff.rfl⟩
 #align one_one_reducible.disjoin_left OneOneReducible.disjoin_left
 
-/- warning: one_one_reducible.disjoin_right -> OneOneReducible.disjoin_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u2, max u1 u2} β (Sum.{u1, u2} α β) _inst_2 (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) q (Sum.elim.{u1, u2, 1} α β Prop p q)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u1, max u1 u2} β (Sum.{u2, u1} α β) _inst_2 (Primcodable.sum.{u2, u1} α β _inst_1 _inst_2) q (Sum.elim.{u2, u1, 1} α β Prop p q)
-Case conversion may be inaccurate. Consider using '#align one_one_reducible.disjoin_right OneOneReducible.disjoin_rightₓ'. -/
 theorem OneOneReducible.disjoin_right {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : q ≤₁ p ⊕' q :=
   ⟨Sum.inr, Computable.sum_inr, fun x y => Sum.inr.inj_iff.1, fun a => Iff.rfl⟩
 #align one_one_reducible.disjoin_right OneOneReducible.disjoin_right
 
-/- warning: disjoin_many_one_reducible -> disjoin_manyOneReducible is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) -> (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{max u1 u2, u3} (Sum.{u1, u2} α β) γ (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u1, u2, 1} α β Prop p q) r)
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) -> (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{max u2 u3, u1} (Sum.{u3, u2} α β) γ (Primcodable.sum.{u3, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u3, u2, 1} α β Prop p q) r)
-Case conversion may be inaccurate. Consider using '#align disjoin_many_one_reducible disjoin_manyOneReducibleₓ'. -/
 theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ r → q ≤₀ r → p ⊕' q ≤₀ r
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
@@ -533,12 +353,6 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
       by cases x <;> [apply h₁;apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
 
-/- warning: disjoin_le -> disjoin_le is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, Iff (ManyOneReducible.{max u1 u2, u3} (Sum.{u1, u2} α β) γ (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u1, u2, 1} α β Prop p q) r) (And (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r))
-but is expected to have type
-  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, Iff (ManyOneReducible.{max u2 u3, u1} (Sum.{u3, u2} α β) γ (Primcodable.sum.{u3, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u3, u2, 1} α β Prop p q) r) (And (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r))
-Case conversion may be inaccurate. Consider using '#align disjoin_le disjoin_leₓ'. -/
 theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : p ⊕' q ≤₀ r ↔ p ≤₀ r ∧ q ≤₀ r :=
   ⟨fun h =>
Diff
@@ -691,7 +691,6 @@ theorem of_le_of {p : α → Prop} {q : β → Prop} : of p ≤ of q ↔ p ≤
 
 private theorem le_refl (d : ManyOneDegree) : d ≤ d := by
   induction d using ManyOneDegree.ind_on <;> simp
-#align many_one_degree.le_refl many_one_degree.le_refl
 
 private theorem le_antisymm {d₁ d₂ : ManyOneDegree} : d₁ ≤ d₂ → d₂ ≤ d₁ → d₁ = d₂ :=
   by
@@ -699,7 +698,6 @@ private theorem le_antisymm {d₁ d₂ : ManyOneDegree} : d₁ ≤ d₂ → d₂
   induction d₂ using ManyOneDegree.ind_on
   intro hp hq
   simp_all only [ManyOneEquiv, of_le_of, of_eq_of, true_and_iff]
-#align many_one_degree.le_antisymm many_one_degree.le_antisymm
 
 private theorem le_trans {d₁ d₂ d₃ : ManyOneDegree} : d₁ ≤ d₂ → d₂ ≤ d₃ → d₁ ≤ d₃ :=
   by
@@ -707,7 +705,6 @@ private theorem le_trans {d₁ d₂ d₃ : ManyOneDegree} : d₁ ≤ d₂ → d
   induction d₂ using ManyOneDegree.ind_on
   induction d₃ using ManyOneDegree.ind_on
   apply ManyOneReducible.trans
-#align many_one_degree.le_trans many_one_degree.le_trans
 
 instance : PartialOrder ManyOneDegree where
   le := (· ≤ ·)
Diff
@@ -530,7 +530,7 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
     ⟨Sum.elim f g,
       Computable.id.sum_casesOn (c₁.comp Computable.snd).to₂ (c₂.comp Computable.snd).to₂, fun x =>
-      by cases x <;> [apply h₁, apply h₂]⟩
+      by cases x <;> [apply h₁;apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
 
 /- warning: disjoin_le -> disjoin_le is a dubious translation:
Diff
@@ -154,7 +154,7 @@ theorem OneOneReducible.to_many_one {α β} [Primcodable α] [Primcodable β] {p
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) -> (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop q (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) q)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) -> (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) q)
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) -> (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) q)
 Case conversion may be inaccurate. Consider using '#align one_one_reducible.of_equiv OneOneReducible.of_equivₓ'. -/
 theorem OneOneReducible.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (q : β → Prop)
     (h : Computable e) : (q ∘ e) ≤₁ q :=
@@ -165,7 +165,7 @@ theorem OneOneReducible.of_equiv {α β} [Primcodable α] [Primcodable β] {e :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β} (q : β -> Prop), (Computable.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β e))) -> (OneOneReducible.{u2, u1} β α _inst_2 _inst_1 q (Function.comp.{succ u1, succ u2, 1} α β Prop q (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)))
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β e))) -> (OneOneReducible.{u1, u2} β α _inst_2 _inst_1 q (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)))
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β e))) -> (OneOneReducible.{u1, u2} β α _inst_2 _inst_1 q (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)))
 Case conversion may be inaccurate. Consider using '#align one_one_reducible.of_equiv_symm OneOneReducible.of_equiv_symmₓ'. -/
 theorem OneOneReducible.of_equiv_symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β}
     (q : β → Prop) (h : Computable e.symm) : q ≤₁ (q ∘ e) := by
@@ -369,7 +369,7 @@ theorem Computable.equiv₂ (α β) [Denumerable α] [Denumerable β] :
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop p (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) p)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
 Case conversion may be inaccurate. Consider using '#align one_one_equiv.of_equiv OneOneEquiv.of_equivₓ'. -/
 theorem OneOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : OneOneEquiv (p ∘ e) p :=
@@ -380,7 +380,7 @@ theorem OneOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α 
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop p (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) p)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
 Case conversion may be inaccurate. Consider using '#align many_one_equiv.of_equiv ManyOneEquiv.of_equivₓ'. -/
 theorem ManyOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : ManyOneEquiv (p ∘ e) p :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Minchao Wu, Mario Carneiro
 
 ! This file was ported from Lean 3 source module computability.reduce
-! leanprover-community/mathlib commit d13b3a4a392ea7273dfa4727dbd1892e26cfd518
+! leanprover-community/mathlib commit bd15ff41b70f5e2cc210f26f25a8d5c53b20d3de
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Computability.Halting
 /-!
 # Strong reducibility and degrees.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file defines the notions of computable many-one reduction and one-one
 reduction between sets, and shows that the corresponding degrees form a
 semilattice.
Diff
@@ -35,6 +35,7 @@ universe u v w
 
 open Function
 
+#print ManyOneReducible /-
 /--
 `p` is many-one reducible to `q` if there is a computable function translating questions about `p`
 to questions about `q`.
@@ -42,20 +43,35 @@ to questions about `q`.
 def ManyOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop) (q : β → Prop) :=
   ∃ f, Computable f ∧ ∀ a, p a ↔ q (f a)
 #align many_one_reducible ManyOneReducible
+-/
 
 -- mathport name: «expr ≤₀ »
 infixl:1000 " ≤₀ " => ManyOneReducible
 
+/- warning: many_one_reducible.mk -> ManyOneReducible.mk is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {f : α -> β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 f) -> (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {f : α -> β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 f) -> (ManyOneReducible.{u2, u1} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
+Case conversion may be inaccurate. Consider using '#align many_one_reducible.mk ManyOneReducible.mkₓ'. -/
 theorem ManyOneReducible.mk {α β} [Primcodable α] [Primcodable β] {f : α → β} (q : β → Prop)
     (h : Computable f) : (fun a => q (f a)) ≤₀ q :=
   ⟨f, h, fun a => Iff.rfl⟩
 #align many_one_reducible.mk ManyOneReducible.mk
 
+#print manyOneReducible_refl /-
 @[refl]
 theorem manyOneReducible_refl {α} [Primcodable α] (p : α → Prop) : p ≤₀ p :=
   ⟨id, Computable.id, by simp⟩
 #align many_one_reducible_refl manyOneReducible_refl
+-/
 
+/- warning: many_one_reducible.trans -> ManyOneReducible.trans is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r)
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r)
+Case conversion may be inaccurate. Consider using '#align many_one_reducible.trans ManyOneReducible.transₓ'. -/
 @[trans]
 theorem ManyOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ q → q ≤₀ r → p ≤₀ r
@@ -63,14 +79,19 @@ theorem ManyOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Pri
     ⟨g ∘ f, c₂.comp c₁, fun a => ⟨fun h => by rwa [← h₂, ← h₁], fun h => by rwa [h₁, h₂]⟩⟩
 #align many_one_reducible.trans ManyOneReducible.trans
 
+#print reflexive_manyOneReducible /-
 theorem reflexive_manyOneReducible {α} [Primcodable α] : Reflexive (@ManyOneReducible α α _ _) :=
   manyOneReducible_refl
 #align reflexive_many_one_reducible reflexive_manyOneReducible
+-/
 
+#print transitive_manyOneReducible /-
 theorem transitive_manyOneReducible {α} [Primcodable α] : Transitive (@ManyOneReducible α α _ _) :=
   fun p q r => ManyOneReducible.trans
 #align transitive_many_one_reducible transitive_manyOneReducible
+-/
 
+#print OneOneReducible /-
 /--
 `p` is one-one reducible to `q` if there is an injective computable function translating questions
 about `p` to questions about `q`.
@@ -78,20 +99,35 @@ about `p` to questions about `q`.
 def OneOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop) (q : β → Prop) :=
   ∃ f, Computable f ∧ Injective f ∧ ∀ a, p a ↔ q (f a)
 #align one_one_reducible OneOneReducible
+-/
 
 -- mathport name: «expr ≤₁ »
 infixl:1000 " ≤₁ " => OneOneReducible
 
+/- warning: one_one_reducible.mk -> OneOneReducible.mk is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {f : α -> β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 f) -> (Function.Injective.{succ u1, succ u2} α β f) -> (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {f : α -> β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 f) -> (Function.Injective.{succ u2, succ u1} α β f) -> (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 (fun (a : α) => q (f a)) q)
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.mk OneOneReducible.mkₓ'. -/
 theorem OneOneReducible.mk {α β} [Primcodable α] [Primcodable β] {f : α → β} (q : β → Prop)
     (h : Computable f) (i : Injective f) : (fun a => q (f a)) ≤₁ q :=
   ⟨f, h, i, fun a => Iff.rfl⟩
 #align one_one_reducible.mk OneOneReducible.mk
 
+#print oneOneReducible_refl /-
 @[refl]
 theorem oneOneReducible_refl {α} [Primcodable α] (p : α → Prop) : p ≤₁ p :=
   ⟨id, Computable.id, injective_id, by simp⟩
 #align one_one_reducible_refl oneOneReducible_refl
+-/
 
+/- warning: one_one_reducible.trans -> OneOneReducible.trans is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (OneOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r) -> (OneOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r)
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) -> (OneOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r) -> (OneOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r)
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.trans OneOneReducible.transₓ'. -/
 @[trans]
 theorem OneOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : p ≤₁ q → q ≤₁ r → p ≤₁ r
@@ -100,28 +136,50 @@ theorem OneOneReducible.trans {α β γ} [Primcodable α] [Primcodable β] [Prim
       ⟨fun h => by rwa [← h₂, ← h₁], fun h => by rwa [h₁, h₂]⟩⟩
 #align one_one_reducible.trans OneOneReducible.trans
 
+/- warning: one_one_reducible.to_many_one -> OneOneReducible.to_many_one is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 p q) -> (ManyOneReducible.{u2, u1} α β _inst_1 _inst_2 p q)
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.to_many_one OneOneReducible.to_many_oneₓ'. -/
 theorem OneOneReducible.to_many_one {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : p ≤₁ q → p ≤₀ q
   | ⟨f, c, i, h⟩ => ⟨f, c, h⟩
 #align one_one_reducible.to_many_one OneOneReducible.to_many_one
 
+/- warning: one_one_reducible.of_equiv -> OneOneReducible.of_equiv is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β} (q : β -> Prop), (Computable.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) -> (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop q (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) -> (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) q)
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.of_equiv OneOneReducible.of_equivₓ'. -/
 theorem OneOneReducible.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (q : β → Prop)
     (h : Computable e) : (q ∘ e) ≤₁ q :=
   OneOneReducible.mk _ h e.Injective
 #align one_one_reducible.of_equiv OneOneReducible.of_equiv
 
+/- warning: one_one_reducible.of_equiv_symm -> OneOneReducible.of_equiv_symm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β} (q : β -> Prop), (Computable.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β e))) -> (OneOneReducible.{u2, u1} β α _inst_2 _inst_1 q (Function.comp.{succ u1, succ u2, 1} α β Prop q (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)))
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β} (q : β -> Prop), (Computable.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β e))) -> (OneOneReducible.{u1, u2} β α _inst_2 _inst_1 q (Function.comp.{succ u2, succ u1, 1} α β Prop q (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)))
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.of_equiv_symm OneOneReducible.of_equiv_symmₓ'. -/
 theorem OneOneReducible.of_equiv_symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β}
     (q : β → Prop) (h : Computable e.symm) : q ≤₁ (q ∘ e) := by
   convert OneOneReducible.of_equiv _ h <;> funext <;> simp
 #align one_one_reducible.of_equiv_symm OneOneReducible.of_equiv_symm
 
+#print reflexive_oneOneReducible /-
 theorem reflexive_oneOneReducible {α} [Primcodable α] : Reflexive (@OneOneReducible α α _ _) :=
   oneOneReducible_refl
 #align reflexive_one_one_reducible reflexive_oneOneReducible
+-/
 
+#print transitive_oneOneReducible /-
 theorem transitive_oneOneReducible {α} [Primcodable α] : Transitive (@OneOneReducible α α _ _) :=
   fun p q r => OneOneReducible.trans
 #align transitive_one_one_reducible transitive_oneOneReducible
+-/
 
 namespace ComputablePred
 
@@ -131,6 +189,12 @@ variable [Primcodable α] [Primcodable β] [Primcodable σ]
 
 open Computable
 
+/- warning: computable_pred.computable_of_many_one_reducible -> ComputablePred.computable_of_manyOneReducible is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u2} β _inst_2 q) -> (ComputablePred.{u1} α _inst_1 p)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneReducible.{u2, u1} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u1} β _inst_2 q) -> (ComputablePred.{u2} α _inst_1 p)
+Case conversion may be inaccurate. Consider using '#align computable_pred.computable_of_many_one_reducible ComputablePred.computable_of_manyOneReducibleₓ'. -/
 theorem computable_of_manyOneReducible {p : α → Prop} {q : β → Prop} (h₁ : p ≤₀ q)
     (h₂ : ComputablePred q) : ComputablePred p :=
   by
@@ -140,6 +204,12 @@ theorem computable_of_manyOneReducible {p : α → Prop} {q : β → Prop} (h₁
   exact ⟨by infer_instance, by simpa using hg.comp c⟩
 #align computable_pred.computable_of_many_one_reducible ComputablePred.computable_of_manyOneReducible
 
+/- warning: computable_pred.computable_of_one_one_reducible -> ComputablePred.computable_of_oneOneReducible is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u2} β _inst_2 q) -> (ComputablePred.{u1} α _inst_1 p)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneReducible.{u2, u1} α β _inst_1 _inst_2 p q) -> (ComputablePred.{u1} β _inst_2 q) -> (ComputablePred.{u2} α _inst_1 p)
+Case conversion may be inaccurate. Consider using '#align computable_pred.computable_of_one_one_reducible ComputablePred.computable_of_oneOneReducibleₓ'. -/
 theorem computable_of_oneOneReducible {p : α → Prop} {q : β → Prop} (h : p ≤₁ q) :
     ComputablePred q → ComputablePred p :=
   computable_of_manyOneReducible h.to_many_one
@@ -147,165 +217,311 @@ theorem computable_of_oneOneReducible {p : α → Prop} {q : β → Prop} (h : p
 
 end ComputablePred
 
+#print ManyOneEquiv /-
 /-- `p` and `q` are many-one equivalent if each one is many-one reducible to the other. -/
 def ManyOneEquiv {α β} [Primcodable α] [Primcodable β] (p : α → Prop) (q : β → Prop) :=
   p ≤₀ q ∧ q ≤₀ p
 #align many_one_equiv ManyOneEquiv
+-/
 
+#print OneOneEquiv /-
 /-- `p` and `q` are one-one equivalent if each one is one-one reducible to the other. -/
 def OneOneEquiv {α β} [Primcodable α] [Primcodable β] (p : α → Prop) (q : β → Prop) :=
   p ≤₁ q ∧ q ≤₁ p
 #align one_one_equiv OneOneEquiv
+-/
 
+#print manyOneEquiv_refl /-
 @[refl]
 theorem manyOneEquiv_refl {α} [Primcodable α] (p : α → Prop) : ManyOneEquiv p p :=
   ⟨manyOneReducible_refl _, manyOneReducible_refl _⟩
 #align many_one_equiv_refl manyOneEquiv_refl
+-/
 
+/- warning: many_one_equiv.symm -> ManyOneEquiv.symm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u1} β α _inst_2 _inst_1 q p)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u1, u2} β α _inst_2 _inst_1 q p)
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.symm ManyOneEquiv.symmₓ'. -/
 @[symm]
 theorem ManyOneEquiv.symm {α β} [Primcodable α] [Primcodable β] {p : α → Prop} {q : β → Prop} :
     ManyOneEquiv p q → ManyOneEquiv q p :=
   And.symm
 #align many_one_equiv.symm ManyOneEquiv.symm
 
+/- warning: many_one_equiv.trans -> ManyOneEquiv.trans is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (ManyOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r)
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (ManyOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r)
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.trans ManyOneEquiv.transₓ'. -/
 @[trans]
 theorem ManyOneEquiv.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : ManyOneEquiv p q → ManyOneEquiv q r → ManyOneEquiv p r
   | ⟨pq, qp⟩, ⟨qr, rq⟩ => ⟨pq.trans qr, rq.trans qp⟩
 #align many_one_equiv.trans ManyOneEquiv.trans
 
+#print equivalence_of_manyOneEquiv /-
 theorem equivalence_of_manyOneEquiv {α} [Primcodable α] : Equivalence (@ManyOneEquiv α α _ _) :=
   ⟨manyOneEquiv_refl, fun x y => ManyOneEquiv.symm, fun x y z => ManyOneEquiv.trans⟩
 #align equivalence_of_many_one_equiv equivalence_of_manyOneEquiv
+-/
 
+#print oneOneEquiv_refl /-
 @[refl]
 theorem oneOneEquiv_refl {α} [Primcodable α] (p : α → Prop) : OneOneEquiv p p :=
   ⟨oneOneReducible_refl _, oneOneReducible_refl _⟩
 #align one_one_equiv_refl oneOneEquiv_refl
+-/
 
+/- warning: one_one_equiv.symm -> OneOneEquiv.symm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u2, u1} β α _inst_2 _inst_1 q p)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u1, u2} β α _inst_2 _inst_1 q p)
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.symm OneOneEquiv.symmₓ'. -/
 @[symm]
 theorem OneOneEquiv.symm {α β} [Primcodable α] [Primcodable β] {p : α → Prop} {q : β → Prop} :
     OneOneEquiv p q → OneOneEquiv q p :=
   And.symm
 #align one_one_equiv.symm OneOneEquiv.symm
 
+/- warning: one_one_equiv.trans -> OneOneEquiv.trans is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (OneOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r)
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (OneOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r)
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.trans OneOneEquiv.transₓ'. -/
 @[trans]
 theorem OneOneEquiv.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : OneOneEquiv p q → OneOneEquiv q r → OneOneEquiv p r
   | ⟨pq, qp⟩, ⟨qr, rq⟩ => ⟨pq.trans qr, rq.trans qp⟩
 #align one_one_equiv.trans OneOneEquiv.trans
 
+#print equivalence_of_oneOneEquiv /-
 theorem equivalence_of_oneOneEquiv {α} [Primcodable α] : Equivalence (@OneOneEquiv α α _ _) :=
   ⟨oneOneEquiv_refl, fun x y => OneOneEquiv.symm, fun x y z => OneOneEquiv.trans⟩
 #align equivalence_of_one_one_equiv equivalence_of_oneOneEquiv
+-/
 
+/- warning: one_one_equiv.to_many_one -> OneOneEquiv.to_many_one is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, (OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q) -> (ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 p q)
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.to_many_one OneOneEquiv.to_many_oneₓ'. -/
 theorem OneOneEquiv.to_many_one {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : OneOneEquiv p q → ManyOneEquiv p q
   | ⟨pq, qp⟩ => ⟨pq.to_many_one, qp.to_many_one⟩
 #align one_one_equiv.to_many_one OneOneEquiv.to_many_one
 
+#print Equiv.Computable /-
 /-- a computable bijection -/
 def Equiv.Computable {α β} [Primcodable α] [Primcodable β] (e : α ≃ β) :=
   Computable e ∧ Computable e.symm
 #align equiv.computable Equiv.Computable
+-/
 
+/- warning: equiv.computable.symm -> Equiv.Computable.symm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (Equiv.Computable.{u2, u1} β α _inst_2 _inst_1 (Equiv.symm.{succ u1, succ u2} α β e))
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (Equiv.Computable.{u1, u2} β α _inst_2 _inst_1 (Equiv.symm.{succ u2, succ u1} α β e))
+Case conversion may be inaccurate. Consider using '#align equiv.computable.symm Equiv.Computable.symmₓ'. -/
 theorem Equiv.Computable.symm {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} :
     e.Computable → e.symm.Computable :=
   And.symm
 #align equiv.computable.symm Equiv.Computable.symm
 
+/- warning: equiv.computable.trans -> Equiv.Computable.trans is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {e₁ : Equiv.{succ u1, succ u2} α β} {e₂ : Equiv.{succ u2, succ u3} β γ}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e₁) -> (Equiv.Computable.{u2, u3} β γ _inst_2 _inst_3 e₂) -> (Equiv.Computable.{u1, u3} α γ _inst_1 _inst_3 (Equiv.trans.{succ u1, succ u2, succ u3} α β γ e₁ e₂))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {e₁ : Equiv.{succ u3, succ u2} α β} {e₂ : Equiv.{succ u2, succ u1} β γ}, (Equiv.Computable.{u3, u2} α β _inst_1 _inst_2 e₁) -> (Equiv.Computable.{u2, u1} β γ _inst_2 _inst_3 e₂) -> (Equiv.Computable.{u3, u1} α γ _inst_1 _inst_3 (Equiv.trans.{succ u3, succ u2, succ u1} α β γ e₁ e₂))
+Case conversion may be inaccurate. Consider using '#align equiv.computable.trans Equiv.Computable.transₓ'. -/
 theorem Equiv.Computable.trans {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {e₁ : α ≃ β}
     {e₂ : β ≃ γ} : e₁.Computable → e₂.Computable → (e₁.trans e₂).Computable
   | ⟨l₁, r₁⟩, ⟨l₂, r₂⟩ => ⟨l₂.comp l₁, r₁.comp r₂⟩
 #align equiv.computable.trans Equiv.Computable.trans
 
+#print Computable.eqv /-
 theorem Computable.eqv (α) [Denumerable α] : (Denumerable.eqv α).Computable :=
   ⟨Computable.encode, Computable.ofNat _⟩
 #align computable.eqv Computable.eqv
+-/
 
+/- warning: computable.equiv₂ -> Computable.equiv₂ is a dubious translation:
+lean 3 declaration is
+  forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : Denumerable.{u1} α] [_inst_2 : Denumerable.{u2} β], Equiv.Computable.{u1, u2} α β (Primcodable.ofDenumerable.{u1} α _inst_1) (Primcodable.ofDenumerable.{u2} β _inst_2) (Denumerable.equiv₂.{u1, u2} α β _inst_1 _inst_2)
+but is expected to have type
+  forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : Denumerable.{u2} α] [_inst_2 : Denumerable.{u1} β], Equiv.Computable.{u2, u1} α β (Primcodable.ofDenumerable.{u2} α _inst_1) (Primcodable.ofDenumerable.{u1} β _inst_2) (Denumerable.equiv₂.{u2, u1} α β _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align computable.equiv₂ Computable.equiv₂ₓ'. -/
 theorem Computable.equiv₂ (α β) [Denumerable α] [Denumerable β] :
     (Denumerable.equiv₂ α β).Computable :=
   (Computable.eqv _).trans (Computable.eqv _).symm
 #align computable.equiv₂ Computable.equiv₂
 
+/- warning: one_one_equiv.of_equiv -> OneOneEquiv.of_equiv is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop p (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) p)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, OneOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.of_equiv OneOneEquiv.of_equivₓ'. -/
 theorem OneOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : OneOneEquiv (p ∘ e) p :=
   ⟨OneOneReducible.of_equiv _ h.1, OneOneReducible.of_equiv_symm _ h.2⟩
 #align one_one_equiv.of_equiv OneOneEquiv.of_equiv
 
+/- warning: many_one_equiv.of_equiv -> ManyOneEquiv.of_equiv is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {e : Equiv.{succ u1, succ u2} α β}, (Equiv.Computable.{u1, u2} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 (Function.comp.{succ u1, succ u2, 1} α β Prop p (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) e)) p)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {e : Equiv.{succ u2, succ u1} α β}, (Equiv.Computable.{u2, u1} α β _inst_1 _inst_2 e) -> (forall {p : β -> Prop}, ManyOneEquiv.{u2, u1} α β _inst_1 _inst_2 (Function.comp.{succ u2, succ u1, 1} α β Prop p (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) e)) p)
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.of_equiv ManyOneEquiv.of_equivₓ'. -/
 theorem ManyOneEquiv.of_equiv {α β} [Primcodable α] [Primcodable β] {e : α ≃ β} (h : e.Computable)
     {p} : ManyOneEquiv (p ∘ e) p :=
   (OneOneEquiv.of_equiv h).to_many_one
 #align many_one_equiv.of_equiv ManyOneEquiv.of_equiv
 
+/- warning: many_one_equiv.le_congr_left -> ManyOneEquiv.le_congr_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r))
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.le_congr_left ManyOneEquiv.le_congr_leftₓ'. -/
 theorem ManyOneEquiv.le_congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv p q) : p ≤₀ r ↔ q ≤₀ r :=
   ⟨h.2.trans, h.1.trans⟩
 #align many_one_equiv.le_congr_left ManyOneEquiv.le_congr_left
 
+/- warning: many_one_equiv.le_congr_right -> ManyOneEquiv.le_congr_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r))
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.le_congr_right ManyOneEquiv.le_congr_rightₓ'. -/
 theorem ManyOneEquiv.le_congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv q r) : p ≤₀ q ↔ p ≤₀ r :=
   ⟨fun h' => h'.trans h.1, fun h' => h'.trans h.2⟩
 #align many_one_equiv.le_congr_right ManyOneEquiv.le_congr_right
 
+/- warning: one_one_equiv.le_congr_left -> OneOneEquiv.le_congr_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) (OneOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) (OneOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r))
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.le_congr_left OneOneEquiv.le_congr_leftₓ'. -/
 theorem OneOneEquiv.le_congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv p q) : p ≤₁ r ↔ q ≤₁ r :=
   ⟨h.2.trans, h.1.trans⟩
 #align one_one_equiv.le_congr_left OneOneEquiv.le_congr_left
 
+/- warning: one_one_equiv.le_congr_right -> OneOneEquiv.le_congr_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneReducible.{u1, u2} α β _inst_1 _inst_2 p q) (OneOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneReducible.{u3, u2} α β _inst_1 _inst_2 p q) (OneOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r))
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.le_congr_right OneOneEquiv.le_congr_rightₓ'. -/
 theorem OneOneEquiv.le_congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv q r) : p ≤₁ q ↔ p ≤₁ r :=
   ⟨fun h' => h'.trans h.1, fun h' => h'.trans h.2⟩
 #align one_one_equiv.le_congr_right OneOneEquiv.le_congr_right
 
+/- warning: many_one_equiv.congr_left -> ManyOneEquiv.congr_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r) (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (ManyOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r) (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r))
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.congr_left ManyOneEquiv.congr_leftₓ'. -/
 theorem ManyOneEquiv.congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv p q) :
     ManyOneEquiv p r ↔ ManyOneEquiv q r :=
   and_congr h.le_congr_left h.le_congr_right
 #align many_one_equiv.congr_left ManyOneEquiv.congr_left
 
+/- warning: many_one_equiv.congr_right -> ManyOneEquiv.congr_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) (ManyOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (ManyOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) (ManyOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r))
+Case conversion may be inaccurate. Consider using '#align many_one_equiv.congr_right ManyOneEquiv.congr_rightₓ'. -/
 theorem ManyOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : ManyOneEquiv q r) :
     ManyOneEquiv p q ↔ ManyOneEquiv p r :=
   and_congr h.le_congr_right h.le_congr_left
 #align many_one_equiv.congr_right ManyOneEquiv.congr_right
 
+/- warning: one_one_equiv.congr_left -> OneOneEquiv.congr_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r) (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) -> (Iff (OneOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r) (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r))
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.congr_left OneOneEquiv.congr_leftₓ'. -/
 theorem OneOneEquiv.congr_left {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv p q) :
     OneOneEquiv p r ↔ OneOneEquiv q r :=
   and_congr h.le_congr_left h.le_congr_right
 #align one_one_equiv.congr_left OneOneEquiv.congr_left
 
+/- warning: one_one_equiv.congr_right -> OneOneEquiv.congr_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u3} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneEquiv.{u1, u2} α β _inst_1 _inst_2 p q) (OneOneEquiv.{u1, u3} α γ _inst_1 _inst_3 p r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (OneOneEquiv.{u2, u1} β γ _inst_2 _inst_3 q r) -> (Iff (OneOneEquiv.{u3, u2} α β _inst_1 _inst_2 p q) (OneOneEquiv.{u3, u1} α γ _inst_1 _inst_3 p r))
+Case conversion may be inaccurate. Consider using '#align one_one_equiv.congr_right OneOneEquiv.congr_rightₓ'. -/
 theorem OneOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} (h : OneOneEquiv q r) :
     OneOneEquiv p q ↔ OneOneEquiv p r :=
   and_congr h.le_congr_right h.le_congr_left
 #align one_one_equiv.congr_right OneOneEquiv.congr_right
 
+#print Ulower.down_computable /-
 @[simp]
 theorem Ulower.down_computable {α} [Primcodable α] : (Ulower.equiv α).Computable :=
   ⟨Primrec.ulower_down.to_comp, Primrec.ulower_up.to_comp⟩
 #align ulower.down_computable Ulower.down_computable
+-/
 
+#print manyOneEquiv_up /-
 theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (p ∘ Ulower.up) p :=
   ManyOneEquiv.of_equiv Ulower.down_computable.symm
 #align many_one_equiv_up manyOneEquiv_up
+-/
 
 -- mathport name: «expr ⊕' »
 local infixl:1001 " ⊕' " => Sum.elim
 
 open Nat.Primrec
 
+/- warning: one_one_reducible.disjoin_left -> OneOneReducible.disjoin_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u1, max u1 u2} α (Sum.{u1, u2} α β) _inst_1 (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) p (Sum.elim.{u1, u2, 1} α β Prop p q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u2, max u1 u2} α (Sum.{u2, u1} α β) _inst_1 (Primcodable.sum.{u2, u1} α β _inst_1 _inst_2) p (Sum.elim.{u2, u1, 1} α β Prop p q)
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.disjoin_left OneOneReducible.disjoin_leftₓ'. -/
 theorem OneOneReducible.disjoin_left {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : p ≤₁ p ⊕' q :=
   ⟨Sum.inl, Computable.sum_inl, fun x y => Sum.inl.inj_iff.1, fun a => Iff.rfl⟩
 #align one_one_reducible.disjoin_left OneOneReducible.disjoin_left
 
+/- warning: one_one_reducible.disjoin_right -> OneOneReducible.disjoin_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u2, max u1 u2} β (Sum.{u1, u2} α β) _inst_2 (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) q (Sum.elim.{u1, u2, 1} α β Prop p q)
+but is expected to have type
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Primcodable.{u2} α] [_inst_2 : Primcodable.{u1} β] {p : α -> Prop} {q : β -> Prop}, OneOneReducible.{u1, max u1 u2} β (Sum.{u2, u1} α β) _inst_2 (Primcodable.sum.{u2, u1} α β _inst_1 _inst_2) q (Sum.elim.{u2, u1, 1} α β Prop p q)
+Case conversion may be inaccurate. Consider using '#align one_one_reducible.disjoin_right OneOneReducible.disjoin_rightₓ'. -/
 theorem OneOneReducible.disjoin_right {α β} [Primcodable α] [Primcodable β] {p : α → Prop}
     {q : β → Prop} : q ≤₁ p ⊕' q :=
   ⟨Sum.inr, Computable.sum_inr, fun x y => Sum.inr.inj_iff.1, fun a => Iff.rfl⟩
 #align one_one_reducible.disjoin_right OneOneReducible.disjoin_right
 
+/- warning: disjoin_many_one_reducible -> disjoin_manyOneReducible is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) -> (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{max u1 u2, u3} (Sum.{u1, u2} α β) γ (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u1, u2, 1} α β Prop p q) r)
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) -> (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r) -> (ManyOneReducible.{max u2 u3, u1} (Sum.{u3, u2} α β) γ (Primcodable.sum.{u3, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u3, u2, 1} α β Prop p q) r)
+Case conversion may be inaccurate. Consider using '#align disjoin_many_one_reducible disjoin_manyOneReducibleₓ'. -/
 theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ r → q ≤₀ r → p ⊕' q ≤₀ r
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
@@ -314,6 +530,12 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
       by cases x <;> [apply h₁, apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
 
+/- warning: disjoin_le -> disjoin_le is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Primcodable.{u1} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u3} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, Iff (ManyOneReducible.{max u1 u2, u3} (Sum.{u1, u2} α β) γ (Primcodable.sum.{u1, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u1, u2, 1} α β Prop p q) r) (And (ManyOneReducible.{u1, u3} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u3} β γ _inst_2 _inst_3 q r))
+but is expected to have type
+  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Primcodable.{u3} α] [_inst_2 : Primcodable.{u2} β] [_inst_3 : Primcodable.{u1} γ] {p : α -> Prop} {q : β -> Prop} {r : γ -> Prop}, Iff (ManyOneReducible.{max u2 u3, u1} (Sum.{u3, u2} α β) γ (Primcodable.sum.{u3, u2} α β _inst_1 _inst_2) _inst_3 (Sum.elim.{u3, u2, 1} α β Prop p q) r) (And (ManyOneReducible.{u3, u1} α γ _inst_1 _inst_3 p r) (ManyOneReducible.{u2, u1} β γ _inst_2 _inst_3 q r))
+Case conversion may be inaccurate. Consider using '#align disjoin_le disjoin_leₓ'. -/
 theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
     {q : β → Prop} {r : γ → Prop} : p ⊕' q ≤₀ r ↔ p ≤₀ r ∧ q ≤₀ r :=
   ⟨fun h =>
@@ -328,56 +550,75 @@ variable {β : Type v} [Primcodable β] [Inhabited β]
 
 variable {γ : Type w} [Primcodable γ] [Inhabited γ]
 
+#print toNat /-
 /-- Computable and injective mapping of predicates to sets of natural numbers.
 -/
 def toNat (p : Set α) : Set ℕ :=
   { n | p ((Encodable.decode α n).getD default) }
 #align to_nat toNat
+-/
 
+#print toNat_manyOneReducible /-
 @[simp]
 theorem toNat_manyOneReducible {p : Set α} : toNat p ≤₀ p :=
   ⟨fun n => (Encodable.decode α n).getD default,
     Computable.option_getD Computable.decode (Computable.const _), fun _ => Iff.rfl⟩
 #align to_nat_many_one_reducible toNat_manyOneReducible
+-/
 
+#print manyOneReducible_toNat /-
 @[simp]
 theorem manyOneReducible_toNat {p : Set α} : p ≤₀ toNat p :=
   ⟨Encodable.encode, Computable.encode, by simp [toNat, setOf]⟩
 #align many_one_reducible_to_nat manyOneReducible_toNat
+-/
 
+#print manyOneReducible_toNat_toNat /-
 @[simp]
 theorem manyOneReducible_toNat_toNat {p : Set α} {q : Set β} : toNat p ≤₀ toNat q ↔ p ≤₀ q :=
   ⟨fun h => manyOneReducible_toNat.trans (h.trans toNat_manyOneReducible), fun h =>
     toNat_manyOneReducible.trans (h.trans manyOneReducible_toNat)⟩
 #align many_one_reducible_to_nat_to_nat manyOneReducible_toNat_toNat
+-/
 
+#print toNat_manyOneEquiv /-
 @[simp]
 theorem toNat_manyOneEquiv {p : Set α} : ManyOneEquiv (toNat p) p := by simp [ManyOneEquiv]
 #align to_nat_many_one_equiv toNat_manyOneEquiv
+-/
 
+#print manyOneEquiv_toNat /-
 @[simp]
 theorem manyOneEquiv_toNat (p : Set α) (q : Set β) :
     ManyOneEquiv (toNat p) (toNat q) ↔ ManyOneEquiv p q := by simp [ManyOneEquiv]
 #align many_one_equiv_to_nat manyOneEquiv_toNat
+-/
 
+#print ManyOneDegree /-
 /-- A many-one degree is an equivalence class of sets up to many-one equivalence. -/
 def ManyOneDegree : Type :=
   Quotient (⟨ManyOneEquiv, equivalence_of_manyOneEquiv⟩ : Setoid (Set ℕ))
 #align many_one_degree ManyOneDegree
+-/
 
 namespace ManyOneDegree
 
+#print ManyOneDegree.of /-
 /-- The many-one degree of a set on a primcodable type. -/
 def of (p : α → Prop) : ManyOneDegree :=
   Quotient.mk'' (toNat p)
 #align many_one_degree.of ManyOneDegree.of
+-/
 
+#print ManyOneDegree.ind_on /-
 @[elab_as_elim]
 protected theorem ind_on {C : ManyOneDegree → Prop} (d : ManyOneDegree)
     (h : ∀ p : Set ℕ, C (of p)) : C d :=
   Quotient.inductionOn' d h
 #align many_one_degree.ind_on ManyOneDegree.ind_on
+-/
 
+#print ManyOneDegree.liftOn /-
 /-- Lifts a function on sets of natural numbers to many-one degrees.
 -/
 @[elab_as_elim, reducible]
@@ -385,13 +626,17 @@ protected def liftOn {φ} (d : ManyOneDegree) (f : Set ℕ → φ)
     (h : ∀ p q, ManyOneEquiv p q → f p = f q) : φ :=
   Quotient.liftOn' d f h
 #align many_one_degree.lift_on ManyOneDegree.liftOn
+-/
 
+#print ManyOneDegree.liftOn_eq /-
 @[simp]
 protected theorem liftOn_eq {φ} (p : Set ℕ) (f : Set ℕ → φ)
     (h : ∀ p q, ManyOneEquiv p q → f p = f q) : (of p).liftOn f h = f p :=
   rfl
 #align many_one_degree.lift_on_eq ManyOneDegree.liftOn_eq
+-/
 
+#print ManyOneDegree.liftOn₂ /-
 /-- Lifts a binary function on sets of natural numbers to many-one degrees.
 -/
 @[elab_as_elim, reducible, simp]
@@ -405,18 +650,23 @@ protected def liftOn₂ {φ} (d₁ d₂ : ManyOneDegree) (f : Set ℕ → Set 
       assumption
       rfl)
 #align many_one_degree.lift_on₂ ManyOneDegree.liftOn₂
+-/
 
+#print ManyOneDegree.liftOn₂_eq /-
 @[simp]
 protected theorem liftOn₂_eq {φ} (p q : Set ℕ) (f : Set ℕ → Set ℕ → φ)
     (h : ∀ p₁ p₂ q₁ q₂, ManyOneEquiv p₁ p₂ → ManyOneEquiv q₁ q₂ → f p₁ q₁ = f p₂ q₂) :
     (of p).liftOn₂ (of q) f h = f p q :=
   rfl
 #align many_one_degree.lift_on₂_eq ManyOneDegree.liftOn₂_eq
+-/
 
+#print ManyOneDegree.of_eq_of /-
 @[simp]
 theorem of_eq_of {p : α → Prop} {q : β → Prop} : of p = of q ↔ ManyOneEquiv p q := by
   simp [of, Quotient.eq'']
 #align many_one_degree.of_eq_of ManyOneDegree.of_eq_of
+-/
 
 instance : Inhabited ManyOneDegree :=
   ⟨of (∅ : Set ℕ)⟩
@@ -429,10 +679,12 @@ instance : LE ManyOneDegree :=
     ManyOneDegree.liftOn₂ d₁ d₂ (· ≤₀ ·) fun p₁ p₂ q₁ q₂ hp hq =>
       propext (hp.le_congr_left.trans hq.le_congr_right)⟩
 
+#print ManyOneDegree.of_le_of /-
 @[simp]
 theorem of_le_of {p : α → Prop} {q : β → Prop} : of p ≤ of q ↔ p ≤₀ q :=
   manyOneReducible_toNat_toNat
 #align many_one_degree.of_le_of ManyOneDegree.of_le_of
+-/
 
 private theorem le_refl (d : ManyOneDegree) : d ≤ d := by
   induction d using ManyOneDegree.ind_on <;> simp
@@ -473,6 +725,7 @@ instance : Add ManyOneDegree :=
             disjoin_manyOneReducible (hr₁.trans one_one_reducible.disjoin_left.to_many_one)
               (hr₂.trans one_one_reducible.disjoin_right.to_many_one)⟩)⟩
 
+#print ManyOneDegree.add_of /-
 @[simp]
 theorem add_of (p : Set α) (q : Set β) : of (p ⊕' q) = of p + of q :=
   of_eq_of.mpr
@@ -483,7 +736,9 @@ theorem add_of (p : Set α) (q : Set β) : of (p ⊕' q) = of p + of q :=
         (toNat_manyOneReducible.trans OneOneReducible.disjoin_left.to_many_one)
         (toNat_manyOneReducible.trans OneOneReducible.disjoin_right.to_many_one)⟩
 #align many_one_degree.add_of ManyOneDegree.add_of
+-/
 
+#print ManyOneDegree.add_le /-
 @[simp]
 protected theorem add_le {d₁ d₂ d₃ : ManyOneDegree} : d₁ + d₂ ≤ d₃ ↔ d₁ ≤ d₃ ∧ d₂ ≤ d₃ :=
   by
@@ -492,19 +747,24 @@ protected theorem add_le {d₁ d₂ d₃ : ManyOneDegree} : d₁ + d₂ ≤ d₃
   induction d₃ using ManyOneDegree.ind_on
   simpa only [← add_of, of_le_of] using disjoin_le
 #align many_one_degree.add_le ManyOneDegree.add_le
+-/
 
+#print ManyOneDegree.le_add_left /-
 @[simp]
 protected theorem le_add_left (d₁ d₂ : ManyOneDegree) : d₁ ≤ d₁ + d₂ :=
   (ManyOneDegree.add_le.1 (by rfl)).1
 #align many_one_degree.le_add_left ManyOneDegree.le_add_left
+-/
 
+#print ManyOneDegree.le_add_right /-
 @[simp]
 protected theorem le_add_right (d₁ d₂ : ManyOneDegree) : d₂ ≤ d₁ + d₂ :=
   (ManyOneDegree.add_le.1 (by rfl)).2
 #align many_one_degree.le_add_right ManyOneDegree.le_add_right
+-/
 
 instance : SemilatticeSup ManyOneDegree :=
-  { ManyOneDegree.partialOrder with
+  { ManyOneDegree.instPartialOrder with
     sup := (· + ·)
     le_sup_left := ManyOneDegree.le_add_left
     le_sup_right := ManyOneDegree.le_add_right
Diff
@@ -310,8 +310,8 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
     {p : α → Prop} {q : β → Prop} {r : γ → Prop} : p ≤₀ r → q ≤₀ r → p ⊕' q ≤₀ r
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
     ⟨Sum.elim f g,
-      Computable.id.sum_cases (c₁.comp Computable.snd).to₂ (c₂.comp Computable.snd).to₂, fun x => by
-      cases x <;> [apply h₁, apply h₂]⟩
+      Computable.id.sum_casesOn (c₁.comp Computable.snd).to₂ (c₂.comp Computable.snd).to₂, fun x =>
+      by cases x <;> [apply h₁, apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
 
 theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}

Changes in mathlib4

mathlib3
mathlib4
chore: remove mathport name: <expression> lines (#11928)

Quoting [@digama0](https://github.com/digama0):

These were actually never meant to go in the file, they are basically debugging information and only useful on significantly broken mathport files. You can safely remove all of them.

Diff
@@ -40,7 +40,6 @@ def ManyOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop)
   ∃ f, Computable f ∧ ∀ a, p a ↔ q (f a)
 #align many_one_reducible ManyOneReducible
 
--- mathport name: «expr ≤₀ »
 @[inherit_doc ManyOneReducible]
 infixl:1000 " ≤₀ " => ManyOneReducible
 
@@ -78,7 +77,6 @@ def OneOneReducible {α β} [Primcodable α] [Primcodable β] (p : α → Prop)
   ∃ f, Computable f ∧ Injective f ∧ ∀ a, p a ↔ q (f a)
 #align one_one_reducible OneOneReducible
 
--- mathport name: «expr ≤₁ »
 @[inherit_doc OneOneReducible]
 infixl:1000 " ≤₁ " => OneOneReducible
 
@@ -289,7 +287,6 @@ theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (
   ManyOneEquiv.of_equiv ULower.down_computable.symm
 #align many_one_equiv_up manyOneEquiv_up
 
--- mathport name: «expr ⊕' »
 local infixl:1001 " ⊕' " => Sum.elim
 
 open Nat.Primrec
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


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

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

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

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -126,7 +126,6 @@ theorem transitive_oneOneReducible {α} [Primcodable α] : Transitive (@OneOneRe
 namespace ComputablePred
 
 variable {α : Type*} {β : Type*} {σ : Type*}
-
 variable [Primcodable α] [Primcodable β] [Primcodable σ]
 
 open Computable
@@ -322,9 +321,7 @@ theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ]
 #align disjoin_le disjoin_le
 
 variable {α : Type u} [Primcodable α] [Inhabited α]
-
 variable {β : Type v} [Primcodable β] [Inhabited β]
-
 variable {γ : Type w} [Primcodable γ] [Inhabited γ]
 
 /-- Computable and injective mapping of predicates to sets of natural numbers.
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
@@ -125,7 +125,7 @@ theorem transitive_oneOneReducible {α} [Primcodable α] : Transitive (@OneOneRe
 
 namespace ComputablePred
 
-variable {α : Type _} {β : Type _} {σ : Type _}
+variable {α : Type*} {β : Type*} {σ : Type*}
 
 variable [Primcodable α] [Primcodable β] [Primcodable σ]
 
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) 2019 Minchao Wu. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Minchao Wu, Mario Carneiro
-
-! This file was ported from Lean 3 source module computability.reduce
-! leanprover-community/mathlib commit d13b3a4a392ea7273dfa4727dbd1892e26cfd518
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Computability.Halting
 
+#align_import computability.reduce from "leanprover-community/mathlib"@"d13b3a4a392ea7273dfa4727dbd1892e26cfd518"
+
 /-!
 # Strong reducibility and degrees.
 
chore: rename Ulower to ULower (#4430)

ref #4354

Diff
@@ -285,12 +285,12 @@ theorem OneOneEquiv.congr_right {α β γ} [Primcodable α] [Primcodable β] [Pr
 #align one_one_equiv.congr_right OneOneEquiv.congr_right
 
 @[simp]
-theorem Ulower.down_computable {α} [Primcodable α] : (Ulower.equiv α).Computable :=
+theorem ULower.down_computable {α} [Primcodable α] : (ULower.equiv α).Computable :=
   ⟨Primrec.ulower_down.to_comp, Primrec.ulower_up.to_comp⟩
-#align ulower.down_computable Ulower.down_computable
+#align ulower.down_computable ULower.down_computable
 
-theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (p ∘ Ulower.up) p :=
-  ManyOneEquiv.of_equiv Ulower.down_computable.symm
+theorem manyOneEquiv_up {α} [Primcodable α] {p : α → Prop} : ManyOneEquiv (p ∘ ULower.up) p :=
+  ManyOneEquiv.of_equiv ULower.down_computable.symm
 #align many_one_equiv_up manyOneEquiv_up
 
 -- mathport name: «expr ⊕' »
chore: update std 05-22 (#4248)

The main breaking change is that tac <;> [t1, t2] is now written tac <;> [t1; t2], to avoid clashing with tactics like cases and use that take comma-separated lists.

Diff
@@ -313,7 +313,7 @@ theorem disjoin_manyOneReducible {α β γ} [Primcodable α] [Primcodable β] [P
   | ⟨f, c₁, h₁⟩, ⟨g, c₂, h₂⟩ =>
     ⟨Sum.elim f g,
       Computable.id.sum_casesOn (c₁.comp Computable.snd).to₂ (c₂.comp Computable.snd).to₂,
-      fun x => by cases x <;> [apply h₁, apply h₂]⟩
+      fun x => by cases x <;> [apply h₁; apply h₂]⟩
 #align disjoin_many_one_reducible disjoin_manyOneReducible
 
 theorem disjoin_le {α β γ} [Primcodable α] [Primcodable β] [Primcodable γ] {p : α → Prop}
feat: port Computability.Reduce (#3862)

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

Dependencies 6 + 221

222 files ported (97.4%)
99095 lines ported (97.9%)
Show graph

The unported dependencies are