analysis.convex.caratheodory
β·
Mathlib.Analysis.Convex.Caratheodory
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -70,7 +70,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
apply s.exists_min_image fun z => f z / g z
obtain β¨x, hx, hgxβ© : β x β t, 0 < g x := gpos
exact β¨x, mem_filter.mpr β¨hx, hgxβ©β©
- have hg : 0 < g iβ := by rw [mem_filter] at mem ; exact mem.2
+ have hg : 0 < g iβ := by rw [mem_filter] at mem; exact mem.2
have hiβ : iβ β t := filter_subset _ _ mem
let k : E β π := fun z => f z - f iβ / g iβ * g z
have hk : k iβ = 0 := by field_simp [k, ne_of_gt hg]
@@ -84,7 +84,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
intro e heiβ het
by_cases hes : e β s
- Β· have hge : 0 < g e := by rw [mem_filter] at hes ; exact hes.2
+ Β· have hge : 0 < g e := by rw [mem_filter] at hes; exact hes.2
rw [β le_div_iff hge]
exact w _ hes
Β· calc
@@ -161,7 +161,7 @@ theorem affineIndependent_minCardFinsetOfMemConvexHull :
(Set.Subset.trans (Finset.erase_subset (βp) (min_card_finset_of_mem_convex_hull hx))
(min_card_finset_of_mem_convex_hull_subseteq hx))
hp
- rw [β not_lt] at contra
+ rw [β not_lt] at contra
apply contra
erw [card_erase_of_mem p.2, hk]
exact lt_add_one _
@@ -198,10 +198,10 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
β (z : ΞΉ β E) (w : ΞΉ β π) (hss : Set.range z β s) (hai : AffineIndependent π z) (hw :
β i, 0 < w i), β i, w i = 1 β§ β i, w i β’ z i = x :=
by
- rw [convexHull_eq_union] at hx
- simp only [exists_prop, Set.mem_iUnion] at hx
+ rw [convexHull_eq_union] at hx
+ simp only [exists_prop, Set.mem_iUnion] at hx
obtain β¨t, htβ, htβ, htββ© := hx
- simp only [t.convex_hull_eq, exists_prop, Set.mem_setOf_eq] at htβ
+ simp only [t.convex_hull_eq, exists_prop, Set.mem_setOf_eq] at htβ
obtain β¨w, hwβ, hwβ, hwββ© := htβ
let t' := t.filter fun i => w i β 0
refine' β¨t', t'.fintype_coe_sort, (coe : t' β E), w β (coe : t' β E), _, _, _, _, _β©
@@ -213,7 +213,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
Β· erw [Finset.sum_attach, Finset.sum_filter_ne_zero, hwβ]
Β· change β i : t' in t'.attach, (fun e => w e β’ e) βi = x
erw [Finset.sum_attach, Finset.sum_filter_of_ne]
- Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ ; exact hwβ
+ Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ; exact hwβ
Β· intro e he hwe contra; apply hwe; rw [contra, zero_smul]
#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHull
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -154,6 +154,17 @@ theorem affineIndependent_minCardFinsetOfMemConvexHull :
(Nat.succ_pred_eq_of_pos
(finset.card_pos.mpr (min_card_finset_of_mem_convex_hull_nonempty hx))).symm
classical
+ by_contra
+ obtain β¨p, hpβ© := mem_convex_hull_erase h (mem_min_card_finset_of_mem_convex_hull hx)
+ have contra :=
+ min_card_finset_of_mem_convex_hull_card_le_card hx
+ (Set.Subset.trans (Finset.erase_subset (βp) (min_card_finset_of_mem_convex_hull hx))
+ (min_card_finset_of_mem_convex_hull_subseteq hx))
+ hp
+ rw [β not_lt] at contra
+ apply contra
+ erw [card_erase_of_mem p.2, hk]
+ exact lt_add_one _
#align caratheodory.affine_independent_min_card_finset_of_mem_convex_hull Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -154,17 +154,6 @@ theorem affineIndependent_minCardFinsetOfMemConvexHull :
(Nat.succ_pred_eq_of_pos
(finset.card_pos.mpr (min_card_finset_of_mem_convex_hull_nonempty hx))).symm
classical
- by_contra
- obtain β¨p, hpβ© := mem_convex_hull_erase h (mem_min_card_finset_of_mem_convex_hull hx)
- have contra :=
- min_card_finset_of_mem_convex_hull_card_le_card hx
- (Set.Subset.trans (Finset.erase_subset (βp) (min_card_finset_of_mem_convex_hull hx))
- (min_card_finset_of_mem_convex_hull_subseteq hx))
- hp
- rw [β not_lt] at contra
- apply contra
- erw [card_erase_of_mem p.2, hk]
- exact lt_add_one _
#align caratheodory.affine_independent_min_card_finset_of_mem_convex_hull Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Scott Morrison
-/
-import Mathbin.Analysis.Convex.Combination
-import Mathbin.LinearAlgebra.AffineSpace.Independent
-import Mathbin.Tactic.FieldSimp
+import Analysis.Convex.Combination
+import LinearAlgebra.AffineSpace.Independent
+import Tactic.FieldSimp
#align_import analysis.convex.caratheodory from "leanprover-community/mathlib"@"9d2f0748e6c50d7a2657c564b1ff2c695b39148d"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Scott Morrison
-
-! This file was ported from Lean 3 source module analysis.convex.caratheodory
-! 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
import Mathbin.LinearAlgebra.AffineSpace.Independent
import Mathbin.Tactic.FieldSimp
+#align_import analysis.convex.caratheodory from "leanprover-community/mathlib"@"9d2f0748e6c50d7a2657c564b1ff2c695b39148d"
+
/-!
# CarathΓ©odory's convexity theorem
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -55,6 +55,7 @@ variable {π : Type _} {E : Type u} [LinearOrderedField π] [AddCommGroup E]
namespace Caratheodory
+#print Caratheodory.mem_convexHull_erase /-
/-- If `x` is in the convex hull of some finset `t` whose elements are not affine-independent,
then it is in the convex hull of a strict subset of `t`. -/
theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndependent π (coe : t β E))
@@ -105,11 +106,10 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
simp only [sub_smul, mul_smul, sum_sub_distrib, β smul_sum, gcombo, smul_zero, sub_zero,
center_mass, fsum, inv_one, one_smul, id.def]
#align caratheodory.mem_convex_hull_erase Caratheodory.mem_convexHull_erase
+-/
variable {s : Set E} {x : E} (hx : x β convexHull π s)
-include hx
-
#print Caratheodory.minCardFinsetOfMemConvexHull /-
/-- Given a point `x` in the convex hull of a set `s`, this is a finite subset of `s` of minimum
cardinality, whose convex hull contains `x`. -/
@@ -120,26 +120,35 @@ noncomputable def minCardFinsetOfMemConvexHull : Finset E :=
#align caratheodory.min_card_finset_of_mem_convex_hull Caratheodory.minCardFinsetOfMemConvexHull
-/
+#print Caratheodory.minCardFinsetOfMemConvexHull_subseteq /-
theorem minCardFinsetOfMemConvexHull_subseteq : β(minCardFinsetOfMemConvexHull hx) β s :=
(Function.argminOn_mem _ _ {t : Finset E | βt β s β§ x β convexHull π (t : Set E)} _).1
#align caratheodory.min_card_finset_of_mem_convex_hull_subseteq Caratheodory.minCardFinsetOfMemConvexHull_subseteq
+-/
+#print Caratheodory.mem_minCardFinsetOfMemConvexHull /-
theorem mem_minCardFinsetOfMemConvexHull :
x β convexHull π (minCardFinsetOfMemConvexHull hx : Set E) :=
(Function.argminOn_mem _ _ {t : Finset E | βt β s β§ x β convexHull π (t : Set E)} _).2
#align caratheodory.mem_min_card_finset_of_mem_convex_hull Caratheodory.mem_minCardFinsetOfMemConvexHull
+-/
+#print Caratheodory.minCardFinsetOfMemConvexHull_nonempty /-
theorem minCardFinsetOfMemConvexHull_nonempty : (minCardFinsetOfMemConvexHull hx).Nonempty :=
by
rw [β Finset.coe_nonempty, β @convexHull_nonempty_iff π]
exact β¨x, mem_min_card_finset_of_mem_convex_hull hxβ©
#align caratheodory.min_card_finset_of_mem_convex_hull_nonempty Caratheodory.minCardFinsetOfMemConvexHull_nonempty
+-/
+#print Caratheodory.minCardFinsetOfMemConvexHull_card_le_card /-
theorem minCardFinsetOfMemConvexHull_card_le_card {t : Finset E} (htβ : βt β s)
(htβ : x β convexHull π (t : Set E)) : (minCardFinsetOfMemConvexHull hx).card β€ t.card :=
Function.argminOn_le _ _ _ β¨htβ, htββ©
#align caratheodory.min_card_finset_of_mem_convex_hull_card_le_card Caratheodory.minCardFinsetOfMemConvexHull_card_le_card
+-/
+#print Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull /-
theorem affineIndependent_minCardFinsetOfMemConvexHull :
AffineIndependent π (coe : minCardFinsetOfMemConvexHull hx β E) :=
by
@@ -160,11 +169,13 @@ theorem affineIndependent_minCardFinsetOfMemConvexHull :
erw [card_erase_of_mem p.2, hk]
exact lt_add_one _
#align caratheodory.affine_independent_min_card_finset_of_mem_convex_hull Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull
+-/
end Caratheodory
variable {s : Set E}
+#print convexHull_eq_union /-
/-- **CarathΓ©odory's convexity theorem** -/
theorem convexHull_eq_union :
convexHull π s =
@@ -181,7 +192,9 @@ theorem convexHull_eq_union :
Β· iterate 3 convert Set.iUnion_subset _; intro
exact convexHull_mono βΉ_βΊ
#align convex_hull_eq_union convexHull_eq_union
+-/
+#print eq_pos_convex_span_of_mem_convexHull /-
/-- A more explicit version of `convex_hull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
β (ΞΉ : Sort (u + 1)) (_ : Fintype ΞΉ),
@@ -206,4 +219,5 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ ; exact hwβ
Β· intro e he hwe contra; apply hwe; rw [contra, zero_smul]
#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHull
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -76,11 +76,11 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
have hiβ : iβ β t := filter_subset _ _ mem
let k : E β π := fun z => f z - f iβ / g iβ * g z
have hk : k iβ = 0 := by field_simp [k, ne_of_gt hg]
- have ksum : (β e in t.erase iβ, k e) = 1 := by
+ have ksum : β e in t.erase iβ, k e = 1 := by
calc
- (β e in t.erase iβ, k e) = β e in t, k e := by
+ β e in t.erase iβ, k e = β e in t, k e := by
conv_rhs => rw [β insert_erase hiβ, sum_insert (not_mem_erase iβ t), hk, zero_add]
- _ = β e in t, f e - f iβ / g iβ * g e := rfl
+ _ = β e in t, (f e - f iβ / g iβ * g e) := rfl
_ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, MulZeroClass.mul_zero, sub_zero]
refine' β¨β¨iβ, hiββ©, k, _, by convert ksum, _β©
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
@@ -99,7 +99,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
Β· simpa only [mem_filter, het, true_and_iff, not_lt] using hes
Β· simp only [Subtype.coe_mk, center_mass_eq_of_sum_1 _ id ksum, id]
calc
- (β e in t.erase iβ, k e β’ e) = β e in t, k e β’ e := sum_erase _ (by rw [hk, zero_smul])
+ β e in t.erase iβ, k e β’ e = β e in t, k e β’ e := sum_erase _ (by rw [hk, zero_smul])
_ = β e in t, (f e - f iβ / g iβ * g e) β’ e := rfl
_ = t.center_mass f id := _
simp only [sub_smul, mul_smul, sum_sub_distrib, β smul_sum, gcombo, smul_zero, sub_zero,
@@ -186,7 +186,7 @@ theorem convexHull_eq_union :
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
β (ΞΉ : Sort (u + 1)) (_ : Fintype ΞΉ),
β (z : ΞΉ β E) (w : ΞΉ β π) (hss : Set.range z β s) (hai : AffineIndependent π z) (hw :
- β i, 0 < w i), (β i, w i) = 1 β§ (β i, w i β’ z i) = x :=
+ β i, 0 < w i), β i, w i = 1 β§ β i, w i β’ z i = x :=
by
rw [convexHull_eq_union] at hx
simp only [exists_prop, Set.mem_iUnion] at hx
@@ -201,7 +201,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
exact fun i =>
(hwβ _ (finset.mem_filter.mp i.2).1).lt_of_ne (finset.mem_filter.mp i.property).2.symm
Β· erw [Finset.sum_attach, Finset.sum_filter_ne_zero, hwβ]
- Β· change (β i : t' in t'.attach, (fun e => w e β’ e) βi) = x
+ Β· change β i : t' in t'.attach, (fun e => w e β’ e) βi = x
erw [Finset.sum_attach, Finset.sum_filter_of_ne]
Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ ; exact hwβ
Β· intro e he hwe contra; apply hwe; rw [contra, zero_smul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -82,7 +82,6 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
conv_rhs => rw [β insert_erase hiβ, sum_insert (not_mem_erase iβ t), hk, zero_add]
_ = β e in t, f e - f iβ / g iβ * g e := rfl
_ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, MulZeroClass.mul_zero, sub_zero]
-
refine' β¨β¨iβ, hiββ©, k, _, by convert ksum, _β©
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
intro e heiβ het
@@ -96,7 +95,6 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
_ β€
f e :=
fpos e het
-
Β· apply div_nonneg (fpos iβ (mem_of_subset (filter_subset _ t) mem)) (le_of_lt hg)
Β· simpa only [mem_filter, het, true_and_iff, not_lt] using hes
Β· simp only [Subtype.coe_mk, center_mass_eq_of_sum_1 _ id ksum, id]
@@ -104,7 +102,6 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
(β e in t.erase iβ, k e β’ e) = β e in t, k e β’ e := sum_erase _ (by rw [hk, zero_smul])
_ = β e in t, (f e - f iβ / g iβ * g e) β’ e := rfl
_ = t.center_mass f id := _
-
simp only [sub_smul, mul_smul, sum_sub_distrib, β smul_sum, gcombo, smul_zero, sub_zero,
center_mass, fsum, inv_one, one_smul, id.def]
#align caratheodory.mem_convex_hull_erase Caratheodory.mem_convexHull_erase
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -117,19 +117,19 @@ include hx
/-- Given a point `x` in the convex hull of a set `s`, this is a finite subset of `s` of minimum
cardinality, whose convex hull contains `x`. -/
noncomputable def minCardFinsetOfMemConvexHull : Finset E :=
- Function.argminOn Finset.card Nat.lt_wfRel { t | βt β s β§ x β convexHull π (t : Set E) }
+ Function.argminOn Finset.card Nat.lt_wfRel {t | βt β s β§ x β convexHull π (t : Set E)}
(by
simpa only [convexHull_eq_union_convexHull_finite_subsets s, exists_prop, mem_Union] using hx)
#align caratheodory.min_card_finset_of_mem_convex_hull Caratheodory.minCardFinsetOfMemConvexHull
-/
theorem minCardFinsetOfMemConvexHull_subseteq : β(minCardFinsetOfMemConvexHull hx) β s :=
- (Function.argminOn_mem _ _ { t : Finset E | βt β s β§ x β convexHull π (t : Set E) } _).1
+ (Function.argminOn_mem _ _ {t : Finset E | βt β s β§ x β convexHull π (t : Set E)} _).1
#align caratheodory.min_card_finset_of_mem_convex_hull_subseteq Caratheodory.minCardFinsetOfMemConvexHull_subseteq
theorem mem_minCardFinsetOfMemConvexHull :
x β convexHull π (minCardFinsetOfMemConvexHull hx : Set E) :=
- (Function.argminOn_mem _ _ { t : Finset E | βt β s β§ x β convexHull π (t : Set E) } _).2
+ (Function.argminOn_mem _ _ {t : Finset E | βt β s β§ x β convexHull π (t : Set E)} _).2
#align caratheodory.mem_min_card_finset_of_mem_convex_hull Caratheodory.mem_minCardFinsetOfMemConvexHull
theorem minCardFinsetOfMemConvexHull_nonempty : (minCardFinsetOfMemConvexHull hx).Nonempty :=
@@ -151,17 +151,17 @@ theorem affineIndependent_minCardFinsetOfMemConvexHull :
(Nat.succ_pred_eq_of_pos
(finset.card_pos.mpr (min_card_finset_of_mem_convex_hull_nonempty hx))).symm
classical
- by_contra
- obtain β¨p, hpβ© := mem_convex_hull_erase h (mem_min_card_finset_of_mem_convex_hull hx)
- have contra :=
- min_card_finset_of_mem_convex_hull_card_le_card hx
- (Set.Subset.trans (Finset.erase_subset (βp) (min_card_finset_of_mem_convex_hull hx))
- (min_card_finset_of_mem_convex_hull_subseteq hx))
- hp
- rw [β not_lt] at contra
- apply contra
- erw [card_erase_of_mem p.2, hk]
- exact lt_add_one _
+ by_contra
+ obtain β¨p, hpβ© := mem_convex_hull_erase h (mem_min_card_finset_of_mem_convex_hull hx)
+ have contra :=
+ min_card_finset_of_mem_convex_hull_card_le_card hx
+ (Set.Subset.trans (Finset.erase_subset (βp) (min_card_finset_of_mem_convex_hull hx))
+ (min_card_finset_of_mem_convex_hull_subseteq hx))
+ hp
+ rw [β not_lt] at contra
+ apply contra
+ erw [card_erase_of_mem p.2, hk]
+ exact lt_add_one _
#align caratheodory.affine_independent_min_card_finset_of_mem_convex_hull Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull
end Caratheodory
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -61,7 +61,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
{x : E} (m : x β convexHull π (βt : Set E)) :
β y : (βt : Set E), x β convexHull π (β(t.eraseβ y) : Set E) :=
by
- simp only [Finset.convexHull_eq, mem_set_of_eq] at mβ’
+ simp only [Finset.convexHull_eq, mem_set_of_eq] at m β’
obtain β¨f, fpos, fsum, rflβ© := m
obtain β¨g, gcombo, gsum, gposβ© := exists_nontrivial_relation_sum_zero_of_not_affine_ind h
replace gpos := exists_pos_of_sum_zero_of_exists_nonzero g gsum gpos
@@ -72,7 +72,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
apply s.exists_min_image fun z => f z / g z
obtain β¨x, hx, hgxβ© : β x β t, 0 < g x := gpos
exact β¨x, mem_filter.mpr β¨hx, hgxβ©β©
- have hg : 0 < g iβ := by rw [mem_filter] at mem; exact mem.2
+ have hg : 0 < g iβ := by rw [mem_filter] at mem ; exact mem.2
have hiβ : iβ β t := filter_subset _ _ mem
let k : E β π := fun z => f z - f iβ / g iβ * g z
have hk : k iβ = 0 := by field_simp [k, ne_of_gt hg]
@@ -87,7 +87,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
intro e heiβ het
by_cases hes : e β s
- Β· have hge : 0 < g e := by rw [mem_filter] at hes; exact hes.2
+ Β· have hge : 0 < g e := by rw [mem_filter] at hes ; exact hes.2
rw [β le_div_iff hge]
exact w _ hes
Β· calc
@@ -158,7 +158,7 @@ theorem affineIndependent_minCardFinsetOfMemConvexHull :
(Set.Subset.trans (Finset.erase_subset (βp) (min_card_finset_of_mem_convex_hull hx))
(min_card_finset_of_mem_convex_hull_subseteq hx))
hp
- rw [β not_lt] at contra
+ rw [β not_lt] at contra
apply contra
erw [card_erase_of_mem p.2, hk]
exact lt_add_one _
@@ -187,14 +187,14 @@ theorem convexHull_eq_union :
/-- A more explicit version of `convex_hull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
- β (ΞΉ : Sort (u + 1))(_ : Fintype ΞΉ),
- β (z : ΞΉ β E)(w : ΞΉ β π)(hss : Set.range z β s)(hai : AffineIndependent π z)(hw :
+ β (ΞΉ : Sort (u + 1)) (_ : Fintype ΞΉ),
+ β (z : ΞΉ β E) (w : ΞΉ β π) (hss : Set.range z β s) (hai : AffineIndependent π z) (hw :
β i, 0 < w i), (β i, w i) = 1 β§ (β i, w i β’ z i) = x :=
by
- rw [convexHull_eq_union] at hx
- simp only [exists_prop, Set.mem_iUnion] at hx
+ rw [convexHull_eq_union] at hx
+ simp only [exists_prop, Set.mem_iUnion] at hx
obtain β¨t, htβ, htβ, htββ© := hx
- simp only [t.convex_hull_eq, exists_prop, Set.mem_setOf_eq] at htβ
+ simp only [t.convex_hull_eq, exists_prop, Set.mem_setOf_eq] at htβ
obtain β¨w, hwβ, hwβ, hwββ© := htβ
let t' := t.filter fun i => w i β 0
refine' β¨t', t'.fintype_coe_sort, (coe : t' β E), w β (coe : t' β E), _, _, _, _, _β©
@@ -206,7 +206,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
Β· erw [Finset.sum_attach, Finset.sum_filter_ne_zero, hwβ]
Β· change (β i : t' in t'.attach, (fun e => w e β’ e) βi) = x
erw [Finset.sum_attach, Finset.sum_filter_of_ne]
- Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ; exact hwβ
+ Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ ; exact hwβ
Β· intro e he hwe contra; apply hwe; rw [contra, zero_smul]
#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHull
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -47,7 +47,7 @@ convex hull, caratheodory
open Set Finset
-open BigOperators
+open scoped BigOperators
universe u
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -55,9 +55,6 @@ variable {π : Type _} {E : Type u} [LinearOrderedField π] [AddCommGroup E]
namespace Caratheodory
-/- warning: caratheodory.mem_convex_hull_erase -> Caratheodory.mem_convexHull_erase is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align caratheodory.mem_convex_hull_erase Caratheodory.mem_convexHull_eraseβ'. -/
/-- If `x` is in the convex hull of some finset `t` whose elements are not affine-independent,
then it is in the convex hull of a strict subset of `t`. -/
theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndependent π (coe : t β E))
@@ -126,56 +123,26 @@ noncomputable def minCardFinsetOfMemConvexHull : Finset E :=
#align caratheodory.min_card_finset_of_mem_convex_hull Caratheodory.minCardFinsetOfMemConvexHull
-/
-/- warning: caratheodory.min_card_finset_of_mem_convex_hull_subseteq -> Caratheodory.minCardFinsetOfMemConvexHull_subseteq is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) s
-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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)) s
-Case conversion may be inaccurate. Consider using '#align caratheodory.min_card_finset_of_mem_convex_hull_subseteq Caratheodory.minCardFinsetOfMemConvexHull_subseteqβ'. -/
theorem minCardFinsetOfMemConvexHull_subseteq : β(minCardFinsetOfMemConvexHull hx) β s :=
(Function.argminOn_mem _ _ { t : Finset E | βt β s β§ x β convexHull π (t : Set E) } _).1
#align caratheodory.min_card_finset_of_mem_convex_hull_subseteq Caratheodory.minCardFinsetOfMemConvexHull_subseteq
-/- warning: caratheodory.mem_min_card_finset_of_mem_convex_hull -> Caratheodory.mem_minCardFinsetOfMemConvexHull is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)))
-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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)))
-Case conversion may be inaccurate. Consider using '#align caratheodory.mem_min_card_finset_of_mem_convex_hull Caratheodory.mem_minCardFinsetOfMemConvexHullβ'. -/
theorem mem_minCardFinsetOfMemConvexHull :
x β convexHull π (minCardFinsetOfMemConvexHull hx : Set E) :=
(Function.argminOn_mem _ _ { t : Finset E | βt β s β§ x β convexHull π (t : Set E) } _).2
#align caratheodory.mem_min_card_finset_of_mem_convex_hull Caratheodory.mem_minCardFinsetOfMemConvexHull
-/- warning: caratheodory.min_card_finset_of_mem_convex_hull_nonempty -> Caratheodory.minCardFinsetOfMemConvexHull_nonempty is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), Finset.Nonempty.{u1} E (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)
-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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), Finset.Nonempty.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)
-Case conversion may be inaccurate. Consider using '#align caratheodory.min_card_finset_of_mem_convex_hull_nonempty Caratheodory.minCardFinsetOfMemConvexHull_nonemptyβ'. -/
theorem minCardFinsetOfMemConvexHull_nonempty : (minCardFinsetOfMemConvexHull hx).Nonempty :=
by
rw [β Finset.coe_nonempty, β @convexHull_nonempty_iff π]
exact β¨x, mem_min_card_finset_of_mem_convex_hull hxβ©
#align caratheodory.min_card_finset_of_mem_convex_hull_nonempty Caratheodory.minCardFinsetOfMemConvexHull_nonempty
-/- warning: caratheodory.min_card_finset_of_mem_convex_hull_card_le_card -> Caratheodory.minCardFinsetOfMemConvexHull_card_le_card is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) {t : Finset.{u1} E}, (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) -> (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t))) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} E (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) (Finset.card.{u1} E 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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) {t : Finset.{u2} E}, (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E t))) -> (LE.le.{0} Nat instLENat (Finset.card.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)) (Finset.card.{u2} E t))
-Case conversion may be inaccurate. Consider using '#align caratheodory.min_card_finset_of_mem_convex_hull_card_le_card Caratheodory.minCardFinsetOfMemConvexHull_card_le_cardβ'. -/
theorem minCardFinsetOfMemConvexHull_card_le_card {t : Finset E} (htβ : βt β s)
(htβ : x β convexHull π (t : Set E)) : (minCardFinsetOfMemConvexHull hx).card β€ t.card :=
Function.argminOn_le _ _ _ β¨htβ, htββ©
#align caratheodory.min_card_finset_of_mem_convex_hull_card_le_card Caratheodory.minCardFinsetOfMemConvexHull_card_le_card
-/- warning: caratheodory.affine_independent_min_card_finset_of_mem_convex_hull -> Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (coeSubtype.{succ u1} E (fun (x_1 : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x_1 (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)))))))
-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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x_1 : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x_1 (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx))) (Subtype.val.{succ u2} E (fun (x_1 : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x_1 (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)))
-Case conversion may be inaccurate. Consider using '#align caratheodory.affine_independent_min_card_finset_of_mem_convex_hull Caratheodory.affineIndependent_minCardFinsetOfMemConvexHullβ'. -/
theorem affineIndependent_minCardFinsetOfMemConvexHull :
AffineIndependent π (coe : minCardFinsetOfMemConvexHull hx β E) :=
by
@@ -201,9 +168,6 @@ end Caratheodory
variable {s : Set E}
-/- warning: convex_hull_eq_union -> convexHull_eq_union is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex_hull_eq_union convexHull_eq_unionβ'. -/
/-- **CarathΓ©odory's convexity theorem** -/
theorem convexHull_eq_union :
convexHull π s =
@@ -221,9 +185,6 @@ theorem convexHull_eq_union :
exact convexHull_mono βΉ_βΊ
#align convex_hull_eq_union convexHull_eq_union
-/- warning: eq_pos_convex_span_of_mem_convex_hull -> eq_pos_convex_span_of_mem_convexHull is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHullβ'. -/
/-- A more explicit version of `convex_hull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
β (ΞΉ : Sort (u + 1))(_ : Fintype ΞΉ),
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -75,9 +75,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
apply s.exists_min_image fun z => f z / g z
obtain β¨x, hx, hgxβ© : β x β t, 0 < g x := gpos
exact β¨x, mem_filter.mpr β¨hx, hgxβ©β©
- have hg : 0 < g iβ := by
- rw [mem_filter] at mem
- exact mem.2
+ have hg : 0 < g iβ := by rw [mem_filter] at mem; exact mem.2
have hiβ : iβ β t := filter_subset _ _ mem
let k : E β π := fun z => f z - f iβ / g iβ * g z
have hk : k iβ = 0 := by field_simp [k, ne_of_gt hg]
@@ -92,9 +90,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
intro e heiβ het
by_cases hes : e β s
- Β· have hge : 0 < g e := by
- rw [mem_filter] at hes
- exact hes.2
+ Β· have hge : 0 < g e := by rw [mem_filter] at hes; exact hes.2
rw [β le_div_iff hge]
exact w _ hes
Β· calc
@@ -241,8 +237,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
obtain β¨w, hwβ, hwβ, hwββ© := htβ
let t' := t.filter fun i => w i β 0
refine' β¨t', t'.fintype_coe_sort, (coe : t' β E), w β (coe : t' β E), _, _, _, _, _β©
- Β· rw [Subtype.range_coe_subtype]
- exact subset.trans (Finset.filter_subset _ t) htβ
+ Β· rw [Subtype.range_coe_subtype]; exact subset.trans (Finset.filter_subset _ t) htβ
Β· exact htβ.comp_embedding β¨_, inclusion_injective (Finset.filter_subset (fun i => w i β 0) t)β©
Β·
exact fun i =>
@@ -250,10 +245,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
Β· erw [Finset.sum_attach, Finset.sum_filter_ne_zero, hwβ]
Β· change (β i : t' in t'.attach, (fun e => w e β’ e) βi) = x
erw [Finset.sum_attach, Finset.sum_filter_of_ne]
- Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ
- exact hwβ
- Β· intro e he hwe contra
- apply hwe
- rw [contra, zero_smul]
+ Β· rw [t.center_mass_eq_of_sum_1 id hwβ] at hwβ; exact hwβ
+ Β· intro e he hwe contra; apply hwe; rw [contra, zero_smul]
#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHull
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -56,10 +56,7 @@ variable {π : Type _} {E : Type u} [LinearOrderedField π] [AddCommGroup E]
namespace Caratheodory
/- warning: caratheodory.mem_convex_hull_erase -> Caratheodory.mem_convexHull_erase is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] [_inst_4 : DecidableEq.{succ u1} E] {t : Finset.{u1} E}, (Not (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t)))))))) -> (forall {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t))) -> (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) (fun (y : coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) => Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) (Finset.erase.{u1} E (fun (a : E) (b : E) => _inst_4 a b) t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)))))) y)))))))
-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)] [_inst_4 : DecidableEq.{succ u2} E] {t : Finset.{u2} E}, (Not (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)))) -> (forall {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E t))) -> (Exists.{succ u2} (Set.Elem.{u2} E (Finset.toSet.{u2} E t)) (fun (y : Set.Elem.{u2} E (Finset.toSet.{u2} E t)) => Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E (Finset.erase.{u2} E (fun (a : E) (b : E) => _inst_4 a b) t (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (Finset.toSet.{u2} E t)) y)))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align caratheodory.mem_convex_hull_erase Caratheodory.mem_convexHull_eraseβ'. -/
/-- If `x` is in the convex hull of some finset `t` whose elements are not affine-independent,
then it is in the convex hull of a strict subset of `t`. -/
@@ -209,10 +206,7 @@ end Caratheodory
variable {s : Set E}
/- warning: convex_hull_eq_union -> convexHull_eq_union is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E}, Eq.{succ u1} (Set.{u1} E) (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s) (Set.iUnion.{u1, succ u1} E (Finset.{u1} E) (fun (t : Finset.{u1} E) => Set.iUnion.{u1, 0} E (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) => Set.iUnion.{u1, 0} E (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) => coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) 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}, 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)) s) (Set.iUnion.{u2, succ u2} E (Finset.{u2} E) (fun (t : Finset.{u2} E) => Set.iUnion.{u2, 0} E (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) => Set.iUnion.{u2, 0} E (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t))) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x 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 (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)) (Finset.toSet.{u2} E t)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align convex_hull_eq_union convexHull_eq_unionβ'. -/
/-- **CarathΓ©odory's convexity theorem** -/
theorem convexHull_eq_union :
@@ -232,10 +226,7 @@ theorem convexHull_eq_union :
#align convex_hull_eq_union convexHull_eq_union
/- warning: eq_pos_convex_span_of_mem_convex_hull -> eq_pos_convex_span_of_mem_convexHull is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) -> (Exists.{succ (succ u1)} Type.{u1} (fun (ΞΉ : Type.{u1}) => Exists.{succ u1} (Fintype.{u1} ΞΉ) (fun (_x : Fintype.{u1} ΞΉ) => Exists.{succ u1} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u1) (succ u2)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toHasLt.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toHasLt.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) => And (Eq.{succ u2} π (Finset.sum.{u2, u1} π ΞΉ (AddCommGroup.toAddCommMonoid.{u2} π (OrderedAddCommGroup.toAddCommGroup.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u2} π 1 (OfNat.mk.{u2} π 1 (One.one.{u2} π (AddMonoidWithOne.toOne.{u2} π (AddGroupWithOne.toAddMonoidWithOne.{u2} π (AddCommGroupWithOne.toAddGroupWithOne.{u2} π (Ring.toAddCommGroupWithOne.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (Eq.{succ u1} E (Finset.sum.{u1, u1} E ΞΉ (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => SMul.smul.{u2, u1} π E (SMulZeroClass.toHasSmul.{u2, u1} π E (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u2, u1} π E (MulZeroClass.toHasZero.{u2} π (MulZeroOneClass.toMulZeroClass.{u2} π (MonoidWithZero.toMulZeroOneClass.{u2} π (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (Module.toMulActionWithZero.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (w i) (z i))) x)))))))))
-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} {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) -> (Exists.{succ (succ u2)} Type.{u2} (fun (ΞΉ : Type.{u2}) => Exists.{succ u2} (Fintype.{u2} ΞΉ) (fun (_x : Fintype.{u2} ΞΉ) => Exists.{succ u2} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u2) (succ u1)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) => And (Eq.{succ u1} π (Finset.sum.{u1, u2} π ΞΉ (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u1} π 1 (One.toOfNat1.{u1} π (Semiring.toOne.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))))) (Eq.{succ u2} E (Finset.sum.{u2, u2} E ΞΉ (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => HSMul.hSMul.{u1, u2, u2} π E E (instHSMul.{u1, u2} π E (SMulZeroClass.toSMul.{u1, u2} π E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} π E (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{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) _inst_3))))) (w i) (z i))) x)))))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHullβ'. -/
/-- A more explicit version of `convex_hull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -233,7 +233,7 @@ theorem convexHull_eq_union :
/- warning: eq_pos_convex_span_of_mem_convex_hull -> eq_pos_convex_span_of_mem_convexHull is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) -> (Exists.{succ (succ u1)} Type.{u1} (fun (ΞΉ : Type.{u1}) => Exists.{succ u1} (Fintype.{u1} ΞΉ) (fun (_x : Fintype.{u1} ΞΉ) => Exists.{succ u1} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u1) (succ u2)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toLT.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toLT.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) => And (Eq.{succ u2} π (Finset.sum.{u2, u1} π ΞΉ (AddCommGroup.toAddCommMonoid.{u2} π (OrderedAddCommGroup.toAddCommGroup.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u2} π 1 (OfNat.mk.{u2} π 1 (One.one.{u2} π (AddMonoidWithOne.toOne.{u2} π (AddGroupWithOne.toAddMonoidWithOne.{u2} π (AddCommGroupWithOne.toAddGroupWithOne.{u2} π (Ring.toAddCommGroupWithOne.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (Eq.{succ u1} E (Finset.sum.{u1, u1} E ΞΉ (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => SMul.smul.{u2, u1} π E (SMulZeroClass.toHasSmul.{u2, u1} π E (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u2, u1} π E (MulZeroClass.toHasZero.{u2} π (MulZeroOneClass.toMulZeroClass.{u2} π (MonoidWithZero.toMulZeroOneClass.{u2} π (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (Module.toMulActionWithZero.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (w i) (z i))) x)))))))))
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) -> (Exists.{succ (succ u1)} Type.{u1} (fun (ΞΉ : Type.{u1}) => Exists.{succ u1} (Fintype.{u1} ΞΉ) (fun (_x : Fintype.{u1} ΞΉ) => Exists.{succ u1} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u1) (succ u2)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toHasLt.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toHasLt.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) => And (Eq.{succ u2} π (Finset.sum.{u2, u1} π ΞΉ (AddCommGroup.toAddCommMonoid.{u2} π (OrderedAddCommGroup.toAddCommGroup.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u2} π 1 (OfNat.mk.{u2} π 1 (One.one.{u2} π (AddMonoidWithOne.toOne.{u2} π (AddGroupWithOne.toAddMonoidWithOne.{u2} π (AddCommGroupWithOne.toAddGroupWithOne.{u2} π (Ring.toAddCommGroupWithOne.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (Eq.{succ u1} E (Finset.sum.{u1, u1} E ΞΉ (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => SMul.smul.{u2, u1} π E (SMulZeroClass.toHasSmul.{u2, u1} π E (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u2, u1} π E (MulZeroClass.toHasZero.{u2} π (MulZeroOneClass.toMulZeroClass.{u2} π (MonoidWithZero.toMulZeroOneClass.{u2} π (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (Module.toMulActionWithZero.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (w i) (z i))) x)))))))))
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} {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) -> (Exists.{succ (succ u2)} Type.{u2} (fun (ΞΉ : Type.{u2}) => Exists.{succ u2} (Fintype.{u2} ΞΉ) (fun (_x : Fintype.{u2} ΞΉ) => Exists.{succ u2} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u2) (succ u1)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) => And (Eq.{succ u1} π (Finset.sum.{u1, u2} π ΞΉ (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u1} π 1 (One.toOfNat1.{u1} π (Semiring.toOne.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))))) (Eq.{succ u2} E (Finset.sum.{u2, u2} E ΞΉ (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => HSMul.hSMul.{u1, u2, u2} π E E (instHSMul.{u1, u2} π E (SMulZeroClass.toSMul.{u1, u2} π E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} π E (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{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) _inst_3))))) (w i) (z i))) x)))))))))
Case conversion may be inaccurate. Consider using '#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHullβ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -210,9 +210,9 @@ variable {s : Set E}
/- warning: convex_hull_eq_union -> convexHull_eq_union is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E}, Eq.{succ u1} (Set.{u1} E) (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s) (Set.unionα΅’.{u1, succ u1} E (Finset.{u1} E) (fun (t : Finset.{u1} E) => Set.unionα΅’.{u1, 0} E (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) => Set.unionα΅’.{u1, 0} E (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) => coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)))))
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E}, Eq.{succ u1} (Set.{u1} E) (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s) (Set.iUnion.{u1, succ u1} E (Finset.{u1} E) (fun (t : Finset.{u1} E) => Set.iUnion.{u1, 0} E (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) => Set.iUnion.{u1, 0} E (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) => coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) 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}, 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)) s) (Set.unionα΅’.{u2, succ u2} E (Finset.{u2} E) (fun (t : Finset.{u2} E) => Set.unionα΅’.{u2, 0} E (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) => Set.unionα΅’.{u2, 0} E (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t))) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x 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 (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)) (Finset.toSet.{u2} E t)))))
+ 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}, 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)) s) (Set.iUnion.{u2, succ u2} E (Finset.{u2} E) (fun (t : Finset.{u2} E) => Set.iUnion.{u2, 0} E (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) => Set.iUnion.{u2, 0} E (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t))) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x 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 (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)) (Finset.toSet.{u2} E t)))))
Case conversion may be inaccurate. Consider using '#align convex_hull_eq_union convexHull_eq_unionβ'. -/
/-- **CarathΓ©odory's convexity theorem** -/
theorem convexHull_eq_union :
@@ -221,13 +221,13 @@ theorem convexHull_eq_union :
by
apply Set.Subset.antisymm
Β· intro x hx
- simp only [exists_prop, Set.mem_unionα΅’]
+ simp only [exists_prop, Set.mem_iUnion]
exact
β¨Caratheodory.minCardFinsetOfMemConvexHull hx,
Caratheodory.minCardFinsetOfMemConvexHull_subseteq hx,
Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull hx,
Caratheodory.mem_minCardFinsetOfMemConvexHull hxβ©
- Β· iterate 3 convert Set.unionα΅’_subset _; intro
+ Β· iterate 3 convert Set.iUnion_subset _; intro
exact convexHull_mono βΉ_βΊ
#align convex_hull_eq_union convexHull_eq_union
@@ -244,7 +244,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
β i, 0 < w i), (β i, w i) = 1 β§ (β i, w i β’ z i) = x :=
by
rw [convexHull_eq_union] at hx
- simp only [exists_prop, Set.mem_unionα΅’] at hx
+ simp only [exists_prop, Set.mem_iUnion] at hx
obtain β¨t, htβ, htβ, htββ© := hx
simp only [t.convex_hull_eq, exists_prop, Set.mem_setOf_eq] at htβ
obtain β¨w, hwβ, hwβ, hwββ© := htβ
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -235,7 +235,7 @@ theorem convexHull_eq_union :
lean 3 declaration is
forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) -> (Exists.{succ (succ u1)} Type.{u1} (fun (ΞΉ : Type.{u1}) => Exists.{succ u1} (Fintype.{u1} ΞΉ) (fun (_x : Fintype.{u1} ΞΉ) => Exists.{succ u1} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u1) (succ u2)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toLT.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toLT.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) => And (Eq.{succ u2} π (Finset.sum.{u2, u1} π ΞΉ (AddCommGroup.toAddCommMonoid.{u2} π (OrderedAddCommGroup.toAddCommGroup.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u2} π 1 (OfNat.mk.{u2} π 1 (One.one.{u2} π (AddMonoidWithOne.toOne.{u2} π (AddGroupWithOne.toAddMonoidWithOne.{u2} π (AddCommGroupWithOne.toAddGroupWithOne.{u2} π (Ring.toAddCommGroupWithOne.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (Eq.{succ u1} E (Finset.sum.{u1, u1} E ΞΉ (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => SMul.smul.{u2, u1} π E (SMulZeroClass.toHasSmul.{u2, u1} π E (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u2, u1} π E (MulZeroClass.toHasZero.{u2} π (MulZeroOneClass.toMulZeroClass.{u2} π (MonoidWithZero.toMulZeroOneClass.{u2} π (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (Module.toMulActionWithZero.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (w i) (z i))) x)))))))))
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} {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) -> (Exists.{succ (succ u2)} Type.{u2} (fun (ΞΉ : Type.{u2}) => Exists.{succ u2} (Fintype.{u2} ΞΉ) (fun (_x : Fintype.{u2} ΞΉ) => Exists.{succ u2} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u2) (succ u1)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) => And (Eq.{succ u1} π (Finset.sum.{u1, u2} π ΞΉ (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u1} π 1 (One.toOfNat1.{u1} π (NonAssocRing.toOne.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (Eq.{succ u2} E (Finset.sum.{u2, u2} E ΞΉ (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => HSMul.hSMul.{u1, u2, u2} π E E (instHSMul.{u1, u2} π E (SMulZeroClass.toSMul.{u1, u2} π E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} π E (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{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) _inst_3))))) (w i) (z i))) x)))))))))
+ 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} {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) -> (Exists.{succ (succ u2)} Type.{u2} (fun (ΞΉ : Type.{u2}) => Exists.{succ u2} (Fintype.{u2} ΞΉ) (fun (_x : Fintype.{u2} ΞΉ) => Exists.{succ u2} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u2) (succ u1)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) => And (Eq.{succ u1} π (Finset.sum.{u1, u2} π ΞΉ (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u1} π 1 (One.toOfNat1.{u1} π (Semiring.toOne.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))))) (Eq.{succ u2} E (Finset.sum.{u2, u2} E ΞΉ (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => HSMul.hSMul.{u1, u2, u2} π E E (instHSMul.{u1, u2} π E (SMulZeroClass.toSMul.{u1, u2} π E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} π E (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{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) _inst_3))))) (w i) (z i))) x)))))))))
Case conversion may be inaccurate. Consider using '#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHullβ'. -/
/-- A more explicit version of `convex_hull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/fa78268d4d77cb2b2fbc89f0527e2e7807763780
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Scott Morrison
! This file was ported from Lean 3 source module analysis.convex.caratheodory
-! leanprover-community/mathlib commit e6fab1dc073396d45da082c644642c4f8bff2264
+! leanprover-community/mathlib commit 9d2f0748e6c50d7a2657c564b1ff2c695b39148d
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.Tactic.FieldSimp
/-!
# CarathΓ©odory's convexity theorem
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Convex hull can be regarded as a refinement of affine span. Both are closure operators but whereas
convex hull takes values in the lattice of convex subsets, affine span takes values in the much
coarser sublattice of affine subspaces.
mathlib commit https://github.com/leanprover-community/mathlib/commit/2651125b48fc5c170ab1111afd0817c903b1fc6c
@@ -52,6 +52,12 @@ variable {π : Type _} {E : Type u} [LinearOrderedField π] [AddCommGroup E]
namespace Caratheodory
+/- warning: caratheodory.mem_convex_hull_erase -> Caratheodory.mem_convexHull_erase is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] [_inst_4 : DecidableEq.{succ u1} E] {t : Finset.{u1} E}, (Not (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t)))))))) -> (forall {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t))) -> (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) (fun (y : coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) => Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) (Finset.erase.{u1} E (fun (a : E) (b : E) => _inst_4 a b) t ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} E) Type.{u1} (Set.hasCoeToSort.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t)))))) y)))))))
+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)] [_inst_4 : DecidableEq.{succ u2} E] {t : Finset.{u2} E}, (Not (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)))) -> (forall {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E t))) -> (Exists.{succ u2} (Set.Elem.{u2} E (Finset.toSet.{u2} E t)) (fun (y : Set.Elem.{u2} E (Finset.toSet.{u2} E t)) => Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E (Finset.erase.{u2} E (fun (a : E) (b : E) => _inst_4 a b) t (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (Finset.toSet.{u2} E t)) y)))))))
+Case conversion may be inaccurate. Consider using '#align caratheodory.mem_convex_hull_erase Caratheodory.mem_convexHull_eraseβ'. -/
/-- If `x` is in the convex hull of some finset `t` whose elements are not affine-independent,
then it is in the convex hull of a strict subset of `t`. -/
theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndependent π (coe : t β E))
@@ -114,6 +120,7 @@ variable {s : Set E} {x : E} (hx : x β convexHull π s)
include hx
+#print Caratheodory.minCardFinsetOfMemConvexHull /-
/-- Given a point `x` in the convex hull of a set `s`, this is a finite subset of `s` of minimum
cardinality, whose convex hull contains `x`. -/
noncomputable def minCardFinsetOfMemConvexHull : Finset E :=
@@ -121,27 +128,58 @@ noncomputable def minCardFinsetOfMemConvexHull : Finset E :=
(by
simpa only [convexHull_eq_union_convexHull_finite_subsets s, exists_prop, mem_Union] using hx)
#align caratheodory.min_card_finset_of_mem_convex_hull Caratheodory.minCardFinsetOfMemConvexHull
+-/
+/- warning: caratheodory.min_card_finset_of_mem_convex_hull_subseteq -> Caratheodory.minCardFinsetOfMemConvexHull_subseteq is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) s
+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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)) s
+Case conversion may be inaccurate. Consider using '#align caratheodory.min_card_finset_of_mem_convex_hull_subseteq Caratheodory.minCardFinsetOfMemConvexHull_subseteqβ'. -/
theorem minCardFinsetOfMemConvexHull_subseteq : β(minCardFinsetOfMemConvexHull hx) β s :=
(Function.argminOn_mem _ _ { t : Finset E | βt β s β§ x β convexHull π (t : Set E) } _).1
#align caratheodory.min_card_finset_of_mem_convex_hull_subseteq Caratheodory.minCardFinsetOfMemConvexHull_subseteq
+/- warning: caratheodory.mem_min_card_finset_of_mem_convex_hull -> Caratheodory.mem_minCardFinsetOfMemConvexHull is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)))
+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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)))
+Case conversion may be inaccurate. Consider using '#align caratheodory.mem_min_card_finset_of_mem_convex_hull Caratheodory.mem_minCardFinsetOfMemConvexHullβ'. -/
theorem mem_minCardFinsetOfMemConvexHull :
x β convexHull π (minCardFinsetOfMemConvexHull hx : Set E) :=
(Function.argminOn_mem _ _ { t : Finset E | βt β s β§ x β convexHull π (t : Set E) } _).2
#align caratheodory.mem_min_card_finset_of_mem_convex_hull Caratheodory.mem_minCardFinsetOfMemConvexHull
+/- warning: caratheodory.min_card_finset_of_mem_convex_hull_nonempty -> Caratheodory.minCardFinsetOfMemConvexHull_nonempty is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), Finset.Nonempty.{u1} E (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)
+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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), Finset.Nonempty.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)
+Case conversion may be inaccurate. Consider using '#align caratheodory.min_card_finset_of_mem_convex_hull_nonempty Caratheodory.minCardFinsetOfMemConvexHull_nonemptyβ'. -/
theorem minCardFinsetOfMemConvexHull_nonempty : (minCardFinsetOfMemConvexHull hx).Nonempty :=
by
rw [β Finset.coe_nonempty, β @convexHull_nonempty_iff π]
exact β¨x, mem_min_card_finset_of_mem_convex_hull hxβ©
#align caratheodory.min_card_finset_of_mem_convex_hull_nonempty Caratheodory.minCardFinsetOfMemConvexHull_nonempty
+/- warning: caratheodory.min_card_finset_of_mem_convex_hull_card_le_card -> Caratheodory.minCardFinsetOfMemConvexHull_card_le_card is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) {t : Finset.{u1} E}, (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) -> (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t))) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} E (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) (Finset.card.{u1} E 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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) {t : Finset.{u2} E}, (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) (Finset.toSet.{u2} E t))) -> (LE.le.{0} Nat instLENat (Finset.card.{u2} E (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)) (Finset.card.{u2} E t))
+Case conversion may be inaccurate. Consider using '#align caratheodory.min_card_finset_of_mem_convex_hull_card_le_card Caratheodory.minCardFinsetOfMemConvexHull_card_le_cardβ'. -/
theorem minCardFinsetOfMemConvexHull_card_le_card {t : Finset E} (htβ : βt β s)
(htβ : x β convexHull π (t : Set E)) : (minCardFinsetOfMemConvexHull hx).card β€ t.card :=
Function.argminOn_le _ _ _ β¨htβ, htββ©
#align caratheodory.min_card_finset_of_mem_convex_hull_card_le_card Caratheodory.minCardFinsetOfMemConvexHull_card_le_card
+/- warning: caratheodory.affine_independent_min_card_finset_of_mem_convex_hull -> Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E} (hx : Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)), AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)) E (coeSubtype.{succ u1} E (fun (x_1 : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x_1 (Caratheodory.minCardFinsetOfMemConvexHull.{u1, u2} π E _inst_1 _inst_2 _inst_3 s x hx)))))))
+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} {x : E} (hx : Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)), AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x_1 : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x_1 (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx))) (Subtype.val.{succ u2} E (fun (x_1 : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x_1 (Caratheodory.minCardFinsetOfMemConvexHull.{u2, u1} π E _inst_1 _inst_2 _inst_3 s x hx)))
+Case conversion may be inaccurate. Consider using '#align caratheodory.affine_independent_min_card_finset_of_mem_convex_hull Caratheodory.affineIndependent_minCardFinsetOfMemConvexHullβ'. -/
theorem affineIndependent_minCardFinsetOfMemConvexHull :
AffineIndependent π (coe : minCardFinsetOfMemConvexHull hx β E) :=
by
@@ -167,6 +205,12 @@ end Caratheodory
variable {s : Set E}
+/- warning: convex_hull_eq_union -> convexHull_eq_union is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E}, Eq.{succ u1} (Set.{u1} E) (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s) (Set.unionα΅’.{u1, succ u1} E (Finset.{u1} E) (fun (t : Finset.{u1} E) => Set.unionα΅’.{u1, 0} E (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) t) s) => Set.unionα΅’.{u1, 0} E (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (CoeTCβ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Finset.{u1} E) Type.{u1} (Finset.hasCoeToSort.{u1} E) t) E (coeSubtype.{succ u1} E (fun (x : E) => Membership.Mem.{u1, u1} E (Finset.{u1} E) (Finset.hasMem.{u1} E) x t))))))) => coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} E) (Set.{u1} E) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (CoeTCβ.coe.{succ u1, succ u1} (Finset.{u1} E) (Set.{u1} E) (Finset.Set.hasCoeT.{u1} E))) 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}, 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)) s) (Set.unionα΅’.{u2, succ u2} E (Finset.{u2} E) (fun (t : Finset.{u2} E) => Set.unionα΅’.{u2, 0} E (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Finset.toSet.{u2} E t) s) => Set.unionα΅’.{u2, 0} E (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t))) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x t)) (Subtype.val.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Finset.{u2} E) (Finset.instMembershipFinset.{u2} E) x 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 (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)) (Finset.toSet.{u2} E t)))))
+Case conversion may be inaccurate. Consider using '#align convex_hull_eq_union convexHull_eq_unionβ'. -/
/-- **CarathΓ©odory's convexity theorem** -/
theorem convexHull_eq_union :
convexHull π s =
@@ -184,6 +228,12 @@ theorem convexHull_eq_union :
exact convexHull_mono βΉ_βΊ
#align convex_hull_eq_union convexHull_eq_union
+/- warning: eq_pos_convex_span_of_mem_convex_hull -> eq_pos_convex_span_of_mem_convexHull is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {x : E}, (Membership.Mem.{u1, u1} E (Set.{u1} E) (Set.hasMem.{u1} E) x (coeFn.{succ u1, succ u1} (ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (fun (_x : ClosureOperator.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) => (Set.{u1} E) -> (Set.{u1} E)) (ClosureOperator.hasCoeToFun.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.completeBooleanAlgebra.{u1} E)))))))) (convexHull.{u2, u1} π E (StrictOrderedSemiring.toOrderedSemiring.{u2} π (StrictOrderedRing.toStrictOrderedSemiring.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3) s)) -> (Exists.{succ (succ u1)} Type.{u1} (fun (ΞΉ : Type.{u1}) => Exists.{succ u1} (Fintype.{u1} ΞΉ) (fun (_x : Fintype.{u1} ΞΉ) => Exists.{succ u1} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u1) (succ u2)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u1} (Set.{u1} E) (Set.hasSubset.{u1} E) (Set.range.{u1, succ u1} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u2, u1, u1, u1} π E E (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u1} E (AddCommGroup.toAddGroup.{u1} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toLT.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u2} π (Preorder.toLT.{u2} π (PartialOrder.toPreorder.{u2} π (OrderedAddCommGroup.toPartialOrder.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))) (OfNat.ofNat.{u2} π 0 (OfNat.mk.{u2} π 0 (Zero.zero.{u2} π (MulZeroClass.toHasZero.{u2} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} π (NonAssocRing.toNonUnitalNonAssocRing.{u2} π (Ring.toNonAssocRing.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (w i)) => And (Eq.{succ u2} π (Finset.sum.{u2, u1} π ΞΉ (AddCommGroup.toAddCommMonoid.{u2} π (OrderedAddCommGroup.toAddCommGroup.{u2} π (StrictOrderedRing.toOrderedAddCommGroup.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u2} π 1 (OfNat.mk.{u2} π 1 (One.one.{u2} π (AddMonoidWithOne.toOne.{u2} π (AddGroupWithOne.toAddMonoidWithOne.{u2} π (AddCommGroupWithOne.toAddGroupWithOne.{u2} π (Ring.toAddCommGroupWithOne.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))))))))) (Eq.{succ u1} E (Finset.sum.{u1, u1} E ΞΉ (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (Finset.univ.{u1} ΞΉ _x) (fun (i : ΞΉ) => SMul.smul.{u2, u1} π E (SMulZeroClass.toHasSmul.{u2, u1} π E (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u2, u1} π E (MulZeroClass.toHasZero.{u2} π (MulZeroOneClass.toMulZeroClass.{u2} π (MonoidWithZero.toMulZeroOneClass.{u2} π (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1)))))) (AddZeroClass.toHasZero.{u1} E (AddMonoid.toAddZeroClass.{u1} E (AddCommMonoid.toAddMonoid.{u1} E (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)))) (Module.toMulActionWithZero.{u2, u1} π E (Ring.toSemiring.{u2} π (StrictOrderedRing.toRing.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (w i) (z i))) x)))))))))
+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} {x : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x (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)) -> (Exists.{succ (succ u2)} Type.{u2} (fun (ΞΉ : Type.{u2}) => Exists.{succ u2} (Fintype.{u2} ΞΉ) (fun (_x : Fintype.{u2} ΞΉ) => Exists.{succ u2} (ΞΉ -> E) (fun (z : ΞΉ -> E) => Exists.{max (succ u2) (succ u1)} (ΞΉ -> π) (fun (w : ΞΉ -> π) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) (fun (hss : HasSubset.Subset.{u2} (Set.{u2} E) (Set.instHasSubsetSet.{u2} E) (Set.range.{u2, succ u2} E ΞΉ z) s) => Exists.{0} (AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) (fun (hai : AffineIndependent.{u1, u2, u2, u2} π E E (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))) _inst_2 _inst_3 (addGroupIsAddTorsor.{u2} E (AddCommGroup.toAddGroup.{u2} E _inst_2)) ΞΉ z) => Exists.{0} (forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) (fun (hw : forall (i : ΞΉ), LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OfNat.ofNat.{u1} π 0 (Zero.toOfNat0.{u1} π (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))))) (w i)) => And (Eq.{succ u1} π (Finset.sum.{u1, u2} π ΞΉ (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => w i)) (OfNat.ofNat.{u1} π 1 (One.toOfNat1.{u1} π (NonAssocRing.toOne.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (Eq.{succ u2} E (Finset.sum.{u2, u2} E ΞΉ (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (Finset.univ.{u2} ΞΉ _x) (fun (i : ΞΉ) => HSMul.hSMul.{u1, u2, u2} π E E (instHSMul.{u1, u2} π E (SMulZeroClass.toSMul.{u1, u2} π E (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} π E (CommMonoidWithZero.toZero.{u1} π (CommGroupWithZero.toCommMonoidWithZero.{u1} π (Semifield.toCommGroupWithZero.{u1} π (LinearOrderedSemifield.toSemifield.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (NegZeroClass.toZero.{u2} E (SubNegZeroMonoid.toNegZeroClass.{u2} E (SubtractionMonoid.toSubNegZeroMonoid.{u2} E (SubtractionCommMonoid.toSubtractionMonoid.{u2} E (AddCommGroup.toDivisionAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{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) _inst_3))))) (w i) (z i))) x)))))))))
+Case conversion may be inaccurate. Consider using '#align eq_pos_convex_span_of_mem_convex_hull eq_pos_convex_span_of_mem_convexHullβ'. -/
/-- A more explicit version of `convex_hull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
β (ΞΉ : Sort (u + 1))(_ : Fintype ΞΉ),
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -80,7 +80,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
(β e in t.erase iβ, k e) = β e in t, k e := by
conv_rhs => rw [β insert_erase hiβ, sum_insert (not_mem_erase iβ t), hk, zero_add]
_ = β e in t, f e - f iβ / g iβ * g e := rfl
- _ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, mul_zero, sub_zero]
+ _ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, MulZeroClass.mul_zero, sub_zero]
refine' β¨β¨iβ, hiββ©, k, _, by convert ksum, _β©
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -97,7 +97,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
_ = β e in t, (f e - f iβ / g iβ * g e) β’ e := rfl
_ = t.centerMass f id := by
simp only [sub_smul, mul_smul, sum_sub_distrib, β smul_sum, gcombo, smul_zero, sub_zero,
- centerMass, fsum, inv_one, one_smul, id.def]
+ centerMass, fsum, inv_one, one_smul, id]
#align caratheodory.mem_convex_hull_erase Caratheodory.mem_convexHull_erase
variable {s : Set E} {x : E} (hx : x β convexHull π s)
@@ -77,7 +77,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
_ = β e in t, (f e - f iβ / g iβ * g e) := rfl
_ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, mul_zero, sub_zero]
refine' β¨β¨iβ, hiββ©, k, _, by convert ksum, _β©
- Β· simp only [k, and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
+ Β· simp only [k, and_imp, sub_nonneg, mem_erase, Ne, Subtype.coe_mk]
intro e _ het
by_cases hes : e β s
Β· have hge : 0 < g e := by
@@ -69,7 +69,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
exact mem.2
have hiβ : iβ β t := filter_subset _ _ mem
let k : E β π := fun z => f z - f iβ / g iβ * g z
- have hk : k iβ = 0 := by field_simp [ne_of_gt hg]
+ have hk : k iβ = 0 := by field_simp [k, ne_of_gt hg]
have ksum : β e in t.erase iβ, k e = 1 := by
calc
β e in t.erase iβ, k e = β e in t, k e := by
@@ -77,7 +77,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
_ = β e in t, (f e - f iβ / g iβ * g e) := rfl
_ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, mul_zero, sub_zero]
refine' β¨β¨iβ, hiββ©, k, _, by convert ksum, _β©
- Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
+ Β· simp only [k, and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
intro e _ het
by_cases hes : e β s
Β· have hge : 0 < g e := by
@@ -89,7 +89,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
_ β€ 0 := by
apply mul_nonpos_of_nonneg_of_nonpos
Β· apply div_nonneg (fpos iβ (mem_of_subset (filter_subset _ t) mem)) (le_of_lt hg)
- Β· simpa only [mem_filter, het, true_and_iff, not_lt] using hes
+ Β· simpa only [s, mem_filter, het, true_and_iff, not_lt] using hes
_ β€ f e := fpos e het
Β· rw [Subtype.coe_mk, centerMass_eq_of_sum_1 _ id ksum]
calc
β x β s, _
instead of β (x) (_ : x β s), _
(#9184)
Search for [ββ].*(_
and manually replace some occurrences with more readable versions.
In case of β
, the new expressions are defeq to the old ones.
In case of β
, they differ by exists_prop
.
In some rare cases, golf proofs that needed fixing.
@@ -166,8 +166,8 @@ theorem convexHull_eq_union : convexHull π s =
/-- A more explicit version of `convexHull_eq_union`. -/
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
β (ΞΉ : Sort (u + 1)) (_ : Fintype ΞΉ),
- β (z : ΞΉ β E) (w : ΞΉ β π) (_ : Set.range z β s) (_ : AffineIndependent π z)
- (_ : β i, 0 < w i), β i, w i = 1 β§ β i, w i β’ z i = x := by
+ β (z : ΞΉ β E) (w : ΞΉ β π), Set.range z β s β§ AffineIndependent π z β§ (β i, 0 < w i) β§
+ β i, w i = 1 β§ β i, w i β’ z i = x := by
rw [convexHull_eq_union] at hx
simp only [exists_prop, Set.mem_iUnion] at hx
obtain β¨t, htβ, htβ, htββ© := hx
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -75,7 +75,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
β e in t.erase iβ, k e = β e in t, k e := by
conv_rhs => rw [β insert_erase hiβ, sum_insert (not_mem_erase iβ t), hk, zero_add]
_ = β e in t, (f e - f iβ / g iβ * g e) := rfl
- _ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, MulZeroClass.mul_zero, sub_zero]
+ _ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, mul_zero, sub_zero]
refine' β¨β¨iβ, hiββ©, k, _, by convert ksum, _β©
Β· simp only [and_imp, sub_nonneg, mem_erase, Ne.def, Subtype.coe_mk]
intro e _ het
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -45,7 +45,7 @@ open BigOperators
universe u
-variable {π : Type _} {E : Type u} [LinearOrderedField π] [AddCommGroup E] [Module π E]
+variable {π : Type*} {E : Type u} [LinearOrderedField π] [AddCommGroup E] [Module π E]
namespace Caratheodory
@@ -2,16 +2,13 @@
Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Scott Morrison
-
-! This file was ported from Lean 3 source module analysis.convex.caratheodory
-! leanprover-community/mathlib commit e6fab1dc073396d45da082c644642c4f8bff2264
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Convex.Combination
import Mathlib.LinearAlgebra.AffineSpace.Independent
import Mathlib.Tactic.FieldSimp
+#align_import analysis.convex.caratheodory from "leanprover-community/mathlib"@"e6fab1dc073396d45da082c644642c4f8bff2264"
+
/-!
# CarathΓ©odory's convexity theorem
β'
precedence (#5615)
β
, β
and variants).([^a-zA-ZΞ±-ΟΞ-Ξ©'πβ³βπβ)]) \(([ββ][^()ββ]*,[^()ββ:]*)\) ([ββ=<β€])
replaced by $1 $2 $3
@@ -73,9 +73,9 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
have hiβ : iβ β t := filter_subset _ _ mem
let k : E β π := fun z => f z - f iβ / g iβ * g z
have hk : k iβ = 0 := by field_simp [ne_of_gt hg]
- have ksum : (β e in t.erase iβ, k e) = 1 := by
+ have ksum : β e in t.erase iβ, k e = 1 := by
calc
- (β e in t.erase iβ, k e) = β e in t, k e := by
+ β e in t.erase iβ, k e = β e in t, k e := by
conv_rhs => rw [β insert_erase hiβ, sum_insert (not_mem_erase iβ t), hk, zero_add]
_ = β e in t, (f e - f iβ / g iβ * g e) := rfl
_ = 1 := by rw [sum_sub_distrib, fsum, β mul_sum, gsum, MulZeroClass.mul_zero, sub_zero]
@@ -96,7 +96,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
_ β€ f e := fpos e het
Β· rw [Subtype.coe_mk, centerMass_eq_of_sum_1 _ id ksum]
calc
- (β e in t.erase iβ, k e β’ e) = β e in t, k e β’ e := sum_erase _ (by rw [hk, zero_smul])
+ β e in t.erase iβ, k e β’ e = β e in t, k e β’ e := sum_erase _ (by rw [hk, zero_smul])
_ = β e in t, (f e - f iβ / g iβ * g e) β’ e := rfl
_ = t.centerMass f id := by
simp only [sub_smul, mul_smul, sum_sub_distrib, β smul_sum, gcombo, smul_zero, sub_zero,
@@ -170,7 +170,7 @@ theorem convexHull_eq_union : convexHull π s =
theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π s) :
β (ΞΉ : Sort (u + 1)) (_ : Fintype ΞΉ),
β (z : ΞΉ β E) (w : ΞΉ β π) (_ : Set.range z β s) (_ : AffineIndependent π z)
- (_ : β i, 0 < w i), (β i, w i) = 1 β§ (β i, w i β’ z i) = x := by
+ (_ : β i, 0 < w i), β i, w i = 1 β§ β i, w i β’ z i = x := by
rw [convexHull_eq_union] at hx
simp only [exists_prop, Set.mem_iUnion] at hx
obtain β¨t, htβ, htβ, htββ© := hx
at
and goals (#5387)
Changes are of the form
some_tactic at hβ’
-> some_tactic at h β’
some_tactic at h
-> some_tactic at h
@@ -57,7 +57,7 @@ then it is in the convex hull of a strict subset of `t`. -/
theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndependent π ((β) : t β E))
{x : E} (m : x β convexHull π (βt : Set E)) :
β y : (βt : Set E), x β convexHull π (β(t.erase y) : Set E) := by
- simp only [Finset.convexHull_eq, mem_setOf_eq] at mβ’
+ simp only [Finset.convexHull_eq, mem_setOf_eq] at m β’
obtain β¨f, fpos, fsum, rflβ© := m
obtain β¨g, gcombo, gsum, gposβ© := exists_nontrivial_relation_sum_zero_of_not_affine_ind h
replace gpos := exists_pos_of_sum_zero_of_exists_nonzero g gsum gpos
LinearOrder
decidable fields (#4006)
This renames
decidable_eq
to decidableEq
decidable_lt
to decidableLT
decidable_le
to decidableLE
decidableLT_of_decidableLE
to decidableLTOfDecidableLE
decidableEq_of_decidableLE
to decidableEqOfDecidableLE
These fields are data not proofs, so they should be lowerCamelCased
.
@@ -62,7 +62,7 @@ theorem mem_convexHull_erase [DecidableEq E] {t : Finset E} (h : Β¬AffineIndepen
obtain β¨g, gcombo, gsum, gposβ© := exists_nontrivial_relation_sum_zero_of_not_affine_ind h
replace gpos := exists_pos_of_sum_zero_of_exists_nonzero g gsum gpos
clear h
- let s := @Finset.filter _ (fun z => 0 < g z) (fun _ => LinearOrder.decidable_lt _ _) t
+ let s := @Finset.filter _ (fun z => 0 < g z) (fun _ => LinearOrder.decidableLT _ _) t
obtain β¨iβ, mem, wβ© : β iβ β s, β i β s, f iβ / g iβ β€ f i / g i := by
apply s.exists_min_image fun z => f z / g z
obtain β¨x, hx, hgxβ© : β x β t, 0 < g x := gpos
sSup
/iSup
(#3938)
As discussed on Zulip
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>
@@ -109,7 +109,7 @@ variable {s : Set E} {x : E} (hx : x β convexHull π s)
cardinality, whose convex hull contains `x`. -/
noncomputable def minCardFinsetOfMemConvexHull : Finset E :=
Function.argminOn Finset.card Nat.lt_wfRel.2 { t | βt β s β§ x β convexHull π (t : Set E) } <| by
- simpa only [convexHull_eq_union_convexHull_finite_subsets s, exists_prop, mem_unionα΅’] using hx
+ simpa only [convexHull_eq_union_convexHull_finite_subsets s, exists_prop, mem_iUnion] using hx
#align caratheodory.min_card_finset_of_mem_convex_hull Caratheodory.minCardFinsetOfMemConvexHull
theorem minCardFinsetOfMemConvexHull_subseteq : β(minCardFinsetOfMemConvexHull hx) β s :=
@@ -157,12 +157,12 @@ theorem convexHull_eq_union : convexHull π s =
β (t : Finset E) (hss : βt β s) (hai : AffineIndependent π ((β) : t β E)), convexHull π βt := by
apply Set.Subset.antisymm
Β· intro x hx
- simp only [exists_prop, Set.mem_unionα΅’]
+ simp only [exists_prop, Set.mem_iUnion]
exact β¨Caratheodory.minCardFinsetOfMemConvexHull hx,
Caratheodory.minCardFinsetOfMemConvexHull_subseteq hx,
Caratheodory.affineIndependent_minCardFinsetOfMemConvexHull hx,
Caratheodory.mem_minCardFinsetOfMemConvexHull hxβ©
- Β· iterate 3 convert Set.unionα΅’_subset _; intro
+ Β· iterate 3 convert Set.iUnion_subset _; intro
exact convexHull_mono βΉ_βΊ
#align convex_hull_eq_union convexHull_eq_union
@@ -172,7 +172,7 @@ theorem eq_pos_convex_span_of_mem_convexHull {x : E} (hx : x β convexHull π
β (z : ΞΉ β E) (w : ΞΉ β π) (_ : Set.range z β s) (_ : AffineIndependent π z)
(_ : β i, 0 < w i), (β i, w i) = 1 β§ (β i, w i β’ z i) = x := by
rw [convexHull_eq_union] at hx
- simp only [exists_prop, Set.mem_unionα΅’] at hx
+ simp only [exists_prop, Set.mem_iUnion] at hx
obtain β¨t, htβ, htβ, htββ© := hx
simp only [t.convexHull_eq, exists_prop, Set.mem_setOf_eq] at htβ
obtain β¨w, hwβ, hwβ, hwββ© := htβ
The unported dependencies are