topology.sheaves.sheaf_condition.equalizer_productsMathlib.Topology.Sheaves.SheafCondition.EqualizerProducts

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -254,13 +254,13 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
             category.assoc]
           have h := c.π.naturality (Quiver.Hom.op (hom.left i j))
-          dsimp at h 
+          dsimp at h
           simpa using h
         · ext ⟨i, j⟩; dsimp [sheaf_condition_equalizer_products.right_res]
           simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
             category.assoc]
           have h := c.π.naturality (Quiver.Hom.op (hom.right i j))
-          dsimp at h 
+          dsimp at h
           simpa using h
         · ext i; dsimp
           simp only [limit.lift_π, category.id_comp, fan.mk_π_app, CategoryTheory.Functor.map_id,
@@ -318,16 +318,16 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
         · dsimp; erw [F.map_id]; simp
         · dsimp; simp only [category.id_comp, category.assoc]
           have h := c.π.naturality walking_parallel_pair_hom.left
-          dsimp [sheaf_condition_equalizer_products.left_res] at h 
-          simp only [category.id_comp] at h 
+          dsimp [sheaf_condition_equalizer_products.left_res] at h
+          simp only [category.id_comp] at h
           have h' := h =≫ pi.π _ (i, j)
           rw [h']
           simp only [category.assoc, limit.lift_π, fan.mk_π_app]
           rfl
         · dsimp; simp only [category.id_comp, category.assoc]
           have h := c.π.naturality walking_parallel_pair_hom.right
-          dsimp [sheaf_condition_equalizer_products.right_res] at h 
-          simp only [category.id_comp] at h 
+          dsimp [sheaf_condition_equalizer_products.right_res] at h
+          simp only [category.id_comp] at h
           have h' := h =≫ pi.π _ (j, i)
           rw [h']
           simp
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.CategoryTheory.Limits.Shapes.Equalizers
-import Mathbin.CategoryTheory.Limits.Shapes.Products
-import Mathbin.Topology.Sheaves.SheafCondition.PairwiseIntersections
+import CategoryTheory.Limits.Shapes.Equalizers
+import CategoryTheory.Limits.Shapes.Products
+import Topology.Sheaves.SheafCondition.PairwiseIntersections
 
 #align_import topology.sheaves.sheaf_condition.equalizer_products from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.equalizer_products
-! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Limits.Shapes.Equalizers
 import Mathbin.CategoryTheory.Limits.Shapes.Products
 import Mathbin.Topology.Sheaves.SheafCondition.PairwiseIntersections
 
+#align_import topology.sheaves.sheaf_condition.equalizer_products from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
+
 /-!
 # The sheaf condition in terms of an equalizer of products
 
Diff
@@ -87,18 +87,23 @@ def rightRes : piOpens F U ⟶ piInters.{v'} F U :=
 #align Top.presheaf.sheaf_condition_equalizer_products.right_res TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes
 -/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.res /-
 /-- The morphism `F.obj U ⟶ Π F.obj (U i)` whose components
 are given by the restriction maps from `U j` to `U i ⊓ U j`.
 -/
 def res : F.obj (op (iSup U)) ⟶ piOpens.{v'} F U :=
   Pi.lift fun i : ι => F.map (TopologicalSpace.Opens.leSupr U i).op
 #align Top.presheaf.sheaf_condition_equalizer_products.res TopCat.Presheaf.SheafConditionEqualizerProducts.res
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.res_π /-
 @[simp, elementwise]
 theorem res_π (i : ι) : res F U ≫ limit.π _ ⟨i⟩ = F.map (Opens.leSupr U i).op := by
   rw [res, limit.lift_π, fan.mk_π_app]
 #align Top.presheaf.sheaf_condition_equalizer_products.res_π TopCat.Presheaf.SheafConditionEqualizerProducts.res_π
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.w /-
 @[elementwise]
 theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U :=
   by
@@ -109,6 +114,7 @@ theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U :=
   rw [← F.map_comp]
   congr
 #align Top.presheaf.sheaf_condition_equalizer_products.w TopCat.Presheaf.SheafConditionEqualizerProducts.w
+-/
 
 #print TopCat.Presheaf.SheafConditionEqualizerProducts.diagram /-
 /-- The equalizer diagram for the sheaf condition.
@@ -128,41 +134,54 @@ def fork : Fork.{v} (leftRes F U) (rightRes F U) :=
 #align Top.presheaf.sheaf_condition_equalizer_products.fork TopCat.Presheaf.SheafConditionEqualizerProducts.fork
 -/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt /-
 @[simp]
 theorem fork_pt : (fork F U).pt = F.obj (op (iSup U)) :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ι /-
 @[simp]
 theorem fork_ι : (fork F U).ι = res F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_ι TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ι
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero /-
 @[simp]
 theorem fork_π_app_walkingParallelPair_zero : (fork F U).π.app WalkingParallelPair.zero = res F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_one /-
 @[simp]
 theorem fork_π_app_walkingParallelPair_one :
     (fork F U).π.app WalkingParallelPair.one = res F U ≫ leftRes F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_one TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_one
+-/
 
 variable {F} {G : Presheaf C X}
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso /-
 /-- Isomorphic presheaves have isomorphic `pi_opens` for any cover `U`. -/
 @[simp]
 def piOpens.isoOfIso (α : F ≅ G) : piOpens F U ≅ piOpens.{v'} G U :=
   Pi.mapIso fun X => α.app _
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso /-
 /-- Isomorphic presheaves have isomorphic `pi_inters` for any cover `U`. -/
 @[simp]
 def piInters.isoOfIso (α : F ≅ G) : piInters F U ≅ piInters.{v'} G U :=
   Pi.mapIso fun X => α.app _
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso /-
 /-- Isomorphic presheaves have isomorphic sheaf condition diagrams. -/
 def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
   NatIso.ofComponents (by rintro ⟨⟩; exact pi_opens.iso_of_iso U α; exact pi_inters.iso_of_iso U α)
@@ -173,7 +192,9 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
       · ext; simp [right_res]
       · simp)
 #align Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.fork.isoOfIso /-
 /-- If `F G : presheaf C X` are isomorphic presheaves,
 then the `fork F U`, the canonical cone of the sheaf condition diagram for `F`,
 is isomorphic to `fork F G` postcomposed with the corresponding isomorphism between
@@ -189,6 +210,7 @@ def fork.isoOfIso (α : F ≅ G) :
     -- Ugh, `simp` can't unfold abbreviations.
     simp [res, diagram.iso_of_iso]
 #align Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.fork.isoOfIso
+-/
 
 end SheafConditionEqualizerProducts
 
@@ -213,6 +235,7 @@ namespace SheafConditionPairwiseIntersections
 
 open CategoryTheory.Pairwise CategoryTheory.Pairwise.Hom
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorObj /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
@@ -248,11 +271,13 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           dsimp
           simp only [limit.lift_π, category.id_comp, fan.mk_π_app] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorObj
+-/
 
 section
 
 attribute [local tidy] tactic.case_bash
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctor /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivFunctor :
@@ -267,9 +292,11 @@ def coneEquivFunctor :
             simp only [limits.fan.mk_π_app, limits.cone_morphism.w, limits.limit.lift_π,
               category.assoc, cone_equiv_functor_obj_π_app] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctor
+-/
 
 end
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagram F U)) :
@@ -310,7 +337,9 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
           rfl
         · dsimp; erw [F.map_id]; simp }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj
+-/
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivInverse :
@@ -329,7 +358,9 @@ def coneEquivInverse :
         · dsimp
           rw [← f.w walking_parallel_pair.one, category.assoc] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse
+-/
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
@@ -352,13 +383,16 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     ext
     simp only [category.comp_id, limits.cone.category_comp_hom, limits.cone.category_id_hom]
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp
+-/
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivUnitIso :
     𝟭 (Limits.Cone ((diagram U).op ⋙ F)) ≅ coneEquivFunctor F U ⋙ coneEquivInverse F U :=
   NatIso.ofComponents (coneEquivUnitIsoApp F U) (by tidy)
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso
+-/
 
 #print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivCounitIso /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
@@ -390,6 +424,7 @@ def coneEquivCounitIso :
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_counit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivCounitIso
 -/
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquiv /-
 /--
 Cones over `diagram U ⋙ F` are the same as a cones over the usual sheaf condition equalizer diagram.
 -/
@@ -402,10 +437,12 @@ def coneEquiv :
   unitIso := coneEquivUnitIso F U
   counitIso := coneEquivCounitIso F U
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquiv
+-/
 
 attribute [local reducible] sheaf_condition_equalizer_products.res
   sheaf_condition_equalizer_products.left_res
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork /-
 /-- If `sheaf_condition_equalizer_products.fork` is an equalizer,
 then `F.map_cone (cone U)` is a limit cone.
 -/
@@ -439,7 +476,9 @@ def isLimitMapConeOfIsLimitSheafConditionFork
       hom_inv_id' := by ext; dsimp; simp only [category.comp_id]
       inv_hom_id' := by ext; dsimp; simp only [category.comp_id] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork
+-/
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone /-
 /-- If `F.map_cone (cone U)` is a limit cone,
 then `sheaf_condition_equalizer_products.fork` is an equalizer.
 -/
@@ -469,6 +508,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
       hom_inv_id' := by ext; dsimp; simp only [category.comp_id]
       inv_hom_id' := by ext; dsimp; simp only [category.comp_id] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone
+-/
 
 end SheafConditionPairwiseIntersections
 
Diff
@@ -234,13 +234,13 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
             category.assoc]
           have h := c.π.naturality (Quiver.Hom.op (hom.left i j))
-          dsimp at h
+          dsimp at h 
           simpa using h
         · ext ⟨i, j⟩; dsimp [sheaf_condition_equalizer_products.right_res]
           simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
             category.assoc]
           have h := c.π.naturality (Quiver.Hom.op (hom.right i j))
-          dsimp at h
+          dsimp at h 
           simpa using h
         · ext i; dsimp
           simp only [limit.lift_π, category.id_comp, fan.mk_π_app, CategoryTheory.Functor.map_id,
@@ -294,16 +294,16 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
         · dsimp; erw [F.map_id]; simp
         · dsimp; simp only [category.id_comp, category.assoc]
           have h := c.π.naturality walking_parallel_pair_hom.left
-          dsimp [sheaf_condition_equalizer_products.left_res] at h
-          simp only [category.id_comp] at h
+          dsimp [sheaf_condition_equalizer_products.left_res] at h 
+          simp only [category.id_comp] at h 
           have h' := h =≫ pi.π _ (i, j)
           rw [h']
           simp only [category.assoc, limit.lift_π, fan.mk_π_app]
           rfl
         · dsimp; simp only [category.id_comp, category.assoc]
           have h := c.π.naturality walking_parallel_pair_hom.right
-          dsimp [sheaf_condition_equalizer_products.right_res] at h
-          simp only [category.id_comp] at h
+          dsimp [sheaf_condition_equalizer_products.right_res] at h 
+          simp only [category.id_comp] at h 
           have h' := h =≫ pi.π _ (j, i)
           rw [h']
           simp
@@ -403,8 +403,8 @@ def coneEquiv :
   counitIso := coneEquivCounitIso F U
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquiv
 
-attribute [local reducible]
-  sheaf_condition_equalizer_products.res sheaf_condition_equalizer_products.left_res
+attribute [local reducible] sheaf_condition_equalizer_products.res
+  sheaf_condition_equalizer_products.left_res
 
 /-- If `sheaf_condition_equalizer_products.fork` is an equalizer,
 then `F.map_cone (cone U)` is a limit cone.
Diff
@@ -87,12 +87,6 @@ def rightRes : piOpens F U ⟶ piInters.{v'} F U :=
 #align Top.presheaf.sheaf_condition_equalizer_products.right_res TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes
 -/
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.res -> TopCat.Presheaf.SheafConditionEqualizerProducts.res is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopologicalSpace.Opens.setLike.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))))) C _inst_1 F (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (ConditionallyCompleteLattice.toHasSup.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (TopologicalSpace.Opens.completeLattice.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))) ι U))) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.res._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))) C _inst_1 F) (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (ConditionallyCompleteLattice.toSupSet.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)))) ι U))) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.res TopCat.Presheaf.SheafConditionEqualizerProducts.resₓ'. -/
 /-- The morphism `F.obj U ⟶ Π F.obj (U i)` whose components
 are given by the restriction maps from `U j` to `U i ⊓ U j`.
 -/
@@ -100,17 +94,11 @@ def res : F.obj (op (iSup U)) ⟶ piOpens.{v'} F U :=
   Pi.lift fun i : ι => F.map (TopologicalSpace.Opens.leSupr U i).op
 #align Top.presheaf.sheaf_condition_equalizer_products.res TopCat.Presheaf.SheafConditionEqualizerProducts.res
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.res_π -> TopCat.Presheaf.SheafConditionEqualizerProducts.res_π is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.res_π TopCat.Presheaf.SheafConditionEqualizerProducts.res_πₓ'. -/
 @[simp, elementwise]
 theorem res_π (i : ι) : res F U ≫ limit.π _ ⟨i⟩ = F.map (Opens.leSupr U i).op := by
   rw [res, limit.lift_π, fan.mk_π_app]
 #align Top.presheaf.sheaf_condition_equalizer_products.res_π TopCat.Presheaf.SheafConditionEqualizerProducts.res_π
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.w -> TopCat.Presheaf.SheafConditionEqualizerProducts.w is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.w TopCat.Presheaf.SheafConditionEqualizerProducts.wₓ'. -/
 @[elementwise]
 theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U :=
   by
@@ -140,36 +128,21 @@ def fork : Fork.{v} (leftRes F U) (rightRes F U) :=
 #align Top.presheaf.sheaf_condition_equalizer_products.fork TopCat.Presheaf.SheafConditionEqualizerProducts.fork
 -/
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_X -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))), Eq.{succ u3} C (CategoryTheory.Limits.Cone.pt.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1 (CategoryTheory.Limits.parallelPair.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_1.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_2.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.leftRes.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_3.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_4.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U)) (TopCat.Presheaf.SheafConditionEqualizerProducts.fork.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopologicalSpace.Opens.setLike.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))))) C _inst_1 F (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (ConditionallyCompleteLattice.toHasSup.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (TopologicalSpace.Opens.completeLattice.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))) ι U)))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))), Eq.{succ u3} C (CategoryTheory.Limits.Cone.pt.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1 (CategoryTheory.Limits.parallelPair.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.leftRes.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)) (TopCat.Presheaf.SheafConditionEqualizerProducts.fork.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))) C _inst_1 F) (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (ConditionallyCompleteLattice.toSupSet.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)))) ι U)))
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ptₓ'. -/
 @[simp]
 theorem fork_pt : (fork F U).pt = F.obj (op (iSup U)) :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_ι -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ι is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_ι TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ιₓ'. -/
 @[simp]
 theorem fork_ι : (fork F U).ι = res F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_ι TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ι
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zeroₓ'. -/
 @[simp]
 theorem fork_π_app_walkingParallelPair_zero : (fork F U).π.app WalkingParallelPair.zero = res F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_one -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_one TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_oneₓ'. -/
 @[simp]
 theorem fork_π_app_walkingParallelPair_one :
     (fork F U).π.app WalkingParallelPair.one = res F U ≫ leftRes F U :=
@@ -178,36 +151,18 @@ theorem fork_π_app_walkingParallelPair_one :
 
 variable {F} {G : Presheaf C X}
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u1 u2, max u3 u2 u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.Presheaf.category.{u2, u1, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso._proof_2.{u3, u2, u1} C _inst_1 _inst_2) X G ι U))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.instCategoryPresheaf.{u1, u2, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X G ι U))
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIsoₓ'. -/
 /-- Isomorphic presheaves have isomorphic `pi_opens` for any cover `U`. -/
 @[simp]
 def piOpens.isoOfIso (α : F ≅ G) : piOpens F U ≅ piOpens.{v'} G U :=
   Pi.mapIso fun X => α.app _
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u1 u2, max u3 u2 u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.Presheaf.category.{u2, u1, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso._proof_2.{u3, u2, u1} C _inst_1 _inst_2) X G ι U))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.instCategoryPresheaf.{u1, u2, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X G ι U))
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIsoₓ'. -/
 /-- Isomorphic presheaves have isomorphic `pi_inters` for any cover `U`. -/
 @[simp]
 def piInters.isoOfIso (α : F ≅ G) : piInters F U ≅ piInters.{v'} G U :=
   Pi.mapIso fun X => α.app _
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u1 u2, max u3 u2 u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.Presheaf.category.{u2, u1, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, max u2 u3} (CategoryTheory.Functor.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (CategoryTheory.Functor.category.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso._proof_2.{u3, u2, u1} C _inst_1 _inst_2) X G ι U))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.instCategoryPresheaf.{u1, u2, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, max u3 u2} (CategoryTheory.Functor.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (CategoryTheory.Functor.category.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X G ι U))
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIsoₓ'. -/
 /-- Isomorphic presheaves have isomorphic sheaf condition diagrams. -/
 def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
   NatIso.ofComponents (by rintro ⟨⟩; exact pi_opens.iso_of_iso U α; exact pi_inters.iso_of_iso U α)
@@ -219,9 +174,6 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
       · simp)
 #align Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso
 
-/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork.isoOfIso is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.fork.isoOfIsoₓ'. -/
 /-- If `F G : presheaf C X` are isomorphic presheaves,
 then the `fork F U`, the canonical cone of the sheaf condition diagram for `F`,
 is isomorphic to `fork F G` postcomposed with the corresponding isomorphism between
@@ -261,9 +213,6 @@ namespace SheafConditionPairwiseIntersections
 
 open CategoryTheory.Pairwise CategoryTheory.Pairwise.Hom
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor_obj -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorObj is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorObjₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
@@ -304,9 +253,6 @@ section
 
 attribute [local tidy] tactic.case_bash
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctor is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivFunctor :
@@ -324,9 +270,6 @@ def coneEquivFunctor :
 
 end
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObjₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagram F U)) :
@@ -368,9 +311,6 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
         · dsimp; erw [F.map_id]; simp }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivInverse :
@@ -390,9 +330,6 @@ def coneEquivInverse :
           rw [← f.w walking_parallel_pair.one, category.assoc] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoAppₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
@@ -416,9 +353,6 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     simp only [category.comp_id, limits.cone.category_comp_hom, limits.cone.category_id_hom]
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivUnitIso :
@@ -456,9 +390,6 @@ def coneEquivCounitIso :
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_counit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivCounitIso
 -/
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivₓ'. -/
 /--
 Cones over `diagram U ⋙ F` are the same as a cones over the usual sheaf condition equalizer diagram.
 -/
@@ -475,9 +406,6 @@ def coneEquiv :
 attribute [local reducible]
   sheaf_condition_equalizer_products.res sheaf_condition_equalizer_products.left_res
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork -> TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionForkₓ'. -/
 /-- If `sheaf_condition_equalizer_products.fork` is an equalizer,
 then `F.map_cone (cone U)` is a limit cone.
 -/
@@ -512,9 +440,6 @@ def isLimitMapConeOfIsLimitSheafConditionFork
       inv_hom_id' := by ext; dsimp; simp only [category.comp_id] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork
 
-/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone -> TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapConeₓ'. -/
 /-- If `F.map_cone (cone U)` is a limit cone,
 then `sheaf_condition_equalizer_products.fork` is an equalizer.
 -/
Diff
@@ -214,10 +214,8 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
     (by
       rintro ⟨⟩ ⟨⟩ ⟨⟩
       · simp
-      · ext
-        simp [left_res]
-      · ext
-        simp [right_res]
+      · ext; simp [left_res]
+      · ext; simp [right_res]
       · simp)
 #align Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso
 
@@ -278,28 +276,24 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           (Pi.lift fun b : ι × ι => c.π.app (op (pair b.1 b.2)))
       naturality' := fun Y Z f => by
         cases Y <;> cases Z <;> cases f
-        · ext i
-          dsimp
+        · ext i; dsimp
           simp only [limit.lift_π, category.id_comp, fan.mk_π_app, CategoryTheory.Functor.map_id,
             category.assoc]
           dsimp
           simp only [limit.lift_π, category.id_comp, fan.mk_π_app]
-        · ext ⟨i, j⟩
-          dsimp [sheaf_condition_equalizer_products.left_res]
+        · ext ⟨i, j⟩; dsimp [sheaf_condition_equalizer_products.left_res]
           simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
             category.assoc]
           have h := c.π.naturality (Quiver.Hom.op (hom.left i j))
           dsimp at h
           simpa using h
-        · ext ⟨i, j⟩
-          dsimp [sheaf_condition_equalizer_products.right_res]
+        · ext ⟨i, j⟩; dsimp [sheaf_condition_equalizer_products.right_res]
           simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
             category.assoc]
           have h := c.π.naturality (Quiver.Hom.op (hom.right i j))
           dsimp at h
           simpa using h
-        · ext i
-          dsimp
+        · ext i; dsimp
           simp only [limit.lift_π, category.id_comp, fan.mk_π_app, CategoryTheory.Functor.map_id,
             category.assoc]
           dsimp
@@ -323,7 +317,7 @@ def coneEquivFunctor :
     { Hom := f.Hom
       w' := fun j => by
         cases j <;>
-          · ext
+          · ext;
             simp only [limits.fan.mk_π_app, limits.cone_morphism.w, limits.limit.lift_π,
               category.assoc, cone_equiv_functor_obj_π_app] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctor
@@ -354,11 +348,8 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
         generalize f.unop = f'
         rintro rfl
         rcases x with (⟨i⟩ | ⟨⟩) <;> rcases y with (⟨⟩ | ⟨j, j⟩) <;> rcases f' with ⟨⟩
-        · dsimp
-          erw [F.map_id]
-          simp
-        · dsimp
-          simp only [category.id_comp, category.assoc]
+        · dsimp; erw [F.map_id]; simp
+        · dsimp; simp only [category.id_comp, category.assoc]
           have h := c.π.naturality walking_parallel_pair_hom.left
           dsimp [sheaf_condition_equalizer_products.left_res] at h
           simp only [category.id_comp] at h
@@ -366,8 +357,7 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
           rw [h']
           simp only [category.assoc, limit.lift_π, fan.mk_π_app]
           rfl
-        · dsimp
-          simp only [category.id_comp, category.assoc]
+        · dsimp; simp only [category.id_comp, category.assoc]
           have h := c.π.naturality walking_parallel_pair_hom.right
           dsimp [sheaf_condition_equalizer_products.right_res] at h
           simp only [category.id_comp] at h
@@ -375,9 +365,7 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
           rw [h']
           simp
           rfl
-        · dsimp
-          erw [F.map_id]
-          simp }
+        · dsimp; erw [F.map_id]; simp }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj
 
 /- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse is a dubious translation:
@@ -414,14 +402,12 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     { Hom := 𝟙 _
       w' := fun j => by induction j using Opposite.rec';
         rcases j with ⟨⟩ <;>
-          · dsimp
-            simp only [limits.fan.mk_π_app, category.id_comp, limits.limit.lift_π] }
+          · dsimp; simp only [limits.fan.mk_π_app, category.id_comp, limits.limit.lift_π] }
   inv :=
     { Hom := 𝟙 _
       w' := fun j => by induction j using Opposite.rec';
         rcases j with ⟨⟩ <;>
-          · dsimp
-            simp only [limits.fan.mk_π_app, category.id_comp, limits.limit.lift_π] }
+          · dsimp; simp only [limits.fan.mk_π_app, category.id_comp, limits.limit.lift_π] }
   hom_inv_id' := by
     ext
     simp only [category.comp_id, limits.cone.category_comp_hom, limits.cone.category_id_hom]
@@ -452,34 +438,21 @@ def coneEquivCounitIso :
           { Hom := 𝟙 _
             w' := by
               rintro ⟨_ | _⟩
-              · ext ⟨j⟩
-                dsimp
+              · ext ⟨j⟩; dsimp;
                 simp only [category.id_comp, limits.fan.mk_π_app, limits.limit.lift_π]
-              · ext ⟨i, j⟩
-                dsimp
+              · ext ⟨i, j⟩; dsimp;
                 simp only [category.id_comp, limits.fan.mk_π_app, limits.limit.lift_π] }
         inv :=
           { Hom := 𝟙 _
             w' := by
               rintro ⟨_ | _⟩
-              · ext ⟨j⟩
-                dsimp
+              · ext ⟨j⟩; dsimp;
                 simp only [category.id_comp, limits.fan.mk_π_app, limits.limit.lift_π]
-              · ext ⟨i, j⟩
-                dsimp
+              · ext ⟨i, j⟩; dsimp;
                 simp only [category.id_comp, limits.fan.mk_π_app, limits.limit.lift_π] }
-        hom_inv_id' := by
-          ext
-          dsimp
-          simp only [category.comp_id]
-        inv_hom_id' := by
-          ext
-          dsimp
-          simp only [category.comp_id] })
-    fun c d f => by
-    ext
-    dsimp
-    simp only [category.comp_id, category.id_comp]
+        hom_inv_id' := by ext; dsimp; simp only [category.comp_id]
+        inv_hom_id' := by ext; dsimp; simp only [category.comp_id] })
+    fun c d f => by ext; dsimp; simp only [category.comp_id, category.id_comp]
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_counit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivCounitIso
 -/
 
@@ -517,9 +490,7 @@ def isLimitMapConeOfIsLimitSheafConditionFork
             intro x
             induction x using Opposite.rec'
             rcases x with ⟨⟩
-            · dsimp
-              simp
-              rfl
+            · dsimp; simp; rfl
             · dsimp
               simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
                 category.assoc]
@@ -531,22 +502,14 @@ def isLimitMapConeOfIsLimitSheafConditionFork
             intro x
             induction x using Opposite.rec'
             rcases x with ⟨⟩
-            · dsimp
-              simp
-              rfl
+            · dsimp; simp; rfl
             · dsimp
               simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
                 category.assoc]
               rw [← F.map_comp]
               rfl }
-      hom_inv_id' := by
-        ext
-        dsimp
-        simp only [category.comp_id]
-      inv_hom_id' := by
-        ext
-        dsimp
-        simp only [category.comp_id] }
+      hom_inv_id' := by ext; dsimp; simp only [category.comp_id]
+      inv_hom_id' := by ext; dsimp; simp only [category.comp_id] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork
 
 /- warning: Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone -> TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone is a dubious translation:
@@ -562,11 +525,8 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
         { Hom := 𝟙 _
           w' := by
             rintro ⟨⟩
-            · dsimp
-              simp
-              rfl
-            · dsimp
-              ext ⟨i, j⟩
+            · dsimp; simp; rfl
+            · dsimp; ext ⟨i, j⟩
               simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
                 category.assoc]
               rw [← F.map_comp]
@@ -575,23 +535,14 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
         { Hom := 𝟙 _
           w' := by
             rintro ⟨⟩
-            · dsimp
-              simp
-              rfl
-            · dsimp
-              ext ⟨i, j⟩
+            · dsimp; simp; rfl
+            · dsimp; ext ⟨i, j⟩
               simp only [limit.lift_π, limit.lift_π_assoc, category.id_comp, fan.mk_π_app,
                 category.assoc]
               rw [← F.map_comp]
               rfl }
-      hom_inv_id' := by
-        ext
-        dsimp
-        simp only [category.comp_id]
-      inv_hom_id' := by
-        ext
-        dsimp
-        simp only [category.comp_id] }
+      hom_inv_id' := by ext; dsimp; simp only [category.comp_id]
+      inv_hom_id' := by ext; dsimp; simp only [category.comp_id] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone
 
 end SheafConditionPairwiseIntersections
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.equalizer_products
-! leanprover-community/mathlib commit 85d6221d32c37e68f05b2e42cde6cee658dae5e9
+! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Topology.Sheaves.SheafCondition.PairwiseIntersections
 /-!
 # The sheaf condition in terms of an equalizer of products
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Here we set up the machinery for the "usual" definition of the sheaf condition,
 e.g. as in https://stacks.math.columbia.edu/tag/0072
 in terms of an equalizer diagram where the two objects are
@@ -50,32 +53,46 @@ namespace Presheaf
 
 namespace SheafConditionEqualizerProducts
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens /-
 /-- The product of the sections of a presheaf over a family of open sets. -/
 def piOpens : C :=
   ∏ fun i : ι => F.obj (op (U i))
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_opens TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.piInters /-
 /-- The product of the sections of a presheaf over the pairwise intersections of
 a family of open sets.
 -/
 def piInters : C :=
   ∏ fun p : ι × ι => F.obj (op (U p.1 ⊓ U p.2))
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_inters TopCat.Presheaf.SheafConditionEqualizerProducts.piInters
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.leftRes /-
 /-- The morphism `Π F.obj (U i) ⟶ Π F.obj (U i) ⊓ (U j)` whose components
 are given by the restriction maps from `U i` to `U i ⊓ U j`.
 -/
 def leftRes : piOpens F U ⟶ piInters.{v'} F U :=
   Pi.lift fun p : ι × ι => Pi.π _ p.1 ≫ F.map (inf_le_left (U p.1) (U p.2)).op
 #align Top.presheaf.sheaf_condition_equalizer_products.left_res TopCat.Presheaf.SheafConditionEqualizerProducts.leftRes
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes /-
 /-- The morphism `Π F.obj (U i) ⟶ Π F.obj (U i) ⊓ (U j)` whose components
 are given by the restriction maps from `U j` to `U i ⊓ U j`.
 -/
 def rightRes : piOpens F U ⟶ piInters.{v'} F U :=
   Pi.lift fun p : ι × ι => Pi.π _ p.2 ≫ F.map (inf_le_right (U p.1) (U p.2)).op
 #align Top.presheaf.sheaf_condition_equalizer_products.right_res TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes
+-/
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.res -> TopCat.Presheaf.SheafConditionEqualizerProducts.res is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopologicalSpace.Opens.setLike.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))))) C _inst_1 F (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (ConditionallyCompleteLattice.toHasSup.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (TopologicalSpace.Opens.completeLattice.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))) ι U))) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.res._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))) C _inst_1 F) (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (ConditionallyCompleteLattice.toSupSet.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)))) ι U))) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.res TopCat.Presheaf.SheafConditionEqualizerProducts.resₓ'. -/
 /-- The morphism `F.obj U ⟶ Π F.obj (U i)` whose components
 are given by the restriction maps from `U j` to `U i ⊓ U j`.
 -/
@@ -83,11 +100,17 @@ def res : F.obj (op (iSup U)) ⟶ piOpens.{v'} F U :=
   Pi.lift fun i : ι => F.map (TopologicalSpace.Opens.leSupr U i).op
 #align Top.presheaf.sheaf_condition_equalizer_products.res TopCat.Presheaf.SheafConditionEqualizerProducts.res
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.res_π -> TopCat.Presheaf.SheafConditionEqualizerProducts.res_π is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.res_π TopCat.Presheaf.SheafConditionEqualizerProducts.res_πₓ'. -/
 @[simp, elementwise]
 theorem res_π (i : ι) : res F U ≫ limit.π _ ⟨i⟩ = F.map (Opens.leSupr U i).op := by
   rw [res, limit.lift_π, fan.mk_π_app]
 #align Top.presheaf.sheaf_condition_equalizer_products.res_π TopCat.Presheaf.SheafConditionEqualizerProducts.res_π
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.w -> TopCat.Presheaf.SheafConditionEqualizerProducts.w is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.w TopCat.Presheaf.SheafConditionEqualizerProducts.wₓ'. -/
 @[elementwise]
 theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U :=
   by
@@ -99,35 +122,54 @@ theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U :=
   congr
 #align Top.presheaf.sheaf_condition_equalizer_products.w TopCat.Presheaf.SheafConditionEqualizerProducts.w
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.diagram /-
 /-- The equalizer diagram for the sheaf condition.
 -/
 @[reducible]
 def diagram : WalkingParallelPair ⥤ C :=
   parallelPair (leftRes.{v'} F U) (rightRes F U)
 #align Top.presheaf.sheaf_condition_equalizer_products.diagram TopCat.Presheaf.SheafConditionEqualizerProducts.diagram
+-/
 
+#print TopCat.Presheaf.SheafConditionEqualizerProducts.fork /-
 /-- The restriction map `F.obj U ⟶ Π F.obj (U i)` gives a cone over the equalizer diagram
 for the sheaf condition. The sheaf condition asserts this cone is a limit cone.
 -/
 def fork : Fork.{v} (leftRes F U) (rightRes F U) :=
   Fork.ofι _ (w F U)
 #align Top.presheaf.sheaf_condition_equalizer_products.fork TopCat.Presheaf.SheafConditionEqualizerProducts.fork
+-/
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_X -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))), Eq.{succ u3} C (CategoryTheory.Limits.Cone.pt.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1 (CategoryTheory.Limits.parallelPair.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_1.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_2.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.leftRes.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_3.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.fork._proof_4.{u3, u2, u1} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J)) X F ι U)) (TopCat.Presheaf.SheafConditionEqualizerProducts.fork.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (SetLike.partialOrder.{u1, u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopologicalSpace.Opens.setLike.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))))) C _inst_1 F (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (ConditionallyCompleteLattice.toHasSup.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)) (TopologicalSpace.Opens.completeLattice.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X)))) ι U)))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} (F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))), Eq.{succ u3} C (CategoryTheory.Limits.Cone.pt.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1 (CategoryTheory.Limits.parallelPair.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.leftRes.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.rightRes.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)) (TopCat.Presheaf.SheafConditionEqualizerProducts.fork.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (Opposite.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) (CategoryTheory.Category.opposite.{u1, u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (Preorder.smallCategory.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (PartialOrder.toPreorder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteSemilatticeInf.toPartialOrder.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))))))) C _inst_1 F) (Opposite.op.{succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (iSup.{u1, succ u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (ConditionallyCompleteLattice.toSupSet.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (CompleteLattice.toConditionallyCompleteLattice.{u1} (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)) (TopologicalSpace.Opens.instCompleteLatticeOpens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X)))) ι U)))
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ptₓ'. -/
 @[simp]
 theorem fork_pt : (fork F U).pt = F.obj (op (iSup U)) :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_ι -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ι is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_ι TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ιₓ'. -/
 @[simp]
 theorem fork_ι : (fork F U).ι = res F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_ι TopCat.Presheaf.SheafConditionEqualizerProducts.fork_ι
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zeroₓ'. -/
 @[simp]
 theorem fork_π_app_walkingParallelPair_zero : (fork F U).π.app WalkingParallelPair.zero = res F U :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_one -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_one is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_one TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_oneₓ'. -/
 @[simp]
 theorem fork_π_app_walkingParallelPair_one :
     (fork F U).π.app WalkingParallelPair.one = res F U ≫ leftRes F U :=
@@ -136,18 +178,36 @@ theorem fork_π_app_walkingParallelPair_one :
 
 variable {F} {G : Presheaf C X}
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u1 u2, max u3 u2 u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.Presheaf.category.{u2, u1, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso._proof_2.{u3, u2, u1} C _inst_1 _inst_2) X G ι U))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.instCategoryPresheaf.{u1, u2, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X G ι U))
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIsoₓ'. -/
 /-- Isomorphic presheaves have isomorphic `pi_opens` for any cover `U`. -/
 @[simp]
 def piOpens.isoOfIso (α : F ≅ G) : piOpens F U ≅ piOpens.{v'} G U :=
   Pi.mapIso fun X => α.app _
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u1 u2, max u3 u2 u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.Presheaf.category.{u2, u1, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso._proof_2.{u3, u2, u1} C _inst_1 _inst_2) X G ι U))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.instCategoryPresheaf.{u1, u2, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X G ι U))
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIsoₓ'. -/
 /-- Isomorphic presheaves have isomorphic `pi_inters` for any cover `U`. -/
 @[simp]
 def piInters.isoOfIso (α : F ≅ G) : piInters F U ≅ piInters.{v'} G U :=
   Pi.mapIso fun X => α.app _
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_inters.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piInters.isoOfIso
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u1 u2, max u3 u2 u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.Presheaf.category.{u2, u1, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, max u2 u3} (CategoryTheory.Functor.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (CategoryTheory.Functor.category.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso._proof_1.{u3, u2, u1} C _inst_1 _inst_2) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso._proof_2.{u3, u2, u1} C _inst_1 _inst_2) X G ι U))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Limits.HasProducts.{u1, u2, u3} C _inst_1] {X : TopCat.{u1}} {F : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {G : TopCat.Presheaf.{u1, u2, u3} C _inst_1 X}, (CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (TopCat.Presheaf.{u1, u2, u3} C _inst_1 X) (TopCat.instCategoryPresheaf.{u1, u2, u3} C _inst_1 X) F G) -> (CategoryTheory.Iso.{u2, max u3 u2} (CategoryTheory.Functor.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (CategoryTheory.Functor.category.{0, u2, 0, u3} CategoryTheory.Limits.WalkingParallelPair CategoryTheory.Limits.walkingParallelPairHomCategory C _inst_1) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X F ι U) (TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.{u1, u2, u3} C _inst_1 (fun (J : Type.{u1}) => _inst_2 J) X G ι U))
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIsoₓ'. -/
 /-- Isomorphic presheaves have isomorphic sheaf condition diagrams. -/
 def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
   NatIso.ofComponents (by rintro ⟨⟩; exact pi_opens.iso_of_iso U α; exact pi_inters.iso_of_iso U α)
@@ -161,6 +221,9 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
       · simp)
 #align Top.presheaf.sheaf_condition_equalizer_products.diagram.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.diagram.isoOfIso
 
+/- warning: Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_iso -> TopCat.Presheaf.SheafConditionEqualizerProducts.fork.isoOfIso is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_equalizer_products.fork.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.fork.isoOfIsoₓ'. -/
 /-- If `F G : presheaf C X` are isomorphic presheaves,
 then the `fork F U`, the canonical cone of the sheaf condition diagram for `F`,
 is isomorphic to `fork F G` postcomposed with the corresponding isomorphism between
@@ -179,6 +242,7 @@ def fork.isoOfIso (α : F ≅ G) :
 
 end SheafConditionEqualizerProducts
 
+#print TopCat.Presheaf.IsSheafEqualizerProducts /-
 /-- The sheaf condition for a `F : presheaf C X` requires that the morphism
 `F.obj U ⟶ ∏ F.obj (U i)` (where `U` is some open set which is the union of the `U i`)
 is the equalizer of the two morphisms
@@ -187,6 +251,7 @@ is the equalizer of the two morphisms
 def IsSheafEqualizerProducts (F : Presheaf.{v', v, u} C X) : Prop :=
   ∀ ⦃ι : Type v'⦄ (U : ι → Opens X), Nonempty (IsLimit (SheafConditionEqualizerProducts.fork F U))
 #align Top.presheaf.is_sheaf_equalizer_products TopCat.Presheaf.IsSheafEqualizerProducts
+-/
 
 /-!
 The remainder of this file shows that the equalizer_products sheaf condition is equivalent
@@ -198,6 +263,9 @@ namespace SheafConditionPairwiseIntersections
 
 open CategoryTheory.Pairwise CategoryTheory.Pairwise.Hom
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor_obj -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorObj is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorObjₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
@@ -242,6 +310,9 @@ section
 
 attribute [local tidy] tactic.case_bash
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctor is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_functor TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivFunctorₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivFunctor :
@@ -259,6 +330,9 @@ def coneEquivFunctor :
 
 end
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObjₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagram F U)) :
@@ -306,6 +380,9 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
           simp }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivInverse :
@@ -325,6 +402,9 @@ def coneEquivInverse :
           rw [← f.w walking_parallel_pair.one, category.assoc] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoAppₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
@@ -350,6 +430,9 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     simp only [category.comp_id, limits.cone.category_comp_hom, limits.cone.category_id_hom]
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoₓ'. -/
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivUnitIso :
@@ -357,6 +440,7 @@ def coneEquivUnitIso :
   NatIso.ofComponents (coneEquivUnitIsoApp F U) (by tidy)
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso
 
+#print TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivCounitIso /-
 /-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
 @[simps]
 def coneEquivCounitIso :
@@ -397,7 +481,11 @@ def coneEquivCounitIso :
     dsimp
     simp only [category.comp_id, category.id_comp]
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_counit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivCounitIso
+-/
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv -> TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquiv is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivₓ'. -/
 /--
 Cones over `diagram U ⋙ F` are the same as a cones over the usual sheaf condition equalizer diagram.
 -/
@@ -414,6 +502,9 @@ def coneEquiv :
 attribute [local reducible]
   sheaf_condition_equalizer_products.res sheaf_condition_equalizer_products.left_res
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork -> TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionForkₓ'. -/
 /-- If `sheaf_condition_equalizer_products.fork` is an equalizer,
 then `F.map_cone (cone U)` is a limit cone.
 -/
@@ -458,6 +549,9 @@ def isLimitMapConeOfIsLimitSheafConditionFork
         simp only [category.comp_id] }
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork
 
+/- warning: Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone -> TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapConeₓ'. -/
 /-- If `F.map_cone (cone U)` is a limit cone,
 then `sheaf_condition_equalizer_products.fork` is an equalizer.
 -/
@@ -504,6 +598,7 @@ end SheafConditionPairwiseIntersections
 
 open SheafConditionPairwiseIntersections
 
+#print TopCat.Presheaf.isSheaf_iff_isSheafEqualizerProducts /-
 /-- The sheaf condition in terms of an equalizer diagram is equivalent
 to the default sheaf condition.
 -/
@@ -513,6 +608,7 @@ theorem isSheaf_iff_isSheafEqualizerProducts (F : Presheaf C X) :
     Iff.intro (fun h ι U => ⟨isLimitSheafConditionForkOfIsLimitMapCone F U (h U).some⟩) fun h ι U =>
       ⟨isLimitMapConeOfIsLimitSheafConditionFork F U (h U).some⟩
 #align Top.presheaf.is_sheaf_iff_is_sheaf_equalizer_products TopCat.Presheaf.isSheaf_iff_isSheafEqualizerProducts
+-/
 
 end Presheaf
 
Diff
@@ -79,7 +79,7 @@ def rightRes : piOpens F U ⟶ piInters.{v'} F U :=
 /-- The morphism `F.obj U ⟶ Π F.obj (U i)` whose components
 are given by the restriction maps from `U j` to `U i ⊓ U j`.
 -/
-def res : F.obj (op (supᵢ U)) ⟶ piOpens.{v'} F U :=
+def res : F.obj (op (iSup U)) ⟶ piOpens.{v'} F U :=
   Pi.lift fun i : ι => F.map (TopologicalSpace.Opens.leSupr U i).op
 #align Top.presheaf.sheaf_condition_equalizer_products.res TopCat.Presheaf.SheafConditionEqualizerProducts.res
 
@@ -114,7 +114,7 @@ def fork : Fork.{v} (leftRes F U) (rightRes F U) :=
 #align Top.presheaf.sheaf_condition_equalizer_products.fork TopCat.Presheaf.SheafConditionEqualizerProducts.fork
 
 @[simp]
-theorem fork_pt : (fork F U).pt = F.obj (op (supᵢ U)) :=
+theorem fork_pt : (fork F U).pt = F.obj (op (iSup U)) :=
   rfl
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt
 
Diff
@@ -267,14 +267,14 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
   π :=
     { app := by
         intro x
-        induction x using Opposite.rec
+        induction x using Opposite.rec'
         rcases x with (⟨i⟩ | ⟨i, j⟩)
         · exact c.π.app walking_parallel_pair.zero ≫ pi.π _ i
         · exact c.π.app walking_parallel_pair.one ≫ pi.π _ (i, j)
       naturality' := by
         intro x y f
-        induction x using Opposite.rec
-        induction y using Opposite.rec
+        induction x using Opposite.rec'
+        induction y using Opposite.rec'
         have ef : f = f.unop.op := rfl
         revert ef
         generalize f.unop = f'
@@ -316,7 +316,7 @@ def coneEquivInverse :
     { Hom := f.Hom
       w' := by
         intro x
-        induction x using Opposite.rec
+        induction x using Opposite.rec'
         rcases x with (⟨i⟩ | ⟨i, j⟩)
         · dsimp
           dsimp only [fork.ι]
@@ -332,13 +332,13 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     where
   Hom :=
     { Hom := 𝟙 _
-      w' := fun j => by induction j using Opposite.rec;
+      w' := fun j => by induction j using Opposite.rec';
         rcases j with ⟨⟩ <;>
           · dsimp
             simp only [limits.fan.mk_π_app, category.id_comp, limits.limit.lift_π] }
   inv :=
     { Hom := 𝟙 _
-      w' := fun j => by induction j using Opposite.rec;
+      w' := fun j => by induction j using Opposite.rec';
         rcases j with ⟨⟩ <;>
           · dsimp
             simp only [limits.fan.mk_π_app, category.id_comp, limits.limit.lift_π] }
@@ -424,7 +424,7 @@ def isLimitMapConeOfIsLimitSheafConditionFork
         { Hom := 𝟙 _
           w' := by
             intro x
-            induction x using Opposite.rec
+            induction x using Opposite.rec'
             rcases x with ⟨⟩
             · dsimp
               simp
@@ -438,7 +438,7 @@ def isLimitMapConeOfIsLimitSheafConditionFork
         { Hom := 𝟙 _
           w' := by
             intro x
-            induction x using Opposite.rec
+            induction x using Opposite.rec'
             rcases x with ⟨⟩
             · dsimp
               simp
Diff
@@ -114,9 +114,9 @@ def fork : Fork.{v} (leftRes F U) (rightRes F U) :=
 #align Top.presheaf.sheaf_condition_equalizer_products.fork TopCat.Presheaf.SheafConditionEqualizerProducts.fork
 
 @[simp]
-theorem fork_x : (fork F U).x = F.obj (op (supᵢ U)) :=
+theorem fork_pt : (fork F U).pt = F.obj (op (supᵢ U)) :=
   rfl
-#align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_x
+#align Top.presheaf.sheaf_condition_equalizer_products.fork_X TopCat.Presheaf.SheafConditionEqualizerProducts.fork_pt
 
 @[simp]
 theorem fork_ι : (fork F U).ι = res F U :=
@@ -203,7 +203,7 @@ open CategoryTheory.Pairwise CategoryTheory.Pairwise.Hom
 def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
     Cone (SheafConditionEqualizerProducts.diagram F U)
     where
-  x := c.x
+  pt := c.pt
   π :=
     { app := fun Z =>
         WalkingParallelPair.casesOn Z (Pi.lift fun i : ι => c.π.app (op (single i)))
@@ -263,7 +263,7 @@ end
 @[simps]
 def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagram F U)) :
     Limits.Cone ((diagram U).op ⋙ F) where
-  x := c.x
+  pt := c.pt
   π :=
     { app := by
         intro x

Changes in mathlib4

mathlib3
mathlib4
doc: fix many more mathlib3 names in doc comments (#11987)

A mix of various changes; generated with a script and manually tweaked.

Diff
@@ -17,7 +17,7 @@ e.g. as in https://stacks.math.columbia.edu/tag/0072
 in terms of an equalizer diagram where the two objects are
 `∏ F.obj (U i)` and `∏ F.obj (U i) ⊓ (U j)`.
 
-We show that this sheaf condition is equivalent to the `pairwise_intersections` sheaf condition when
+We show that this sheaf condition is equivalent to the "pairwise intersections" sheaf condition when
 the presheaf is valued in a category with products, and thereby equivalent to the default sheaf
 condition.
 -/
@@ -211,8 +211,8 @@ set_option linter.uppercaseLean3 false in
 #align Top.presheaf.is_sheaf_equalizer_products TopCat.Presheaf.IsSheafEqualizerProducts
 
 /-!
-The remainder of this file shows that the equalizer_products sheaf condition is equivalent
-to the pairwise_intersections sheaf condition.
+The remainder of this file shows that the "equalizer products" sheaf condition is equivalent
+to the "pairwise intersections" sheaf condition.
 -/
 
 
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
@@ -32,7 +32,6 @@ open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite TopologicalS
 namespace TopCat
 
 variable {C : Type u} [Category.{v} C] [HasProducts.{v'} C]
-
 variable {X : TopCat.{v'}} (F : Presheaf C X) {ι : Type v'} (U : ι → Opens X)
 
 namespace Presheaf
style: reduce spacing variation in "porting note" comments (#10886)

In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.

Diff
@@ -86,7 +86,7 @@ set_option linter.uppercaseLean3 false in
 @[elementwise]
 theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U := by
   dsimp [res, leftRes, rightRes]
-  -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+  -- Porting note: `ext` can't see `limit.hom_ext` applies here:
   -- See https://github.com/leanprover-community/mathlib4/issues/5229
   refine limit.hom_ext (fun _ => ?_)
   simp only [limit.lift_π, limit.lift_π_assoc, Fan.mk_π_app, Category.assoc]
@@ -130,7 +130,7 @@ theorem fork_π_app_walkingParallelPair_zero : (fork F U).π.app WalkingParallel
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero
 
--- Porting note : Shortcut simplifier
+-- Porting note: Shortcut simplifier
 @[simp (high)]
 theorem fork_π_app_walkingParallelPair_one :
     (fork F U).π.app WalkingParallelPair.one = res F U ≫ leftRes F U :=
@@ -160,14 +160,14 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
     (by
       rintro ⟨⟩ ⟨⟩ ⟨⟩
       · simp
-      · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+      · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
         -- See https://github.com/leanprover-community/mathlib4/issues/5229
         refine limit.hom_ext (fun _ => ?_)
         simp only [leftRes, piOpens.isoOfIso, piInters.isoOfIso, parallelPair_map_left,
           Functor.mapIso_hom, lim_map, limit.lift_map, limit.lift_π, Cones.postcompose_obj_π,
           NatTrans.comp_app, Fan.mk_π_app, Discrete.natIso_hom_app, Iso.app_hom, Category.assoc,
           NatTrans.naturality, limMap_π_assoc]
-      · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+      · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
         -- See https://github.com/leanprover-community/mathlib4/issues/5229
         refine limit.hom_ext (fun _ => ?_)
         simp only [rightRes, piOpens.isoOfIso, piInters.isoOfIso, parallelPair_map_right,
@@ -187,7 +187,7 @@ def fork.isoOfIso (α : F ≅ G) :
     fork F U ≅ (Cones.postcompose (diagram.isoOfIso U α).inv).obj (fork G U) := by
   fapply Fork.ext
   · apply α.app
-  · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+  · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
     -- See https://github.com/leanprover-community/mathlib4/issues/5229
     refine limit.hom_ext (fun _ => ?_)
     dsimp only [Fork.ι]
@@ -232,7 +232,7 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           (Pi.lift fun b : ι × ι => c.π.app (op (pair b.1 b.2)))
       naturality := fun Y Z f => by
         cases Y <;> cases Z <;> cases f
-        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+        · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
           -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun i => ?_
           dsimp
@@ -240,7 +240,7 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
             Category.assoc]
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app]
-        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+        · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
           -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun ⟨i, j⟩ => ?_
           dsimp [SheafConditionEqualizerProducts.leftRes]
@@ -249,7 +249,7 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           have h := c.π.naturality (Quiver.Hom.op (Hom.left i j))
           dsimp at h
           simpa using h
-        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+        · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
           -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun ⟨i, j⟩ => ?_
           dsimp [SheafConditionEqualizerProducts.rightRes]
@@ -258,7 +258,7 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           have h := c.π.naturality (Quiver.Hom.op (Hom.right i j))
           dsimp at h
           simpa using h
-        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+        · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
           -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun i => ?_
           dsimp
@@ -281,7 +281,7 @@ def coneEquivFunctor :
     { hom := f.hom
       w := fun j => by
         cases j <;>
-          · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+          · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
             -- See https://github.com/leanprover-community/mathlib4/issues/5229
             refine limit.hom_ext fun i => ?_
             simp only [Limits.Fan.mk_π_app, Limits.ConeMorphism.w, Limits.limit.lift_π,
@@ -400,12 +400,12 @@ def coneEquivCounitIso :
           { hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
-              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+              · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
                 -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π]
-              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+              · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
                 -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨i, j⟩ => ?_
                 dsimp [coneEquivInverse]
@@ -414,12 +414,12 @@ def coneEquivCounitIso :
           { hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
-              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+              · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
                 -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π]
-              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+              · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
                 -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨i, j⟩ => ?_
                 dsimp [coneEquivInverse]
@@ -498,7 +498,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
             rintro ⟨⟩
             · simp
               rfl
-            · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+            · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
               -- See https://github.com/leanprover-community/mathlib4/issues/5229
               refine limit.hom_ext fun ⟨i, j⟩ => ?_
               dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
@@ -513,7 +513,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
             rintro ⟨⟩
             · simp
               rfl
-            · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+            · -- Porting note: `ext` can't see `limit.hom_ext` applies here:
               -- See https://github.com/leanprover-community/mathlib4/issues/5229
               refine limit.hom_ext fun ⟨i, j⟩ => ?_
               dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
chore: replace ConeMorphism.Hom by ConeMorphism.hom (#7176)
Diff
@@ -278,7 +278,7 @@ def coneEquivFunctor :
     where
   obj c := coneEquivFunctorObj F U c
   map {c c'} f :=
-    { Hom := f.Hom
+    { hom := f.hom
       w := fun j => by
         cases j <;>
           · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
@@ -346,7 +346,7 @@ def coneEquivInverse :
     where
   obj c := coneEquivInverseObj F U c
   map {c c'} f :=
-    { Hom := f.Hom
+    { hom := f.hom
       w := by
         intro x
         induction x using Opposite.rec' with | h x => ?_
@@ -365,14 +365,14 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     (𝟭 (Cone ((diagram U).op ⋙ F))).obj c ≅ (coneEquivFunctor F U ⋙ coneEquivInverse F U).obj c
     where
   hom :=
-    { Hom := 𝟙 _
+    { hom := 𝟙 _
       w := fun j => by
         induction j using Opposite.rec' with | h j => ?_;
         rcases j with ⟨⟩ <;>
         · dsimp [coneEquivInverse]
           simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
   inv :=
-    { Hom := 𝟙 _
+    { hom := 𝟙 _
       w := fun j => by
         induction j using Opposite.rec' with | h j => ?_;
         rcases j with ⟨⟩ <;>
@@ -397,7 +397,7 @@ def coneEquivCounitIso :
   NatIso.ofComponents
     (fun c =>
       { hom :=
-          { Hom := 𝟙 _
+          { hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
               · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
@@ -411,7 +411,7 @@ def coneEquivCounitIso :
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
         inv :=
-          { Hom := 𝟙 _
+          { hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
               · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
@@ -456,7 +456,7 @@ def isLimitMapConeOfIsLimitSheafConditionFork
     (P : IsLimit (SheafConditionEqualizerProducts.fork F U)) : IsLimit (F.mapCone (cocone U).op) :=
   IsLimit.ofIsoLimit ((IsLimit.ofConeEquiv (coneEquiv F U).symm).symm P)
     { hom :=
-        { Hom := 𝟙 _
+        { hom := 𝟙 _
           w := by
             intro x
             induction x with | h x => ?_
@@ -470,7 +470,7 @@ def isLimitMapConeOfIsLimitSheafConditionFork
               rw [← F.map_comp]
               rfl }
       inv :=
-        { Hom := 𝟙 _
+        { hom := 𝟙 _
           w := by
             intro x
             induction x with | h x => ?_
@@ -493,7 +493,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
     IsLimit (SheafConditionEqualizerProducts.fork F U) :=
   IsLimit.ofIsoLimit ((IsLimit.ofConeEquiv (coneEquiv F U)).symm Q)
     { hom :=
-        { Hom := 𝟙 _
+        { hom := 𝟙 _
           w := by
             rintro ⟨⟩
             · simp
@@ -508,7 +508,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
               rw [← F.map_comp]
               rfl }
       inv :=
-        { Hom := 𝟙 _
+        { hom := 𝟙 _
           w := by
             rintro ⟨⟩
             · simp
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,16 +2,13 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.equalizer_products
-! leanprover-community/mathlib commit 85d6221d32c37e68f05b2e42cde6cee658dae5e9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Limits.Shapes.Equalizers
 import Mathlib.CategoryTheory.Limits.Shapes.Products
 import Mathlib.Topology.Sheaves.SheafCondition.PairwiseIntersections
 
+#align_import topology.sheaves.sheaf_condition.equalizer_products from "leanprover-community/mathlib"@"85d6221d32c37e68f05b2e42cde6cee658dae5e9"
+
 /-!
 # The sheaf condition in terms of an equalizer of products
 
feat: more consistent use of ext, and updating porting notes. (#5242)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -89,7 +89,8 @@ set_option linter.uppercaseLean3 false in
 @[elementwise]
 theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U := by
   dsimp [res, leftRes, rightRes]
-  -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+  -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+  -- See https://github.com/leanprover-community/mathlib4/issues/5229
   refine limit.hom_ext (fun _ => ?_)
   simp only [limit.lift_π, limit.lift_π_assoc, Fan.mk_π_app, Category.assoc]
   rw [← F.map_comp]
@@ -162,13 +163,15 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
     (by
       rintro ⟨⟩ ⟨⟩ ⟨⟩
       · simp
-      · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+      · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+        -- See https://github.com/leanprover-community/mathlib4/issues/5229
         refine limit.hom_ext (fun _ => ?_)
         simp only [leftRes, piOpens.isoOfIso, piInters.isoOfIso, parallelPair_map_left,
           Functor.mapIso_hom, lim_map, limit.lift_map, limit.lift_π, Cones.postcompose_obj_π,
           NatTrans.comp_app, Fan.mk_π_app, Discrete.natIso_hom_app, Iso.app_hom, Category.assoc,
           NatTrans.naturality, limMap_π_assoc]
-      · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+      · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+        -- See https://github.com/leanprover-community/mathlib4/issues/5229
         refine limit.hom_ext (fun _ => ?_)
         simp only [rightRes, piOpens.isoOfIso, piInters.isoOfIso, parallelPair_map_right,
           Functor.mapIso_hom, lim_map, limit.lift_map, limit.lift_π, Cones.postcompose_obj_π,
@@ -187,7 +190,8 @@ def fork.isoOfIso (α : F ≅ G) :
     fork F U ≅ (Cones.postcompose (diagram.isoOfIso U α).inv).obj (fork G U) := by
   fapply Fork.ext
   · apply α.app
-  · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+  · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+    -- See https://github.com/leanprover-community/mathlib4/issues/5229
     refine limit.hom_ext (fun _ => ?_)
     dsimp only [Fork.ι]
     -- Ugh, `simp` can't unfold abbreviations.
@@ -231,14 +235,16 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           (Pi.lift fun b : ι × ι => c.π.app (op (pair b.1 b.2)))
       naturality := fun Y Z f => by
         cases Y <;> cases Z <;> cases f
-        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+          -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun i => ?_
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app, CategoryTheory.Functor.map_id,
             Category.assoc]
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app]
-        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+          -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun ⟨i, j⟩ => ?_
           dsimp [SheafConditionEqualizerProducts.leftRes]
           simp only [limit.lift_π, limit.lift_π_assoc, Category.id_comp, Fan.mk_π_app,
@@ -246,7 +252,8 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           have h := c.π.naturality (Quiver.Hom.op (Hom.left i j))
           dsimp at h
           simpa using h
-        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+          -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun ⟨i, j⟩ => ?_
           dsimp [SheafConditionEqualizerProducts.rightRes]
           simp only [limit.lift_π, limit.lift_π_assoc, Category.id_comp, Fan.mk_π_app,
@@ -254,7 +261,8 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           have h := c.π.naturality (Quiver.Hom.op (Hom.right i j))
           dsimp at h
           simpa using h
-        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+          -- See https://github.com/leanprover-community/mathlib4/issues/5229
           refine limit.hom_ext fun i => ?_
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app, CategoryTheory.Functor.map_id,
@@ -276,7 +284,9 @@ def coneEquivFunctor :
     { Hom := f.Hom
       w := fun j => by
         cases j <;>
-          · refine limit.hom_ext fun i => ?_
+          · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+            -- See https://github.com/leanprover-community/mathlib4/issues/5229
+            refine limit.hom_ext fun i => ?_
             simp only [Limits.Fan.mk_π_app, Limits.ConeMorphism.w, Limits.limit.lift_π,
               Category.assoc, coneEquivFunctorObj_π_app] }
 set_option linter.uppercaseLean3 false in
@@ -371,12 +381,6 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
         rcases j with ⟨⟩ <;>
         · dsimp [coneEquivInverse]
           simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
-  hom_inv_id := by
-    ext
-    simp only [Category.comp_id, (. ≫ .), (𝟙 .)]
-  inv_hom_id := by
-    ext
-    simp only [Category.comp_id, (. ≫ .), (𝟙 .)]
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp
 
@@ -399,11 +403,13 @@ def coneEquivCounitIso :
           { Hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
-              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+                -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π]
-              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+                -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨i, j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
@@ -411,22 +417,16 @@ def coneEquivCounitIso :
           { Hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
-              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+                -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π]
-              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+                -- See https://github.com/leanprover-community/mathlib4/issues/5229
                 refine limit.hom_ext fun ⟨i, j⟩ => ?_
                 dsimp [coneEquivInverse]
-                simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
-        hom_inv_id := by
-          ext
-          dsimp
-          simp only [Category.comp_id]
-        inv_hom_id := by
-          ext
-          dsimp
-          simp only [Category.comp_id] })
+                simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] } })
     fun {c d} f => by
     ext
     dsimp
@@ -462,10 +462,9 @@ def isLimitMapConeOfIsLimitSheafConditionFork
         { Hom := 𝟙 _
           w := by
             intro x
-            induction x using Opposite.rec' with | h x => ?_
+            induction x with | h x => ?_
             rcases x with ⟨⟩
-            · dsimp
-              simp
+            · simp
               rfl
             · dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
                 SheafConditionEqualizerProducts.leftRes]
@@ -477,25 +476,16 @@ def isLimitMapConeOfIsLimitSheafConditionFork
         { Hom := 𝟙 _
           w := by
             intro x
-            induction x using Opposite.rec' with | h x => ?_
+            induction x with | h x => ?_
             rcases x with ⟨⟩
-            · dsimp
-              simp
+            · simp
               rfl
             · dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
                 SheafConditionEqualizerProducts.leftRes]
               simp only [limit.lift_π, limit.lift_π_assoc, Category.id_comp, Fan.mk_π_app,
                 Category.assoc]
               rw [← F.map_comp]
-              rfl }
-      hom_inv_id := by
-        ext
-        dsimp
-        simp only [Category.comp_id]
-      inv_hom_id := by
-        ext
-        dsimp
-        simp only [Category.comp_id] }
+              rfl } }
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork
 
@@ -509,11 +499,10 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
         { Hom := 𝟙 _
           w := by
             rintro ⟨⟩
-            · dsimp
-              simp
+            · simp
               rfl
-            · dsimp
-              -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+            · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+              -- See https://github.com/leanprover-community/mathlib4/issues/5229
               refine limit.hom_ext fun ⟨i, j⟩ => ?_
               dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
                 SheafConditionEqualizerProducts.leftRes]
@@ -525,26 +514,17 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
         { Hom := 𝟙 _
           w := by
             rintro ⟨⟩
-            · dsimp
-              simp
+            · simp
               rfl
-            · dsimp
-              -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
+            · -- Porting note : `ext` can't see `limit.hom_ext` applies here:
+              -- See https://github.com/leanprover-community/mathlib4/issues/5229
               refine limit.hom_ext fun ⟨i, j⟩ => ?_
               dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
                 SheafConditionEqualizerProducts.leftRes]
               simp only [limit.lift_π, limit.lift_π_assoc, Category.id_comp, Fan.mk_π_app,
                 Category.assoc]
               rw [← F.map_comp]
-              rfl }
-      hom_inv_id := by
-        ext
-        dsimp
-        simp only [Category.comp_id]
-      inv_hom_id := by
-        ext
-        dsimp
-        simp only [Category.comp_id] }
+              rfl } }
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_sheaf_condition_fork_of_is_limit_map_cone TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitSheafConditionForkOfIsLimitMapCone
 
chore: fix many typos (#4967)

These are all doc fixes

Diff
@@ -132,7 +132,7 @@ theorem fork_π_app_walkingParallelPair_zero : (fork F U).π.app WalkingParallel
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_equalizer_products.fork_π_app_walking_parallel_pair_zero TopCat.Presheaf.SheafConditionEqualizerProducts.fork_π_app_walkingParallelPair_zero
 
--- Porting note : Shortcut simplifer
+-- Porting note : Shortcut simplifier
 @[simp (high)]
 theorem fork_π_app_walkingParallelPair_one :
     (fork F U).π.app WalkingParallelPair.one = res F U ≫ leftRes F U :=
@@ -212,7 +212,7 @@ set_option linter.uppercaseLean3 false in
 
 /-!
 The remainder of this file shows that the equalizer_products sheaf condition is equivalent
-to the pariwise_intersections sheaf condition.
+to the pairwise_intersections sheaf condition.
 -/
 
 
chore: review of automation in category theory (#4793)

Clean up of automation in the category theory library. Leaving out unnecessary proof steps, or fields done by aesop_cat, and making more use of available autoparameters.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -384,7 +384,7 @@ set_option linter.uppercaseLean3 false in
 @[simps!]
 def coneEquivUnitIso :
     𝟭 (Limits.Cone ((diagram U).op ⋙ F)) ≅ coneEquivFunctor F U ⋙ coneEquivInverse F U :=
-  NatIso.ofComponents (coneEquivUnitIsoApp F U) (fun {_ _} f => by aesop_cat)
+  NatIso.ofComponents (coneEquivUnitIsoApp F U)
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso
 
chore: tidy various files (#4466)
Diff
@@ -30,15 +30,7 @@ universe v' v u
 
 noncomputable section
 
-open CategoryTheory
-
-open CategoryTheory.Limits
-
-open TopologicalSpace
-
-open Opposite
-
-open TopologicalSpace.Opens
+open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite TopologicalSpace.Opens
 
 namespace TopCat
 
@@ -97,7 +89,7 @@ set_option linter.uppercaseLean3 false in
 @[elementwise]
 theorem w : res F U ≫ leftRes F U = res F U ≫ rightRes F U := by
   dsimp [res, leftRes, rightRes]
-  -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+  -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
   refine limit.hom_ext (fun _ => ?_)
   simp only [limit.lift_π, limit.lift_π_assoc, Fan.mk_π_app, Category.assoc]
   rw [← F.map_comp]
@@ -150,14 +142,14 @@ set_option linter.uppercaseLean3 false in
 
 variable {F} {G : Presheaf C X}
 
-/-- Isomorphic presheaves have isomorphic `pi_opens` for any cover `U`. -/
+/-- Isomorphic presheaves have isomorphic `piOpens` for any cover `U`. -/
 @[simp]
 def piOpens.isoOfIso (α : F ≅ G) : piOpens F U ≅ piOpens.{v'} G U :=
   Pi.mapIso fun _ => α.app _
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_equalizer_products.pi_opens.iso_of_iso TopCat.Presheaf.SheafConditionEqualizerProducts.piOpens.isoOfIso
 
-/-- Isomorphic presheaves have isomorphic `pi_inters` for any cover `U`. -/
+/-- Isomorphic presheaves have isomorphic `piInters` for any cover `U`. -/
 @[simp]
 def piInters.isoOfIso (α : F ≅ G) : piInters F U ≅ piInters.{v'} G U :=
   Pi.mapIso fun _ => α.app _
@@ -170,13 +162,13 @@ def diagram.isoOfIso (α : F ≅ G) : diagram F U ≅ diagram.{v'} G U :=
     (by
       rintro ⟨⟩ ⟨⟩ ⟨⟩
       · simp
-      · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+      · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
         refine limit.hom_ext (fun _ => ?_)
         simp only [leftRes, piOpens.isoOfIso, piInters.isoOfIso, parallelPair_map_left,
           Functor.mapIso_hom, lim_map, limit.lift_map, limit.lift_π, Cones.postcompose_obj_π,
           NatTrans.comp_app, Fan.mk_π_app, Discrete.natIso_hom_app, Iso.app_hom, Category.assoc,
           NatTrans.naturality, limMap_π_assoc]
-      · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+      · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
         refine limit.hom_ext (fun _ => ?_)
         simp only [rightRes, piOpens.isoOfIso, piInters.isoOfIso, parallelPair_map_right,
           Functor.mapIso_hom, lim_map, limit.lift_map, limit.lift_π, Cones.postcompose_obj_π,
@@ -195,7 +187,7 @@ def fork.isoOfIso (α : F ≅ G) :
     fork F U ≅ (Cones.postcompose (diagram.isoOfIso U α).inv).obj (fork G U) := by
   fapply Fork.ext
   · apply α.app
-  · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+  · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
     refine limit.hom_ext (fun _ => ?_)
     dsimp only [Fork.ι]
     -- Ugh, `simp` can't unfold abbreviations.
@@ -228,7 +220,7 @@ namespace SheafConditionPairwiseIntersections
 
 open CategoryTheory.Pairwise CategoryTheory.Pairwise.Hom
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps]
 def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
     Cone (SheafConditionEqualizerProducts.diagram F U) where
@@ -239,14 +231,14 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           (Pi.lift fun b : ι × ι => c.π.app (op (pair b.1 b.2)))
       naturality := fun Y Z f => by
         cases Y <;> cases Z <;> cases f
-        · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
           refine limit.hom_ext fun i => ?_
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app, CategoryTheory.Functor.map_id,
             Category.assoc]
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app]
-        · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
           refine limit.hom_ext fun ⟨i, j⟩ => ?_
           dsimp [SheafConditionEqualizerProducts.leftRes]
           simp only [limit.lift_π, limit.lift_π_assoc, Category.id_comp, Fan.mk_π_app,
@@ -254,7 +246,7 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           have h := c.π.naturality (Quiver.Hom.op (Hom.left i j))
           dsimp at h
           simpa using h
-        · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
           refine limit.hom_ext fun ⟨i, j⟩ => ?_
           dsimp [SheafConditionEqualizerProducts.rightRes]
           simp only [limit.lift_π, limit.lift_π_assoc, Category.id_comp, Fan.mk_π_app,
@@ -262,7 +254,7 @@ def coneEquivFunctorObj (c : Cone ((diagram U).op ⋙ F)) :
           have h := c.π.naturality (Quiver.Hom.op (Hom.right i j))
           dsimp at h
           simpa using h
-        · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+        · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
           refine limit.hom_ext fun i => ?_
           dsimp
           simp only [limit.lift_π, Category.id_comp, Fan.mk_π_app, CategoryTheory.Functor.map_id,
@@ -274,7 +266,7 @@ set_option linter.uppercaseLean3 false in
 
 section
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps!]
 def coneEquivFunctor :
     Limits.Cone ((diagram U).op ⋙ F) ⥤ Limits.Cone (SheafConditionEqualizerProducts.diagram F U)
@@ -292,7 +284,7 @@ set_option linter.uppercaseLean3 false in
 
 end
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps]
 def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagram F U)) :
     Limits.Cone ((diagram U).op ⋙ F) where
@@ -340,7 +332,7 @@ def coneEquivInverseObj (c : Limits.Cone (SheafConditionEqualizerProducts.diagra
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse_obj TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverseObj
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps!]
 def coneEquivInverse :
     Limits.Cone (SheafConditionEqualizerProducts.diagram F U) ⥤ Limits.Cone ((diagram U).op ⋙ F)
@@ -360,7 +352,7 @@ def coneEquivInverse :
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_inverse TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivInverse
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps]
 def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
     (𝟭 (Cone ((diagram U).op ⋙ F))).obj c ≅ (coneEquivFunctor F U ⋙ coneEquivInverse F U).obj c
@@ -388,7 +380,7 @@ def coneEquivUnitIsoApp (c : Cone ((diagram U).op ⋙ F)) :
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso_app TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIsoApp
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps!]
 def coneEquivUnitIso :
     𝟭 (Limits.Cone ((diagram U).op ⋙ F)) ≅ coneEquivFunctor F U ⋙ coneEquivInverse F U :=
@@ -396,7 +388,7 @@ def coneEquivUnitIso :
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.cone_equiv_unit_iso TopCat.Presheaf.SheafConditionPairwiseIntersections.coneEquivUnitIso
 
-/-- Implementation of `sheaf_condition_pairwise_intersections.cone_equiv`. -/
+/-- Implementation of `SheafConditionPairwiseIntersections.coneEquiv`. -/
 @[simps!]
 def coneEquivCounitIso :
     coneEquivInverse F U ⋙ coneEquivFunctor F U ≅
@@ -407,11 +399,11 @@ def coneEquivCounitIso :
           { Hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
-              · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
                 refine limit.hom_ext fun ⟨j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π]
-              · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
                 refine limit.hom_ext fun ⟨i, j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
@@ -419,11 +411,11 @@ def coneEquivCounitIso :
           { Hom := 𝟙 _
             w := by
               rintro ⟨_ | _⟩
-              · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
                 refine limit.hom_ext fun ⟨j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π]
-              · -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+              · -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
                 refine limit.hom_ext fun ⟨i, j⟩ => ?_
                 dsimp [coneEquivInverse]
                 simp only [Limits.Fan.mk_π_app, Category.id_comp, Limits.limit.lift_π] }
@@ -460,8 +452,8 @@ set_option linter.uppercaseLean3 false in
 -- attribute [local reducible]
 --   SheafConditionEqualizerProducts.res SheafConditionEqualizerProducts.leftRes
 
-/-- If `sheaf_condition_equalizer_products.fork` is an equalizer,
-then `F.map_cone (cone U)` is a limit cone.
+/-- If `SheafConditionEqualizerProducts.fork` is an equalizer,
+then `F.mapCone (cone U)` is a limit cone.
 -/
 def isLimitMapConeOfIsLimitSheafConditionFork
     (P : IsLimit (SheafConditionEqualizerProducts.fork F U)) : IsLimit (F.mapCone (cocone U).op) :=
@@ -507,8 +499,8 @@ def isLimitMapConeOfIsLimitSheafConditionFork
 set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition_pairwise_intersections.is_limit_map_cone_of_is_limit_sheaf_condition_fork TopCat.Presheaf.SheafConditionPairwiseIntersections.isLimitMapConeOfIsLimitSheafConditionFork
 
-/-- If `F.map_cone (cone U)` is a limit cone,
-then `sheaf_condition_equalizer_products.fork` is an equalizer.
+/-- If `F.mapCone (cone U)` is a limit cone,
+then `SheafConditionEqualizerProducts.fork` is an equalizer.
 -/
 def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U).op)) :
     IsLimit (SheafConditionEqualizerProducts.fork F U) :=
@@ -521,7 +513,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
               simp
               rfl
             · dsimp
-              -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+              -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
               refine limit.hom_ext fun ⟨i, j⟩ => ?_
               dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
                 SheafConditionEqualizerProducts.leftRes]
@@ -537,7 +529,7 @@ def isLimitSheafConditionForkOfIsLimitMapCone (Q : IsLimit (F.mapCone (cocone U)
               simp
               rfl
             · dsimp
-              -- Porting note : Lean cant use `limit.hom_ext` as `ext` lemma
+              -- Porting note : Lean can't use `limit.hom_ext` as `ext` lemma
               refine limit.hom_ext fun ⟨i, j⟩ => ?_
               dsimp [coneEquivInverse, SheafConditionEqualizerProducts.res,
                 SheafConditionEqualizerProducts.leftRes]
feat: port Topology.Sheaves.SheafCondition.EqualizerProducts (#4394)

Dependencies 11 + 765

766 files ported (98.6%)
313601 lines ported (98.3%)
Show graph

The unported dependencies are