analysis.convex.join ⟷ Mathlib.Analysis.Convex.Join

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -193,7 +193,7 @@ theorem convexJoin_assoc_aux (s t u : Set E) :
   Β· exact div_nonneg hbβ‚‚.le hab.le
   Β· rw [← add_div, div_self hab.ne']
   Β· rw [← add_assoc, ← mul_add, hab₁, mul_one, habβ‚‚]
-  Β· simp_rw [smul_add, ← mul_smul, mul_div_cancel' _ hab.ne', add_assoc]
+  Β· simp_rw [smul_add, ← mul_smul, mul_div_cancelβ‚€ _ hab.ne', add_assoc]
 #align convex_join_assoc_aux convexJoin_assoc_aux
 -/
 
Diff
@@ -182,7 +182,7 @@ theorem convexJoin_assoc_aux (s t u : Set E) :
   rintro _ ⟨z, ⟨x, hx, y, hy, a₁, b₁, ha₁, hb₁, hab₁, rfl⟩, z, hz, aβ‚‚, bβ‚‚, haβ‚‚, hbβ‚‚, habβ‚‚, rfl⟩
   obtain rfl | hbβ‚‚ := hbβ‚‚.eq_or_lt
   Β· refine' ⟨x, hx, y, ⟨y, hy, z, hz, left_mem_segment _ _ _⟩, a₁, b₁, ha₁, hb₁, hab₁, _⟩
-    rw [add_zero] at habβ‚‚ 
+    rw [add_zero] at habβ‚‚
     rw [habβ‚‚, one_smul, zero_smul, add_zero]
   have haβ‚‚b₁ : 0 ≀ aβ‚‚ * b₁ := mul_nonneg haβ‚‚ hb₁
   have hab : 0 < aβ‚‚ * b₁ + bβ‚‚ := add_pos_of_nonneg_of_pos haβ‚‚b₁ hbβ‚‚
@@ -238,7 +238,7 @@ theorem convexHull_insert (hs : s.Nonempty) :
             (convexHull_mono <| subset_insert _ _) <|
           convex_convexHull _ _).antisymm'
       fun x hx => _
-  rw [convexHull_eq] at hx 
+  rw [convexHull_eq] at hx
   obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
   have :
     (βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i =
@@ -252,10 +252,10 @@ theorem convexHull_insert (hs : s.Nonempty) :
   have hwβ‚€' : βˆ€ i ∈ t.filter fun i => z i β‰  x, 0 ≀ w i := fun i hi =>
     hwβ‚€ _ <| Finset.filter_subset _ _ hi
   obtain hw | hw := (Finset.sum_nonneg hwβ‚€').eq_or_gt
-  Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁ 
+  Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁
     rw [hw₁, one_smul, Finset.sum_eq_zero, add_zero]
     Β· exact subset_convexJoin_left hs.convex_hull (mem_singleton _)
-    simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw 
+    simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw
     rintro i hi
     rw [hw _ hi, zero_smul]
   refine'
@@ -265,7 +265,7 @@ theorem convexHull_insert (hs : s.Nonempty) :
         βˆ‘ i in t.filter fun i => z i = x, w i, βˆ‘ i in t.filter fun i => z i β‰  x, w i,
         Finset.sum_nonneg fun i hi => hwβ‚€ _ <| Finset.filter_subset _ _ hi, Finset.sum_nonneg hwβ‚€',
         _, _⟩
-  Β· rw [Finset.mem_filter] at hi 
+  Β· rw [Finset.mem_filter] at hi
     exact mem_of_mem_insert_of_ne (hz _ hi.1) hi.2
   Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
   Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
Diff
@@ -231,7 +231,44 @@ theorem convexJoin_convexJoin_convexJoin_comm (s t u v : Set E) :
 
 #print convexHull_insert /-
 theorem convexHull_insert (hs : s.Nonempty) :
-    convexHull π•œ (insert x s) = convexJoin π•œ {x} (convexHull π•œ s) := by classical
+    convexHull π•œ (insert x s) = convexJoin π•œ {x} (convexHull π•œ s) := by
+  classical
+  refine'
+    (convexJoin_subset ((singleton_subset_iff.2 <| mem_insert _ _).trans <| subset_convexHull _ _)
+            (convexHull_mono <| subset_insert _ _) <|
+          convex_convexHull _ _).antisymm'
+      fun x hx => _
+  rw [convexHull_eq] at hx 
+  obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
+  have :
+    (βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i =
+      t.center_mass w z :=
+    by
+    rw [Finset.centerMass_eq_of_sum_1 _ _ hw₁, Finset.sum_smul]
+    convert Finset.sum_filter_add_sum_filter_not _ _ (w β€’ z) using 2
+    refine' Finset.sum_congr rfl fun i hi => _
+    rw [Pi.smul_apply', (Finset.mem_filter.1 hi).2]
+  rw [← this]
+  have hwβ‚€' : βˆ€ i ∈ t.filter fun i => z i β‰  x, 0 ≀ w i := fun i hi =>
+    hwβ‚€ _ <| Finset.filter_subset _ _ hi
+  obtain hw | hw := (Finset.sum_nonneg hwβ‚€').eq_or_gt
+  Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁ 
+    rw [hw₁, one_smul, Finset.sum_eq_zero, add_zero]
+    Β· exact subset_convexJoin_left hs.convex_hull (mem_singleton _)
+    simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw 
+    rintro i hi
+    rw [hw _ hi, zero_smul]
+  refine'
+    mem_convexJoin.2
+      ⟨x, mem_singleton _, (t.filter fun i => z i β‰  x).centerMass w z,
+        Finset.centerMass_mem_convexHull _ hwβ‚€' hw fun i hi => _,
+        βˆ‘ i in t.filter fun i => z i = x, w i, βˆ‘ i in t.filter fun i => z i β‰  x, w i,
+        Finset.sum_nonneg fun i hi => hwβ‚€ _ <| Finset.filter_subset _ _ hi, Finset.sum_nonneg hwβ‚€',
+        _, _⟩
+  Β· rw [Finset.mem_filter] at hi 
+    exact mem_of_mem_insert_of_ne (hz _ hi.1) hi.2
+  Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
+  Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
 #align convex_hull_insert convexHull_insert
 -/
 
Diff
@@ -231,44 +231,7 @@ theorem convexJoin_convexJoin_convexJoin_comm (s t u v : Set E) :
 
 #print convexHull_insert /-
 theorem convexHull_insert (hs : s.Nonempty) :
-    convexHull π•œ (insert x s) = convexJoin π•œ {x} (convexHull π•œ s) := by
-  classical
-  refine'
-    (convexJoin_subset ((singleton_subset_iff.2 <| mem_insert _ _).trans <| subset_convexHull _ _)
-            (convexHull_mono <| subset_insert _ _) <|
-          convex_convexHull _ _).antisymm'
-      fun x hx => _
-  rw [convexHull_eq] at hx 
-  obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
-  have :
-    (βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i =
-      t.center_mass w z :=
-    by
-    rw [Finset.centerMass_eq_of_sum_1 _ _ hw₁, Finset.sum_smul]
-    convert Finset.sum_filter_add_sum_filter_not _ _ (w β€’ z) using 2
-    refine' Finset.sum_congr rfl fun i hi => _
-    rw [Pi.smul_apply', (Finset.mem_filter.1 hi).2]
-  rw [← this]
-  have hwβ‚€' : βˆ€ i ∈ t.filter fun i => z i β‰  x, 0 ≀ w i := fun i hi =>
-    hwβ‚€ _ <| Finset.filter_subset _ _ hi
-  obtain hw | hw := (Finset.sum_nonneg hwβ‚€').eq_or_gt
-  Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁ 
-    rw [hw₁, one_smul, Finset.sum_eq_zero, add_zero]
-    Β· exact subset_convexJoin_left hs.convex_hull (mem_singleton _)
-    simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw 
-    rintro i hi
-    rw [hw _ hi, zero_smul]
-  refine'
-    mem_convexJoin.2
-      ⟨x, mem_singleton _, (t.filter fun i => z i β‰  x).centerMass w z,
-        Finset.centerMass_mem_convexHull _ hwβ‚€' hw fun i hi => _,
-        βˆ‘ i in t.filter fun i => z i = x, w i, βˆ‘ i in t.filter fun i => z i β‰  x, w i,
-        Finset.sum_nonneg fun i hi => hwβ‚€ _ <| Finset.filter_subset _ _ hi, Finset.sum_nonneg hwβ‚€',
-        _, _⟩
-  Β· rw [Finset.mem_filter] at hi 
-    exact mem_of_mem_insert_of_ne (hz _ hi.1) hi.2
-  Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
-  Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
+    convexHull π•œ (insert x s) = convexJoin π•œ {x} (convexHull π•œ s) := by classical
 #align convex_hull_insert convexHull_insert
 -/
 
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: YaΓ«l Dillies
 -/
-import Mathbin.Analysis.Convex.Combination
+import Analysis.Convex.Combination
 
 #align_import analysis.convex.join from "leanprover-community/mathlib"@"9d2f0748e6c50d7a2657c564b1ff2c695b39148d"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module analysis.convex.join
-! leanprover-community/mathlib commit 9d2f0748e6c50d7a2657c564b1ff2c695b39148d
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Convex.Combination
 
+#align_import analysis.convex.join from "leanprover-community/mathlib"@"9d2f0748e6c50d7a2657c564b1ff2c695b39148d"
+
 /-!
 # Convex join
 
Diff
@@ -43,9 +43,11 @@ def convexJoin (s t : Set E) : Set E :=
 
 variable {π•œ}
 
+#print mem_convexJoin /-
 theorem mem_convexJoin : x ∈ convexJoin π•œ s t ↔ βˆƒ a ∈ s, βˆƒ b ∈ t, x ∈ segment π•œ a b := by
   simp [convexJoin]
 #align mem_convex_join mem_convexJoin
+-/
 
 #print convexJoin_comm /-
 theorem convexJoin_comm (s t : Set E) : convexJoin π•œ s t = convexJoin π•œ t s :=
@@ -103,17 +105,21 @@ theorem convexJoin_singletons (x : E) : convexJoin π•œ {x} {y} = segment π•œ x
 #align convex_join_singletons convexJoin_singletons
 -/
 
+#print convexJoin_union_left /-
 @[simp]
 theorem convexJoin_union_left (s₁ sβ‚‚ t : Set E) :
     convexJoin π•œ (s₁ βˆͺ sβ‚‚) t = convexJoin π•œ s₁ t βˆͺ convexJoin π•œ sβ‚‚ t := by
   simp_rw [convexJoin, mem_union, Union_or, Union_union_distrib]
 #align convex_join_union_left convexJoin_union_left
+-/
 
+#print convexJoin_union_right /-
 @[simp]
 theorem convexJoin_union_right (s t₁ tβ‚‚ : Set E) :
     convexJoin π•œ s (t₁ βˆͺ tβ‚‚) = convexJoin π•œ s t₁ βˆͺ convexJoin π•œ s tβ‚‚ := by
   simp_rw [convexJoin, mem_union, Union_or, Union_union_distrib]
 #align convex_join_union_right convexJoin_union_right
+-/
 
 #print convexJoin_iUnion_left /-
 @[simp]
@@ -157,11 +163,13 @@ theorem convexJoin_subset (hs : s βŠ† u) (ht : t βŠ† u) (hu : Convex π•œ u) : c
 #align convex_join_subset convexJoin_subset
 -/
 
+#print convexJoin_subset_convexHull /-
 theorem convexJoin_subset_convexHull (s t : Set E) : convexJoin π•œ s t βŠ† convexHull π•œ (s βˆͺ t) :=
   convexJoin_subset ((subset_union_left _ _).trans <| subset_convexHull _ _)
       ((subset_union_right _ _).trans <| subset_convexHull _ _) <|
     convex_convexHull _ _
 #align convex_join_subset_convex_hull convexJoin_subset_convexHull
+-/
 
 end OrderedSemiring
 
@@ -289,6 +297,7 @@ theorem convexJoin_singleton_segment (a b c : E) :
 #align convex_join_singleton_segment convexJoin_singleton_segment
 -/
 
+#print Convex.convexJoin /-
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) :=
   by
@@ -300,14 +309,18 @@ protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
   rw [convexJoin_segments, triv, ← convexJoin_segments]
   exact convexJoin_mono (hs hxa hya) (ht hxb hyb)
 #align convex.convex_join Convex.convexJoin
+-/
 
+#print Convex.convexHull_union /-
 protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ t) (hsβ‚€ : s.Nonempty)
     (htβ‚€ : t.Nonempty) : convexHull π•œ (s βˆͺ t) = convexJoin π•œ s t :=
   (convexHull_min (union_subset (subset_convexJoin_left htβ‚€) <| subset_convexJoin_right hsβ‚€) <|
         hs.convexJoin ht).antisymm <|
     convexJoin_subset_convexHull _ _
 #align convex.convex_hull_union Convex.convexHull_union
+-/
 
+#print convexHull_union /-
 theorem convexHull_union (hs : s.Nonempty) (ht : t.Nonempty) :
     convexHull π•œ (s βˆͺ t) = convexJoin π•œ (convexHull π•œ s) (convexHull π•œ t) :=
   by
@@ -315,6 +328,7 @@ theorem convexHull_union (hs : s.Nonempty) (ht : t.Nonempty) :
   exact
     (convex_convexHull π•œ s).convexHull_union (convex_convexHull π•œ t) hs.convex_hull ht.convex_hull
 #align convex_hull_union convexHull_union
+-/
 
 end LinearOrderedField
 
Diff
@@ -236,7 +236,7 @@ theorem convexHull_insert (hs : s.Nonempty) :
   rw [convexHull_eq] at hx 
   obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
   have :
-    ((βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i) =
+    (βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i =
       t.center_mass w z :=
     by
     rw [Finset.centerMass_eq_of_sum_1 _ _ hw₁, Finset.sum_smul]
Diff
@@ -228,42 +228,42 @@ theorem convexJoin_convexJoin_convexJoin_comm (s t u v : Set E) :
 theorem convexHull_insert (hs : s.Nonempty) :
     convexHull π•œ (insert x s) = convexJoin π•œ {x} (convexHull π•œ s) := by
   classical
-    refine'
-      (convexJoin_subset ((singleton_subset_iff.2 <| mem_insert _ _).trans <| subset_convexHull _ _)
-              (convexHull_mono <| subset_insert _ _) <|
-            convex_convexHull _ _).antisymm'
-        fun x hx => _
-    rw [convexHull_eq] at hx 
-    obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
-    have :
-      ((βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i) =
-        t.center_mass w z :=
-      by
-      rw [Finset.centerMass_eq_of_sum_1 _ _ hw₁, Finset.sum_smul]
-      convert Finset.sum_filter_add_sum_filter_not _ _ (w β€’ z) using 2
-      refine' Finset.sum_congr rfl fun i hi => _
-      rw [Pi.smul_apply', (Finset.mem_filter.1 hi).2]
-    rw [← this]
-    have hwβ‚€' : βˆ€ i ∈ t.filter fun i => z i β‰  x, 0 ≀ w i := fun i hi =>
-      hwβ‚€ _ <| Finset.filter_subset _ _ hi
-    obtain hw | hw := (Finset.sum_nonneg hwβ‚€').eq_or_gt
-    Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁ 
-      rw [hw₁, one_smul, Finset.sum_eq_zero, add_zero]
-      Β· exact subset_convexJoin_left hs.convex_hull (mem_singleton _)
-      simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw 
-      rintro i hi
-      rw [hw _ hi, zero_smul]
-    refine'
-      mem_convexJoin.2
-        ⟨x, mem_singleton _, (t.filter fun i => z i β‰  x).centerMass w z,
-          Finset.centerMass_mem_convexHull _ hwβ‚€' hw fun i hi => _,
-          βˆ‘ i in t.filter fun i => z i = x, w i, βˆ‘ i in t.filter fun i => z i β‰  x, w i,
-          Finset.sum_nonneg fun i hi => hwβ‚€ _ <| Finset.filter_subset _ _ hi,
-          Finset.sum_nonneg hwβ‚€', _, _⟩
-    Β· rw [Finset.mem_filter] at hi 
-      exact mem_of_mem_insert_of_ne (hz _ hi.1) hi.2
-    Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
-    Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
+  refine'
+    (convexJoin_subset ((singleton_subset_iff.2 <| mem_insert _ _).trans <| subset_convexHull _ _)
+            (convexHull_mono <| subset_insert _ _) <|
+          convex_convexHull _ _).antisymm'
+      fun x hx => _
+  rw [convexHull_eq] at hx 
+  obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
+  have :
+    ((βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i) =
+      t.center_mass w z :=
+    by
+    rw [Finset.centerMass_eq_of_sum_1 _ _ hw₁, Finset.sum_smul]
+    convert Finset.sum_filter_add_sum_filter_not _ _ (w β€’ z) using 2
+    refine' Finset.sum_congr rfl fun i hi => _
+    rw [Pi.smul_apply', (Finset.mem_filter.1 hi).2]
+  rw [← this]
+  have hwβ‚€' : βˆ€ i ∈ t.filter fun i => z i β‰  x, 0 ≀ w i := fun i hi =>
+    hwβ‚€ _ <| Finset.filter_subset _ _ hi
+  obtain hw | hw := (Finset.sum_nonneg hwβ‚€').eq_or_gt
+  Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁ 
+    rw [hw₁, one_smul, Finset.sum_eq_zero, add_zero]
+    Β· exact subset_convexJoin_left hs.convex_hull (mem_singleton _)
+    simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw 
+    rintro i hi
+    rw [hw _ hi, zero_smul]
+  refine'
+    mem_convexJoin.2
+      ⟨x, mem_singleton _, (t.filter fun i => z i β‰  x).centerMass w z,
+        Finset.centerMass_mem_convexHull _ hwβ‚€' hw fun i hi => _,
+        βˆ‘ i in t.filter fun i => z i = x, w i, βˆ‘ i in t.filter fun i => z i β‰  x, w i,
+        Finset.sum_nonneg fun i hi => hwβ‚€ _ <| Finset.filter_subset _ _ hi, Finset.sum_nonneg hwβ‚€',
+        _, _⟩
+  Β· rw [Finset.mem_filter] at hi 
+    exact mem_of_mem_insert_of_ne (hz _ hi.1) hi.2
+  Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
+  Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
 #align convex_hull_insert convexHull_insert
 -/
 
Diff
@@ -177,7 +177,7 @@ theorem convexJoin_assoc_aux (s t u : Set E) :
   rintro _ ⟨z, ⟨x, hx, y, hy, a₁, b₁, ha₁, hb₁, hab₁, rfl⟩, z, hz, aβ‚‚, bβ‚‚, haβ‚‚, hbβ‚‚, habβ‚‚, rfl⟩
   obtain rfl | hbβ‚‚ := hbβ‚‚.eq_or_lt
   Β· refine' ⟨x, hx, y, ⟨y, hy, z, hz, left_mem_segment _ _ _⟩, a₁, b₁, ha₁, hb₁, hab₁, _⟩
-    rw [add_zero] at habβ‚‚
+    rw [add_zero] at habβ‚‚ 
     rw [habβ‚‚, one_smul, zero_smul, add_zero]
   have haβ‚‚b₁ : 0 ≀ aβ‚‚ * b₁ := mul_nonneg haβ‚‚ hb₁
   have hab : 0 < aβ‚‚ * b₁ + bβ‚‚ := add_pos_of_nonneg_of_pos haβ‚‚b₁ hbβ‚‚
@@ -233,7 +233,7 @@ theorem convexHull_insert (hs : s.Nonempty) :
               (convexHull_mono <| subset_insert _ _) <|
             convex_convexHull _ _).antisymm'
         fun x hx => _
-    rw [convexHull_eq] at hx
+    rw [convexHull_eq] at hx 
     obtain ⟨ι, t, w, z, hwβ‚€, hw₁, hz, rfl⟩ := hx
     have :
       ((βˆ‘ i in t.filter fun i => z i = x, w i) β€’ x + βˆ‘ i in t.filter fun i => z i β‰  x, w i β€’ z i) =
@@ -247,10 +247,10 @@ theorem convexHull_insert (hs : s.Nonempty) :
     have hwβ‚€' : βˆ€ i ∈ t.filter fun i => z i β‰  x, 0 ≀ w i := fun i hi =>
       hwβ‚€ _ <| Finset.filter_subset _ _ hi
     obtain hw | hw := (Finset.sum_nonneg hwβ‚€').eq_or_gt
-    Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁
+    Β· rw [← Finset.sum_filter_add_sum_filter_not _ fun i => z i = x, hw, add_zero] at hw₁ 
       rw [hw₁, one_smul, Finset.sum_eq_zero, add_zero]
       Β· exact subset_convexJoin_left hs.convex_hull (mem_singleton _)
-      simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw
+      simp_rw [Finset.sum_eq_zero_iff_of_nonneg hwβ‚€'] at hw 
       rintro i hi
       rw [hw _ hi, zero_smul]
     refine'
@@ -260,7 +260,7 @@ theorem convexHull_insert (hs : s.Nonempty) :
           βˆ‘ i in t.filter fun i => z i = x, w i, βˆ‘ i in t.filter fun i => z i β‰  x, w i,
           Finset.sum_nonneg fun i hi => hwβ‚€ _ <| Finset.filter_subset _ _ hi,
           Finset.sum_nonneg hwβ‚€', _, _⟩
-    Β· rw [Finset.mem_filter] at hi
+    Β· rw [Finset.mem_filter] at hi 
       exact mem_of_mem_insert_of_ne (hz _ hi.1) hi.2
     Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
     Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
@@ -292,7 +292,7 @@ theorem convexJoin_singleton_segment (a b c : E) :
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) :=
   by
-  rw [convex_iff_segment_subset] at ht hs⊒
+  rw [convex_iff_segment_subset] at ht hs ⊒
   simp_rw [mem_convexJoin]
   rintro x ⟨xa, hxa, xb, hxb, hx⟩ y ⟨ya, hya, yb, hyb, hy⟩
   refine' (segment_subset_convexJoin hx hy).trans _
Diff
@@ -24,7 +24,7 @@ convex hulls of finite sets.
 
 open Set
 
-open BigOperators
+open scoped BigOperators
 
 variable {ΞΉ : Sort _} {π•œ E : Type _}
 
Diff
@@ -43,9 +43,6 @@ def convexJoin (s t : Set E) : Set E :=
 
 variable {π•œ}
 
-/- warning: mem_convex_join -> mem_convexJoin is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mem_convex_join mem_convexJoinβ‚“'. -/
 theorem mem_convexJoin : x ∈ convexJoin π•œ s t ↔ βˆƒ a ∈ s, βˆƒ b ∈ t, x ∈ segment π•œ a b := by
   simp [convexJoin]
 #align mem_convex_join mem_convexJoin
@@ -106,24 +103,12 @@ theorem convexJoin_singletons (x : E) : convexJoin π•œ {x} {y} = segment π•œ x
 #align convex_join_singletons convexJoin_singletons
 -/
 
-/- warning: convex_join_union_left -> convexJoin_union_left is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s₁ : Set.{u2} E) (sβ‚‚ : Set.{u2} E) (t : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s₁ sβ‚‚) t) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s₁ t) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 sβ‚‚ t))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s₁ : Set.{u2} E) (sβ‚‚ : Set.{u2} E) (t : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) s₁ sβ‚‚) t) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s₁ t) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 sβ‚‚ t))
-Case conversion may be inaccurate. Consider using '#align convex_join_union_left convexJoin_union_leftβ‚“'. -/
 @[simp]
 theorem convexJoin_union_left (s₁ sβ‚‚ t : Set E) :
     convexJoin π•œ (s₁ βˆͺ sβ‚‚) t = convexJoin π•œ s₁ t βˆͺ convexJoin π•œ sβ‚‚ t := by
   simp_rw [convexJoin, mem_union, Union_or, Union_union_distrib]
 #align convex_join_union_left convexJoin_union_left
 
-/- warning: convex_join_union_right -> convexJoin_union_right is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t₁ : Set.{u2} E) (tβ‚‚ : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) t₁ tβ‚‚)) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t₁) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s tβ‚‚))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t₁ : Set.{u2} E) (tβ‚‚ : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) t₁ tβ‚‚)) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t₁) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s tβ‚‚))
-Case conversion may be inaccurate. Consider using '#align convex_join_union_right convexJoin_union_rightβ‚“'. -/
 @[simp]
 theorem convexJoin_union_right (s t₁ tβ‚‚ : Set E) :
     convexJoin π•œ s (t₁ βˆͺ tβ‚‚) = convexJoin π•œ s t₁ βˆͺ convexJoin π•œ s tβ‚‚ := by
@@ -172,12 +157,6 @@ theorem convexJoin_subset (hs : s βŠ† u) (ht : t βŠ† u) (hu : Convex π•œ u) : c
 #align convex_join_subset convexJoin_subset
 -/
 
-/- warning: convex_join_subset_convex_hull -> convexJoin_subset_convexHull is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t : Set.{u2} E), HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s t))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t : Set.{u2} E), HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t) (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3)) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) s t))
-Case conversion may be inaccurate. Consider using '#align convex_join_subset_convex_hull convexJoin_subset_convexHullβ‚“'. -/
 theorem convexJoin_subset_convexHull (s t : Set E) : convexJoin π•œ s t βŠ† convexHull π•œ (s βˆͺ t) :=
   convexJoin_subset ((subset_union_left _ _).trans <| subset_convexHull _ _)
       ((subset_union_right _ _).trans <| subset_convexHull _ _) <|
@@ -310,9 +289,6 @@ theorem convexJoin_singleton_segment (a b c : E) :
 #align convex_join_singleton_segment convexJoin_singleton_segment
 -/
 
-/- warning: convex.convex_join -> Convex.convexJoin is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex.convex_join Convex.convexJoinβ‚“'. -/
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) :=
   by
@@ -325,9 +301,6 @@ protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
   exact convexJoin_mono (hs hxa hya) (ht hxb hyb)
 #align convex.convex_join Convex.convexJoin
 
-/- warning: convex.convex_hull_union -> Convex.convexHull_union is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex.convex_hull_union Convex.convexHull_unionβ‚“'. -/
 protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ t) (hsβ‚€ : s.Nonempty)
     (htβ‚€ : t.Nonempty) : convexHull π•œ (s βˆͺ t) = convexJoin π•œ s t :=
   (convexHull_min (union_subset (subset_convexJoin_left htβ‚€) <| subset_convexJoin_right hsβ‚€) <|
@@ -335,9 +308,6 @@ protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ
     convexJoin_subset_convexHull _ _
 #align convex.convex_hull_union Convex.convexHull_union
 
-/- warning: convex_hull_union -> convexHull_union is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex_hull_union convexHull_unionβ‚“'. -/
 theorem convexHull_union (hs : s.Nonempty) (ht : t.Nonempty) :
     convexHull π•œ (s βˆͺ t) = convexJoin π•œ (convexHull π•œ s) (convexHull π•œ t) :=
   by
Diff
@@ -133,10 +133,8 @@ theorem convexJoin_union_right (s t₁ tβ‚‚ : Set E) :
 #print convexJoin_iUnion_left /-
 @[simp]
 theorem convexJoin_iUnion_left (s : ΞΉ β†’ Set E) (t : Set E) :
-    convexJoin π•œ (⋃ i, s i) t = ⋃ i, convexJoin π•œ (s i) t :=
-  by
-  simp_rw [convexJoin, mem_Union, Union_exists]
-  exact Union_comm _
+    convexJoin π•œ (⋃ i, s i) t = ⋃ i, convexJoin π•œ (s i) t := by
+  simp_rw [convexJoin, mem_Union, Union_exists]; exact Union_comm _
 #align convex_join_Union_left convexJoin_iUnion_left
 -/
 
Diff
@@ -44,10 +44,7 @@ def convexJoin (s t : Set E) : Set E :=
 variable {π•œ}
 
 /- warning: mem_convex_join -> mem_convexJoin is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] {s : Set.{u2} E} {t : Set.{u2} E} {x : E}, Iff (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t)) (Exists.{succ u2} E (fun (a : E) => Exists.{0} (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) a s) (fun (H : Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) a s) => Exists.{succ u2} E (fun (b : E) => Exists.{0} (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) b t) (fun (H : Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) b t) => Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (segment.{u1, u2} π•œ E _inst_1 _inst_2 (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2))) (Module.toMulActionWithZero.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2 _inst_3)))) a b))))))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] {s : Set.{u2} E} {t : Set.{u2} E} {x : E}, Iff (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t)) (Exists.{succ u2} E (fun (a : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) a s) (Exists.{succ u2} E (fun (b : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) b t) (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (segment.{u1, u2} π•œ E _inst_1 _inst_2 (SMulZeroClass.toSMul.{u1, u2} π•œ E (AddMonoid.toZero.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} π•œ E (MonoidWithZero.toZero.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1))) (AddMonoid.toZero.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1)) (AddMonoid.toZero.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)) (Module.toMulActionWithZero.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2 _inst_3)))) a b))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align mem_convex_join mem_convexJoinβ‚“'. -/
 theorem mem_convexJoin : x ∈ convexJoin π•œ s t ↔ βˆƒ a ∈ s, βˆƒ b ∈ t, x ∈ segment π•œ a b := by
   simp [convexJoin]
@@ -316,10 +313,7 @@ theorem convexJoin_singleton_segment (a b c : E) :
 -/
 
 /- warning: convex.convex_join -> Convex.convexJoin is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) -> (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t) -> (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (convexJoin.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 s t))
-but is expected to have type
-  forall {π•œ : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π•œ] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {t : Set.{u1} E}, (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) -> (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) t) -> (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (convexJoin.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3 s t))
+<too large>
 Case conversion may be inaccurate. Consider using '#align convex.convex_join Convex.convexJoinβ‚“'. -/
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) :=
@@ -334,10 +328,7 @@ protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
 #align convex.convex_join Convex.convexJoin
 
 /- warning: convex.convex_hull_union -> Convex.convexHull_union is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) -> (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t) -> (Set.Nonempty.{u2} E s) -> (Set.Nonempty.{u2} E t) -> (Eq.{succ u2} (Set.{u2} E) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s t)) (convexJoin.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 s t))
-but is expected to have type
-  forall {π•œ : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π•œ] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {t : Set.{u1} E}, (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) -> (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) t) -> (Set.Nonempty.{u1} E s) -> (Set.Nonempty.{u1} E t) -> (Eq.{succ u1} (Set.{u1} E) (OrderHom.toFun.{u1, u1} (Set.{u1} E) (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E))))))) (ClosureOperator.toOrderHom.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E))))))) (convexHull.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)) (Union.union.{u1} (Set.{u1} E) (Set.instUnionSet.{u1} E) s t)) (convexJoin.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3 s t))
+<too large>
 Case conversion may be inaccurate. Consider using '#align convex.convex_hull_union Convex.convexHull_unionβ‚“'. -/
 protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ t) (hsβ‚€ : s.Nonempty)
     (htβ‚€ : t.Nonempty) : convexHull π•œ (s βˆͺ t) = convexJoin π•œ s t :=
@@ -347,10 +338,7 @@ protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ
 #align convex.convex_hull_union Convex.convexHull_union
 
 /- warning: convex_hull_union -> convexHull_union is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Set.Nonempty.{u2} E s) -> (Set.Nonempty.{u2} E t) -> (Eq.{succ u2} (Set.{u2} E) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s t)) (convexJoin.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) s) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) t)))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (StrictOrderedSemiring.toSemiring.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Set.Nonempty.{u2} E s) -> (Set.Nonempty.{u2} E t) -> (Eq.{succ u2} (Set.{u2} E) (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) s t)) (convexJoin.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)) s) (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)) t)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align convex_hull_union convexHull_unionβ‚“'. -/
 theorem convexHull_union (hs : s.Nonempty) (ht : t.Nonempty) :
     convexHull π•œ (s βˆͺ t) = convexJoin π•œ (convexHull π•œ s) (convexHull π•œ t) :=
Diff
@@ -55,13 +55,13 @@ theorem mem_convexJoin : x ∈ convexJoin π•œ s t ↔ βˆƒ a ∈ s, βˆƒ b ∈ t,
 
 #print convexJoin_comm /-
 theorem convexJoin_comm (s t : Set E) : convexJoin π•œ s t = convexJoin π•œ t s :=
-  (unionα΅’β‚‚_comm _).trans <| by simp_rw [convexJoin, segment_symm]
+  (iUnionβ‚‚_comm _).trans <| by simp_rw [convexJoin, segment_symm]
 #align convex_join_comm convexJoin_comm
 -/
 
 #print convexJoin_mono /-
 theorem convexJoin_mono (hs : s₁ βŠ† sβ‚‚) (ht : t₁ βŠ† tβ‚‚) : convexJoin π•œ s₁ t₁ βŠ† convexJoin π•œ sβ‚‚ tβ‚‚ :=
-  bunionα΅’_mono hs fun x hx => bunionα΅’_mono ht fun y hy => Subset.rfl
+  biUnion_mono hs fun x hx => biUnion_mono ht fun y hy => Subset.rfl
 #align convex_join_mono convexJoin_mono
 -/
 
@@ -133,27 +133,27 @@ theorem convexJoin_union_right (s t₁ tβ‚‚ : Set E) :
   simp_rw [convexJoin, mem_union, Union_or, Union_union_distrib]
 #align convex_join_union_right convexJoin_union_right
 
-#print convexJoin_unionα΅’_left /-
+#print convexJoin_iUnion_left /-
 @[simp]
-theorem convexJoin_unionα΅’_left (s : ΞΉ β†’ Set E) (t : Set E) :
+theorem convexJoin_iUnion_left (s : ΞΉ β†’ Set E) (t : Set E) :
     convexJoin π•œ (⋃ i, s i) t = ⋃ i, convexJoin π•œ (s i) t :=
   by
   simp_rw [convexJoin, mem_Union, Union_exists]
   exact Union_comm _
-#align convex_join_Union_left convexJoin_unionα΅’_left
+#align convex_join_Union_left convexJoin_iUnion_left
 -/
 
-#print convexJoin_unionα΅’_right /-
+#print convexJoin_iUnion_right /-
 @[simp]
-theorem convexJoin_unionα΅’_right (s : Set E) (t : ΞΉ β†’ Set E) :
+theorem convexJoin_iUnion_right (s : Set E) (t : ΞΉ β†’ Set E) :
     convexJoin π•œ s (⋃ i, t i) = ⋃ i, convexJoin π•œ s (t i) := by
-  simp_rw [convexJoin_comm s, convexJoin_unionα΅’_left]
-#align convex_join_Union_right convexJoin_unionα΅’_right
+  simp_rw [convexJoin_comm s, convexJoin_iUnion_left]
+#align convex_join_Union_right convexJoin_iUnion_right
 -/
 
 #print segment_subset_convexJoin /-
 theorem segment_subset_convexJoin (hx : x ∈ s) (hy : y ∈ t) : segment π•œ x y βŠ† convexJoin π•œ s t :=
-  (subset_unionα΅’β‚‚ y hy).trans (subset_unionα΅’β‚‚ x hx)
+  (subset_iUnionβ‚‚ y hy).trans (subset_iUnionβ‚‚ x hx)
 #align segment_subset_convex_join segment_subset_convexJoin
 -/
 
@@ -173,7 +173,7 @@ theorem subset_convexJoin_right (h : s.Nonempty) : t βŠ† convexJoin π•œ s t :=
 
 #print convexJoin_subset /-
 theorem convexJoin_subset (hs : s βŠ† u) (ht : t βŠ† u) (hu : Convex π•œ u) : convexJoin π•œ s t βŠ† u :=
-  unionα΅’β‚‚_subset fun x hx => unionα΅’β‚‚_subset fun y hy => hu.segment_subset (hs hx) (ht hy)
+  iUnionβ‚‚_subset fun x hx => iUnionβ‚‚_subset fun y hy => hu.segment_subset (hs hx) (ht hy)
 #align convex_join_subset convexJoin_subset
 -/
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: YaΓ«l Dillies
 
 ! This file was ported from Lean 3 source module analysis.convex.join
-! leanprover-community/mathlib commit 951bf1d9e98a2042979ced62c0620bcfb3587cf8
+! leanprover-community/mathlib commit 9d2f0748e6c50d7a2657c564b1ff2c695b39148d
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Analysis.Convex.Combination
 /-!
 # Convex join
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file defines the convex join of two sets. The convex join of `s` and `t` is the union of the
 segments with one end in `s` and the other in `t`. This is notably a useful gadget to deal with
 convex hulls of finite sets.
Diff
@@ -30,68 +30,107 @@ section OrderedSemiring
 variable (π•œ) [OrderedSemiring π•œ] [AddCommMonoid E] [Module π•œ E] {s t s₁ sβ‚‚ t₁ tβ‚‚ u : Set E}
   {x y : E}
 
+#print convexJoin /-
 /-- The join of two sets is the union of the segments joining them. This can be interpreted as the
 topological join, but within the original space. -/
 def convexJoin (s t : Set E) : Set E :=
   ⋃ (x ∈ s) (y ∈ t), segment π•œ x y
 #align convex_join convexJoin
+-/
 
 variable {π•œ}
 
+/- warning: mem_convex_join -> mem_convexJoin is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] {s : Set.{u2} E} {t : Set.{u2} E} {x : E}, Iff (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t)) (Exists.{succ u2} E (fun (a : E) => Exists.{0} (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) a s) (fun (H : Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) a s) => Exists.{succ u2} E (fun (b : E) => Exists.{0} (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) b t) (fun (H : Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) b t) => Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x (segment.{u1, u2} π•œ E _inst_1 _inst_2 (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2))) (Module.toMulActionWithZero.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2 _inst_3)))) a b))))))
+but is expected to have type
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] {s : Set.{u2} E} {t : Set.{u2} E} {x : E}, Iff (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t)) (Exists.{succ u2} E (fun (a : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) a s) (Exists.{succ u2} E (fun (b : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) b t) (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (segment.{u1, u2} π•œ E _inst_1 _inst_2 (SMulZeroClass.toSMul.{u1, u2} π•œ E (AddMonoid.toZero.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} π•œ E (MonoidWithZero.toZero.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1))) (AddMonoid.toZero.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ _inst_1)) (AddMonoid.toZero.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)) (Module.toMulActionWithZero.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2 _inst_3)))) a b))))))
+Case conversion may be inaccurate. Consider using '#align mem_convex_join mem_convexJoinβ‚“'. -/
 theorem mem_convexJoin : x ∈ convexJoin π•œ s t ↔ βˆƒ a ∈ s, βˆƒ b ∈ t, x ∈ segment π•œ a b := by
   simp [convexJoin]
 #align mem_convex_join mem_convexJoin
 
+#print convexJoin_comm /-
 theorem convexJoin_comm (s t : Set E) : convexJoin π•œ s t = convexJoin π•œ t s :=
   (unionα΅’β‚‚_comm _).trans <| by simp_rw [convexJoin, segment_symm]
 #align convex_join_comm convexJoin_comm
+-/
 
+#print convexJoin_mono /-
 theorem convexJoin_mono (hs : s₁ βŠ† sβ‚‚) (ht : t₁ βŠ† tβ‚‚) : convexJoin π•œ s₁ t₁ βŠ† convexJoin π•œ sβ‚‚ tβ‚‚ :=
   bunionα΅’_mono hs fun x hx => bunionα΅’_mono ht fun y hy => Subset.rfl
 #align convex_join_mono convexJoin_mono
+-/
 
+#print convexJoin_mono_left /-
 theorem convexJoin_mono_left (hs : s₁ βŠ† sβ‚‚) : convexJoin π•œ s₁ t βŠ† convexJoin π•œ sβ‚‚ t :=
   convexJoin_mono hs Subset.rfl
 #align convex_join_mono_left convexJoin_mono_left
+-/
 
+#print convexJoin_mono_right /-
 theorem convexJoin_mono_right (ht : t₁ βŠ† tβ‚‚) : convexJoin π•œ s t₁ βŠ† convexJoin π•œ s tβ‚‚ :=
   convexJoin_mono Subset.rfl ht
 #align convex_join_mono_right convexJoin_mono_right
+-/
 
+#print convexJoin_empty_left /-
 @[simp]
 theorem convexJoin_empty_left (t : Set E) : convexJoin π•œ βˆ… t = βˆ… := by simp [convexJoin]
 #align convex_join_empty_left convexJoin_empty_left
+-/
 
+#print convexJoin_empty_right /-
 @[simp]
 theorem convexJoin_empty_right (s : Set E) : convexJoin π•œ s βˆ… = βˆ… := by simp [convexJoin]
 #align convex_join_empty_right convexJoin_empty_right
+-/
 
+#print convexJoin_singleton_left /-
 @[simp]
 theorem convexJoin_singleton_left (t : Set E) (x : E) :
     convexJoin π•œ {x} t = ⋃ y ∈ t, segment π•œ x y := by simp [convexJoin]
 #align convex_join_singleton_left convexJoin_singleton_left
+-/
 
+#print convexJoin_singleton_right /-
 @[simp]
 theorem convexJoin_singleton_right (s : Set E) (y : E) :
     convexJoin π•œ s {y} = ⋃ x ∈ s, segment π•œ x y := by simp [convexJoin]
 #align convex_join_singleton_right convexJoin_singleton_right
+-/
 
+#print convexJoin_singletons /-
 @[simp]
 theorem convexJoin_singletons (x : E) : convexJoin π•œ {x} {y} = segment π•œ x y := by simp [convexJoin]
 #align convex_join_singletons convexJoin_singletons
+-/
 
+/- warning: convex_join_union_left -> convexJoin_union_left is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s₁ : Set.{u2} E) (sβ‚‚ : Set.{u2} E) (t : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s₁ sβ‚‚) t) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s₁ t) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 sβ‚‚ t))
+but is expected to have type
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s₁ : Set.{u2} E) (sβ‚‚ : Set.{u2} E) (t : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) s₁ sβ‚‚) t) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s₁ t) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 sβ‚‚ t))
+Case conversion may be inaccurate. Consider using '#align convex_join_union_left convexJoin_union_leftβ‚“'. -/
 @[simp]
 theorem convexJoin_union_left (s₁ sβ‚‚ t : Set E) :
     convexJoin π•œ (s₁ βˆͺ sβ‚‚) t = convexJoin π•œ s₁ t βˆͺ convexJoin π•œ sβ‚‚ t := by
   simp_rw [convexJoin, mem_union, Union_or, Union_union_distrib]
 #align convex_join_union_left convexJoin_union_left
 
+/- warning: convex_join_union_right -> convexJoin_union_right is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t₁ : Set.{u2} E) (tβ‚‚ : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) t₁ tβ‚‚)) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t₁) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s tβ‚‚))
+but is expected to have type
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t₁ : Set.{u2} E) (tβ‚‚ : Set.{u2} E), Eq.{succ u2} (Set.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) t₁ tβ‚‚)) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t₁) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s tβ‚‚))
+Case conversion may be inaccurate. Consider using '#align convex_join_union_right convexJoin_union_rightβ‚“'. -/
 @[simp]
 theorem convexJoin_union_right (s t₁ tβ‚‚ : Set E) :
     convexJoin π•œ s (t₁ βˆͺ tβ‚‚) = convexJoin π•œ s t₁ βˆͺ convexJoin π•œ s tβ‚‚ := by
   simp_rw [convexJoin, mem_union, Union_or, Union_union_distrib]
 #align convex_join_union_right convexJoin_union_right
 
+#print convexJoin_unionα΅’_left /-
 @[simp]
 theorem convexJoin_unionα΅’_left (s : ΞΉ β†’ Set E) (t : Set E) :
     convexJoin π•œ (⋃ i, s i) t = ⋃ i, convexJoin π•œ (s i) t :=
@@ -99,31 +138,48 @@ theorem convexJoin_unionα΅’_left (s : ΞΉ β†’ Set E) (t : Set E) :
   simp_rw [convexJoin, mem_Union, Union_exists]
   exact Union_comm _
 #align convex_join_Union_left convexJoin_unionα΅’_left
+-/
 
+#print convexJoin_unionα΅’_right /-
 @[simp]
 theorem convexJoin_unionα΅’_right (s : Set E) (t : ΞΉ β†’ Set E) :
     convexJoin π•œ s (⋃ i, t i) = ⋃ i, convexJoin π•œ s (t i) := by
   simp_rw [convexJoin_comm s, convexJoin_unionα΅’_left]
 #align convex_join_Union_right convexJoin_unionα΅’_right
+-/
 
+#print segment_subset_convexJoin /-
 theorem segment_subset_convexJoin (hx : x ∈ s) (hy : y ∈ t) : segment π•œ x y βŠ† convexJoin π•œ s t :=
   (subset_unionα΅’β‚‚ y hy).trans (subset_unionα΅’β‚‚ x hx)
 #align segment_subset_convex_join segment_subset_convexJoin
+-/
 
+#print subset_convexJoin_left /-
 theorem subset_convexJoin_left (h : t.Nonempty) : s βŠ† convexJoin π•œ s t := fun x hx =>
   let ⟨y, hy⟩ := h
   segment_subset_convexJoin hx hy <| left_mem_segment _ _ _
 #align subset_convex_join_left subset_convexJoin_left
+-/
 
+#print subset_convexJoin_right /-
 theorem subset_convexJoin_right (h : s.Nonempty) : t βŠ† convexJoin π•œ s t := fun y hy =>
   let ⟨x, hx⟩ := h
   segment_subset_convexJoin hx hy <| right_mem_segment _ _ _
 #align subset_convex_join_right subset_convexJoin_right
+-/
 
+#print convexJoin_subset /-
 theorem convexJoin_subset (hs : s βŠ† u) (ht : t βŠ† u) (hu : Convex π•œ u) : convexJoin π•œ s t βŠ† u :=
   unionα΅’β‚‚_subset fun x hx => unionα΅’β‚‚_subset fun y hy => hu.segment_subset (hs hx) (ht hy)
 #align convex_join_subset convexJoin_subset
+-/
 
+/- warning: convex_join_subset_convex_hull -> convexJoin_subset_convexHull is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t : Set.{u2} E), HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s t))
+but is expected to have type
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π•œ] [_inst_2 : AddCommMonoid.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (OrderedSemiring.toSemiring.{u1} π•œ _inst_1) _inst_2] (s : Set.{u2} E) (t : Set.{u2} E), HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (convexJoin.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3 s t) (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E _inst_1 _inst_2 _inst_3)) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) s t))
+Case conversion may be inaccurate. Consider using '#align convex_join_subset_convex_hull convexJoin_subset_convexHullβ‚“'. -/
 theorem convexJoin_subset_convexHull (s t : Set E) : convexJoin π•œ s t βŠ† convexHull π•œ (s βˆͺ t) :=
   convexJoin_subset ((subset_union_left _ _).trans <| subset_convexHull _ _)
       ((subset_union_right _ _).trans <| subset_convexHull _ _) <|
@@ -136,6 +192,7 @@ section LinearOrderedField
 
 variable [LinearOrderedField π•œ] [AddCommGroup E] [Module π•œ E] {s t u : Set E} {x y : E}
 
+#print convexJoin_assoc_aux /-
 theorem convexJoin_assoc_aux (s t u : Set E) :
     convexJoin π•œ (convexJoin π•œ s t) u βŠ† convexJoin π•œ s (convexJoin π•œ t u) :=
   by
@@ -156,7 +213,9 @@ theorem convexJoin_assoc_aux (s t u : Set E) :
   Β· rw [← add_assoc, ← mul_add, hab₁, mul_one, habβ‚‚]
   Β· simp_rw [smul_add, ← mul_smul, mul_div_cancel' _ hab.ne', add_assoc]
 #align convex_join_assoc_aux convexJoin_assoc_aux
+-/
 
+#print convexJoin_assoc /-
 theorem convexJoin_assoc (s t u : Set E) :
     convexJoin π•œ (convexJoin π•œ s t) u = convexJoin π•œ s (convexJoin π•œ t u) :=
   by
@@ -164,23 +223,31 @@ theorem convexJoin_assoc (s t u : Set E) :
   simp_rw [convexJoin_comm s, convexJoin_comm _ u]
   exact convexJoin_assoc_aux _ _ _
 #align convex_join_assoc convexJoin_assoc
+-/
 
+#print convexJoin_left_comm /-
 theorem convexJoin_left_comm (s t u : Set E) :
     convexJoin π•œ s (convexJoin π•œ t u) = convexJoin π•œ t (convexJoin π•œ s u) := by
   simp_rw [← convexJoin_assoc, convexJoin_comm]
 #align convex_join_left_comm convexJoin_left_comm
+-/
 
+#print convexJoin_right_comm /-
 theorem convexJoin_right_comm (s t u : Set E) :
     convexJoin π•œ (convexJoin π•œ s t) u = convexJoin π•œ (convexJoin π•œ s u) t := by
   simp_rw [convexJoin_assoc, convexJoin_comm]
 #align convex_join_right_comm convexJoin_right_comm
+-/
 
+#print convexJoin_convexJoin_convexJoin_comm /-
 theorem convexJoin_convexJoin_convexJoin_comm (s t u v : Set E) :
     convexJoin π•œ (convexJoin π•œ s t) (convexJoin π•œ u v) =
       convexJoin π•œ (convexJoin π•œ s u) (convexJoin π•œ t v) :=
   by simp_rw [← convexJoin_assoc, convexJoin_right_comm]
 #align convex_join_convex_join_convex_join_comm convexJoin_convexJoin_convexJoin_comm
+-/
 
+#print convexHull_insert /-
 theorem convexHull_insert (hs : s.Nonempty) :
     convexHull π•œ (insert x s) = convexJoin π•œ {x} (convexHull π•œ s) := by
   classical
@@ -221,23 +288,36 @@ theorem convexHull_insert (hs : s.Nonempty) :
     Β· rw [Finset.sum_filter_add_sum_filter_not, hw₁]
     Β· rw [Finset.centerMass, smul_inv_smulβ‚€ hw.ne', Finset.sum_smul]
 #align convex_hull_insert convexHull_insert
+-/
 
+#print convexJoin_segments /-
 theorem convexJoin_segments (a b c d : E) :
     convexJoin π•œ (segment π•œ a b) (segment π•œ c d) = convexHull π•œ {a, b, c, d} := by
   simp only [convexHull_insert, insert_nonempty, singleton_nonempty, convexHull_pair, ←
     convexJoin_assoc, convexJoin_singletons]
 #align convex_join_segments convexJoin_segments
+-/
 
+#print convexJoin_segment_singleton /-
 theorem convexJoin_segment_singleton (a b c : E) :
     convexJoin π•œ (segment π•œ a b) {c} = convexHull π•œ {a, b, c} := by
   rw [← pair_eq_singleton, ← convexJoin_segments, segment_same, pair_eq_singleton]
 #align convex_join_segment_singleton convexJoin_segment_singleton
+-/
 
+#print convexJoin_singleton_segment /-
 theorem convexJoin_singleton_segment (a b c : E) :
     convexJoin π•œ {a} (segment π•œ b c) = convexHull π•œ {a, b, c} := by
   rw [← segment_same π•œ, convexJoin_segments, insert_idem]
 #align convex_join_singleton_segment convexJoin_singleton_segment
+-/
 
+/- warning: convex.convex_join -> Convex.convexJoin is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) -> (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t) -> (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (convexJoin.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 s t))
+but is expected to have type
+  forall {π•œ : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π•œ] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {t : Set.{u1} E}, (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) -> (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) t) -> (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (convexJoin.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3 s t))
+Case conversion may be inaccurate. Consider using '#align convex.convex_join Convex.convexJoinβ‚“'. -/
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) :=
   by
@@ -250,6 +330,12 @@ protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
   exact convexJoin_mono (hs hxa hya) (ht hxb hyb)
 #align convex.convex_join Convex.convexJoin
 
+/- warning: convex.convex_hull_union -> Convex.convexHull_union is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) -> (Convex.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π•œ E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π•œ E (MulZeroClass.toHasZero.{u1} π•œ (MulZeroOneClass.toMulZeroClass.{u1} π•œ (MonoidWithZero.toMulZeroOneClass.{u1} π•œ (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π•œ E (Semiring.toMonoidWithZero.{u1} π•œ (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t) -> (Set.Nonempty.{u2} E s) -> (Set.Nonempty.{u2} E t) -> (Eq.{succ u2} (Set.{u2} E) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s t)) (convexJoin.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 s t))
+but is expected to have type
+  forall {π•œ : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π•œ] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {t : Set.{u1} E}, (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) -> (Convex.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π•œ E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π•œ E (CommMonoidWithZero.toZero.{u2} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u2} π•œ (Semifield.toCommGroupWithZero.{u2} π•œ (LinearOrderedSemifield.toSemifield.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π•œ E (Semiring.toMonoidWithZero.{u2} π•œ (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π•œ E (StrictOrderedSemiring.toSemiring.{u2} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) t) -> (Set.Nonempty.{u1} E s) -> (Set.Nonempty.{u1} E t) -> (Eq.{succ u1} (Set.{u1} E) (OrderHom.toFun.{u1, u1} (Set.{u1} E) (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E))))))) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E))))))) (ClosureOperator.toOrderHom.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E))))))) (convexHull.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)) (Union.union.{u1} (Set.{u1} E) (Set.instUnionSet.{u1} E) s t)) (convexJoin.{u2, u1} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u2} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u2} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3 s t))
+Case conversion may be inaccurate. Consider using '#align convex.convex_hull_union Convex.convexHull_unionβ‚“'. -/
 protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ t) (hsβ‚€ : s.Nonempty)
     (htβ‚€ : t.Nonempty) : convexHull π•œ (s βˆͺ t) = convexJoin π•œ s t :=
   (convexHull_min (union_subset (subset_convexJoin_left htβ‚€) <| subset_convexJoin_right hsβ‚€) <|
@@ -257,6 +343,12 @@ protected theorem Convex.convexHull_union (hs : Convex π•œ s) (ht : Convex π•œ
     convexJoin_subset_convexHull _ _
 #align convex.convex_hull_union Convex.convexHull_union
 
+/- warning: convex_hull_union -> convexHull_union is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (Ring.toSemiring.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Set.Nonempty.{u2} E s) -> (Set.Nonempty.{u2} E t) -> (Eq.{succ u2} (Set.{u2} E) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) (Union.union.{u2} (Set.{u2} E) (Set.hasUnion.{u2} E) s t)) (convexJoin.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) s) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π•œ E (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) t)))
+but is expected to have type
+  forall {π•œ : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π•œ E (StrictOrderedSemiring.toSemiring.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Set.Nonempty.{u2} E s) -> (Set.Nonempty.{u2} E t) -> (Eq.{succ u2} (Set.{u2} E) (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)) (Union.union.{u2} (Set.{u2} E) (Set.instUnionSet.{u2} E) s t)) (convexJoin.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3 (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)) s) (OrderHom.toFun.{u2, u2} (Set.{u2} E) (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (ClosureOperator.toOrderHom.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.instCompleteBooleanAlgebraSet.{u2} E))))))) (convexHull.{u1, u2} π•œ E (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)) t)))
+Case conversion may be inaccurate. Consider using '#align convex_hull_union convexHull_unionβ‚“'. -/
 theorem convexHull_union (hs : s.Nonempty) (ht : t.Nonempty) :
     convexHull π•œ (s βˆͺ t) = convexJoin π•œ (convexHull π•œ s) (convexHull π•œ t) :=
   by

Changes in mathlib4

mathlib3
mathlib4
chore: remove some unnecessary 'open BigOperators' (#11880)

Could we have an open linter, that checked for unused opened namespaces?

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -18,8 +18,6 @@ convex hulls of finite sets.
 
 open Set
 
-open BigOperators
-
 variable {ΞΉ : Sort*} {π•œ E : Type*}
 
 section OrderedSemiring
chore: Rename mul-div cancellation lemmas (#11530)

Lemma names around cancellation of multiplication and division are a mess.

This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero lemma name, the Group lemma, the AddGroup lemma name).

| Statement | New name | Old name | |

Diff
@@ -148,7 +148,7 @@ theorem convexJoin_assoc_aux (s t u : Set E) :
   Β· exact div_nonneg hbβ‚‚.le hab.le
   Β· rw [← add_div, div_self hab.ne']
   Β· rw [← add_assoc, ← mul_add, hab₁, mul_one, habβ‚‚]
-  Β· simp_rw [smul_add, ← mul_smul, mul_div_cancel' _ hab.ne', add_assoc]
+  Β· simp_rw [smul_add, ← mul_smul, mul_div_cancelβ‚€ _ hab.ne', add_assoc]
 #align convex_join_assoc_aux convexJoin_assoc_aux
 
 theorem convexJoin_assoc (s t u : Set E) :
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -174,7 +174,7 @@ theorem convexJoin_convexJoin_convexJoin_comm (s t u v : Set E) :
   by simp_rw [← convexJoin_assoc, convexJoin_right_comm]
 #align convex_join_convex_join_convex_join_comm convexJoin_convexJoin_convexJoin_comm
 
--- porting note: moved 3 lemmas from below to golf
+-- Porting note: moved 3 lemmas from below to golf
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) := by
   simp only [Convex, StarConvex, convexJoin, mem_iUnion]
@@ -223,6 +223,6 @@ theorem convexJoin_singleton_segment (a b c : E) :
   rw [← segment_same π•œ, convexJoin_segments, insert_idem]
 #align convex_join_singleton_segment convexJoin_singleton_segment
 
--- porting note: moved 3 lemmas up to golf
+-- Porting note: moved 3 lemmas up to golf
 
 end LinearOrderedField
chore: classify simp can do this porting notes (#10619)

Classify by adding issue number (#10618) to porting notes claiming anything semantically equivalent to simp can prove this or simp can simplify this.

Diff
@@ -73,7 +73,7 @@ theorem convexJoin_singleton_right (s : Set E) (y : E) :
     convexJoin π•œ s {y} = ⋃ x ∈ s, segment π•œ x y := by simp [convexJoin]
 #align convex_join_singleton_right convexJoin_singleton_right
 
--- porting note: simp can prove it
+-- Porting note (#10618): simp can prove it
 theorem convexJoin_singletons (x : E) : convexJoin π•œ {x} {y} = segment π•œ x y := by simp
 #align convex_join_singletons convexJoin_singletons
 
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: YaΓ«l Dillies
 -/
-import Mathlib.Analysis.Convex.Combination
+import Mathlib.Analysis.Convex.Hull
 
 #align_import analysis.convex.join from "leanprover-community/mathlib"@"951bf1d9e98a2042979ced62c0620bcfb3587cf8"
 
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -20,7 +20,7 @@ open Set
 
 open BigOperators
 
-variable {ΞΉ : Sort _} {π•œ E : Type _}
+variable {ΞΉ : Sort*} {π•œ E : Type*}
 
 section OrderedSemiring
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module analysis.convex.join
-! leanprover-community/mathlib commit 951bf1d9e98a2042979ced62c0620bcfb3587cf8
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.Convex.Combination
 
+#align_import analysis.convex.join from "leanprover-community/mathlib"@"951bf1d9e98a2042979ced62c0620bcfb3587cf8"
+
 /-!
 # Convex join
 
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supβ‚› β†’ sSup
  • infβ‚› β†’ sInf
  • supα΅’ β†’ iSup
  • infα΅’ β†’ iInf
  • bsupβ‚› β†’ bsSup
  • binfβ‚› β†’ bsInf
  • bsupα΅’ β†’ biSup
  • binfα΅’ β†’ biInf
  • csupβ‚› β†’ csSup
  • cinfβ‚› β†’ csInf
  • csupα΅’ β†’ ciSup
  • cinfα΅’ β†’ ciInf
  • unionβ‚› β†’ sUnion
  • interβ‚› β†’ sInter
  • unionα΅’ β†’ iUnion
  • interα΅’ β†’ iInter
  • bunionβ‚› β†’ bsUnion
  • binterβ‚› β†’ bsInter
  • bunionα΅’ β†’ biUnion
  • binterα΅’ β†’ biInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -43,11 +43,11 @@ theorem mem_convexJoin : x ∈ convexJoin π•œ s t ↔ βˆƒ a ∈ s, βˆƒ b ∈ t,
 #align mem_convex_join mem_convexJoin
 
 theorem convexJoin_comm (s t : Set E) : convexJoin π•œ s t = convexJoin π•œ t s :=
-  (unionα΅’β‚‚_comm _).trans <| by simp_rw [convexJoin, segment_symm]
+  (iUnionβ‚‚_comm _).trans <| by simp_rw [convexJoin, segment_symm]
 #align convex_join_comm convexJoin_comm
 
 theorem convexJoin_mono (hs : s₁ βŠ† sβ‚‚) (ht : t₁ βŠ† tβ‚‚) : convexJoin π•œ s₁ t₁ βŠ† convexJoin π•œ sβ‚‚ tβ‚‚ :=
-  bunionα΅’_mono hs fun _ _ => bunionα΅’_subset_bunionα΅’_left ht
+  biUnion_mono hs fun _ _ => biUnion_subset_biUnion_left ht
 #align convex_join_mono convexJoin_mono
 
 theorem convexJoin_mono_left (hs : s₁ βŠ† sβ‚‚) : convexJoin π•œ s₁ t βŠ† convexJoin π•œ sβ‚‚ t :=
@@ -83,7 +83,7 @@ theorem convexJoin_singletons (x : E) : convexJoin π•œ {x} {y} = segment π•œ x
 @[simp]
 theorem convexJoin_union_left (s₁ sβ‚‚ t : Set E) :
     convexJoin π•œ (s₁ βˆͺ sβ‚‚) t = convexJoin π•œ s₁ t βˆͺ convexJoin π•œ sβ‚‚ t := by
-  simp_rw [convexJoin, mem_union, unionα΅’_or, unionα΅’_union_distrib]
+  simp_rw [convexJoin, mem_union, iUnion_or, iUnion_union_distrib]
 #align convex_join_union_left convexJoin_union_left
 
 @[simp]
@@ -93,20 +93,20 @@ theorem convexJoin_union_right (s t₁ tβ‚‚ : Set E) :
 #align convex_join_union_right convexJoin_union_right
 
 @[simp]
-theorem convexJoin_unionα΅’_left (s : ΞΉ β†’ Set E) (t : Set E) :
+theorem convexJoin_iUnion_left (s : ΞΉ β†’ Set E) (t : Set E) :
     convexJoin π•œ (⋃ i, s i) t = ⋃ i, convexJoin π•œ (s i) t := by
-  simp_rw [convexJoin, mem_unionα΅’, unionα΅’_exists]
-  exact unionα΅’_comm _
-#align convex_join_Union_left convexJoin_unionα΅’_left
+  simp_rw [convexJoin, mem_iUnion, iUnion_exists]
+  exact iUnion_comm _
+#align convex_join_Union_left convexJoin_iUnion_left
 
 @[simp]
-theorem convexJoin_unionα΅’_right (s : Set E) (t : ΞΉ β†’ Set E) :
+theorem convexJoin_iUnion_right (s : Set E) (t : ΞΉ β†’ Set E) :
     convexJoin π•œ s (⋃ i, t i) = ⋃ i, convexJoin π•œ s (t i) := by
-  simp_rw [convexJoin_comm s, convexJoin_unionα΅’_left]
-#align convex_join_Union_right convexJoin_unionα΅’_right
+  simp_rw [convexJoin_comm s, convexJoin_iUnion_left]
+#align convex_join_Union_right convexJoin_iUnion_right
 
 theorem segment_subset_convexJoin (hx : x ∈ s) (hy : y ∈ t) : segment π•œ x y βŠ† convexJoin π•œ s t :=
-  subset_unionα΅’β‚‚_of_subset x hx <| subset_unionα΅’β‚‚ (s := fun y _ ↦ segment π•œ x y) y hy
+  subset_iUnionβ‚‚_of_subset x hx <| subset_iUnionβ‚‚ (s := fun y _ ↦ segment π•œ x y) y hy
 #align segment_subset_convex_join segment_subset_convexJoin
 
 theorem subset_convexJoin_left (h : t.Nonempty) : s βŠ† convexJoin π•œ s t := fun _x hx =>
@@ -119,7 +119,7 @@ theorem subset_convexJoin_right (h : s.Nonempty) : t βŠ† convexJoin π•œ s t :=
 #align subset_convex_join_right subset_convexJoin_right
 
 theorem convexJoin_subset (hs : s βŠ† u) (ht : t βŠ† u) (hu : Convex π•œ u) : convexJoin π•œ s t βŠ† u :=
-  unionα΅’β‚‚_subset fun _x hx => unionα΅’β‚‚_subset fun _y hy => hu.segment_subset (hs hx) (ht hy)
+  iUnionβ‚‚_subset fun _x hx => iUnionβ‚‚_subset fun _y hy => hu.segment_subset (hs hx) (ht hy)
 #align convex_join_subset convexJoin_subset
 
 theorem convexJoin_subset_convexHull (s t : Set E) : convexJoin π•œ s t βŠ† convexHull π•œ (s βˆͺ t) :=
@@ -180,7 +180,7 @@ theorem convexJoin_convexJoin_convexJoin_comm (s t u v : Set E) :
 -- porting note: moved 3 lemmas from below to golf
 protected theorem Convex.convexJoin (hs : Convex π•œ s) (ht : Convex π•œ t) :
     Convex π•œ (convexJoin π•œ s t) := by
-  simp only [Convex, StarConvex, convexJoin, mem_unionα΅’]
+  simp only [Convex, StarConvex, convexJoin, mem_iUnion]
   rintro _ ⟨x₁, hx₁, y₁, hy₁, a₁, b₁, ha₁, hb₁, hab₁, rfl⟩
     _ ⟨xβ‚‚, hxβ‚‚, yβ‚‚, hyβ‚‚, aβ‚‚, bβ‚‚, haβ‚‚, hbβ‚‚, habβ‚‚, rfl⟩ p q hp hq hpq
   rcases hs.exists_mem_add_smul_eq hx₁ hxβ‚‚ (mul_nonneg hp ha₁) (mul_nonneg hq haβ‚‚) with ⟨x, hxs, hx⟩
Diff
@@ -212,7 +212,7 @@ theorem convexHull_insert (hs : s.Nonempty) :
 theorem convexJoin_segments (a b c d : E) :
     convexJoin π•œ (segment π•œ a b) (segment π•œ c d) = convexHull π•œ {a, b, c, d} := by
   simp_rw [← convexHull_pair, convexHull_insert (insert_nonempty _ _),
-    convexHull_insert (singleton_nonempty _), convexJoin_singletons, convexJoin_assoc,
+    convexHull_insert (singleton_nonempty _), convexJoin_assoc,
     convexHull_singleton]
 #align convex_join_segments convexJoin_segments
 
@@ -229,4 +229,3 @@ theorem convexJoin_singleton_segment (a b c : E) :
 -- porting note: moved 3 lemmas up to golf
 
 end LinearOrderedField
-
feat: port Analysis.Convex.Join (#3633)

Dependencies 9 + 445

446 files ported (98.0%)
186044 lines ported (98.2%)
Show graph

The unported dependencies are