analysis.convex.stone_separation
β·
Mathlib.Analysis.Convex.StoneSeparation
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -39,12 +39,12 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
rw [not_disjoint_iff]
obtain β¨az, bz, haz, hbz, habz, rflβ© := hz
obtain rfl | haz' := haz.eq_or_lt
- Β· rw [zero_add] at habz
+ Β· rw [zero_add] at habz
rw [zero_smul, zero_add, habz, one_smul]
refine' β¨v, right_mem_segment _ _ _, segment_subset_convexHull _ _ hvβ© <;> simp
obtain β¨av, bv, hav, hbv, habv, rflβ© := hv
obtain rfl | hav' := hav.eq_or_lt
- Β· rw [zero_add] at habv
+ Β· rw [zero_add] at habv
rw [zero_smul, zero_add, habv, one_smul]
exact β¨q, right_mem_segment _ _ _, subset_convexHull _ _ <| by simpβ©
obtain β¨au, bu, hau, hbu, habu, rflβ© := hu
@@ -120,7 +120,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
by_contra! h
suffices h : Disjoint (convexHull π (insert c C)) t
Β· rw [β
- hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
+ hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
exact hc (subset_convexHull _ _ <| mem_insert _ _)
rw [convexHull_insert β¨z, hzCβ©, convexJoin_singleton_left]
refine' disjoint_Unionβ_left.2 fun a ha => disjoint_iff_inf_le.mpr fun b hb => h a _ β¨b, hbβ©
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -59,6 +59,37 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· rw [β add_div, div_self hab.ne']
rw [smul_add, smul_add, add_add_add_comm, add_comm, β mul_smul, β mul_smul]
classical
+ let w : Fin 3 β π := ![az * av * bu, bz * au * bv, au * av]
+ let z : Fin 3 β E := ![p, q, az β’ x + bz β’ y]
+ have hwβ : β i, 0 β€ w i := by
+ rintro i
+ fin_cases i
+ Β· exact mul_nonneg (mul_nonneg haz hav) hbu
+ Β· exact mul_nonneg (mul_nonneg hbz hau) hbv
+ Β· exact mul_nonneg hau hav
+ have hw : β i, w i = az * av + bz * au :=
+ by
+ trans az * av * bu + (bz * au * bv + au * av)
+ Β· simp [w, Fin.sum_univ_succ, Fin.sum_univ_zero]
+ rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
+ mul_assoc, β mul_add, mul_comm av, β add_mul, β mul_add, add_comm bu, add_comm bv, habu, habv,
+ one_mul, mul_one]
+ have hz : β i, z i β ({p, q, az β’ x + bz β’ y} : Set E) :=
+ by
+ rintro i
+ fin_cases i <;> simp [z]
+ convert
+ Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i) (by rwa [hw])
+ fun i _ => hz i
+ rw [Finset.centerMass]
+ simp_rw [div_eq_inv_mul, hw, mul_assoc, mul_smul (az * av + bz * au)β»ΒΉ, β smul_add, add_assoc, β
+ mul_assoc]
+ congr 3
+ rw [β mul_smul, β mul_rotate, mul_right_comm, mul_smul, β mul_smul _ av, mul_rotate,
+ mul_smul _ bz, β smul_add]
+ simp only [List.map, List.pmap, Nat.add_def, add_zero, Fin.mk_bit0, Fin.mk_one, List.foldr_cons,
+ List.foldr_nil]
+ rfl
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -59,37 +59,6 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· rw [β add_div, div_self hab.ne']
rw [smul_add, smul_add, add_add_add_comm, add_comm, β mul_smul, β mul_smul]
classical
- let w : Fin 3 β π := ![az * av * bu, bz * au * bv, au * av]
- let z : Fin 3 β E := ![p, q, az β’ x + bz β’ y]
- have hwβ : β i, 0 β€ w i := by
- rintro i
- fin_cases i
- Β· exact mul_nonneg (mul_nonneg haz hav) hbu
- Β· exact mul_nonneg (mul_nonneg hbz hau) hbv
- Β· exact mul_nonneg hau hav
- have hw : β i, w i = az * av + bz * au :=
- by
- trans az * av * bu + (bz * au * bv + au * av)
- Β· simp [w, Fin.sum_univ_succ, Fin.sum_univ_zero]
- rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
- mul_assoc, β mul_add, mul_comm av, β add_mul, β mul_add, add_comm bu, add_comm bv, habu, habv,
- one_mul, mul_one]
- have hz : β i, z i β ({p, q, az β’ x + bz β’ y} : Set E) :=
- by
- rintro i
- fin_cases i <;> simp [z]
- convert
- Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i) (by rwa [hw])
- fun i _ => hz i
- rw [Finset.centerMass]
- simp_rw [div_eq_inv_mul, hw, mul_assoc, mul_smul (az * av + bz * au)β»ΒΉ, β smul_add, add_assoc, β
- mul_assoc]
- congr 3
- rw [β mul_smul, β mul_rotate, mul_right_comm, mul_smul, β mul_smul _ av, mul_rotate,
- mul_smul _ bz, β smul_add]
- simp only [List.map, List.pmap, Nat.add_def, add_zero, Fin.mk_bit0, Fin.mk_one, List.foldr_cons,
- List.foldr_nil]
- rfl
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -117,7 +117,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
(hC.2.symm.mono (ht.segment_subset hut hvt) <| convexHull_min _ hC.1)
simp [insert_subset, hp, hq, singleton_subset_iff.2 hzC]
rintro c hc
- by_contra' h
+ by_contra! h
suffices h : Disjoint (convexHull π (insert c C)) t
Β· rw [β
hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-/
-import Mathbin.Analysis.Convex.Join
+import Analysis.Convex.Join
#align_import analysis.convex.stone_separation from "leanprover-community/mathlib"@"f2b757fc5c341d88741b9c4630b1e8ba973c5726"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module analysis.convex.stone_separation
-! leanprover-community/mathlib commit f2b757fc5c341d88741b9c4630b1e8ba973c5726
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Convex.Join
+#align_import analysis.convex.stone_separation from "leanprover-community/mathlib"@"f2b757fc5c341d88741b9c4630b1e8ba973c5726"
+
/-!
# Stone's separation theorem
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -31,6 +31,7 @@ open scoped BigOperators
variable {π E ΞΉ : Type _} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
+#print not_disjoint_segment_convexHull_triple /-
/-- In a tetrahedron with vertices `x`, `y`, `p`, `q`, any segment `[u, v]` joining the opposite
edges `[x, p]` and `[y, q]` passes through any triangle of vertices `p`, `q`, `z` where
`z β [x, y]`. -/
@@ -93,7 +94,9 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
List.foldr_nil]
rfl
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
+-/
+#print exists_convex_convex_compl_subset /-
/-- **Stone's Separation Theorem** -/
theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π t) (hst : Disjoint s t) :
β C : Set E, Convex π C β§ Convex π (CαΆ) β§ s β C β§ t β CαΆ :=
@@ -126,4 +129,5 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
refine' disjoint_Unionβ_left.2 fun a ha => disjoint_iff_inf_le.mpr fun b hb => h a _ β¨b, hbβ©
rwa [β hC.1.convexHull_eq]
#align exists_convex_convex_compl_subset exists_convex_convex_compl_subset
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -69,7 +69,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· exact mul_nonneg (mul_nonneg haz hav) hbu
Β· exact mul_nonneg (mul_nonneg hbz hau) hbv
Β· exact mul_nonneg hau hav
- have hw : (β i, w i) = az * av + bz * au :=
+ have hw : β i, w i = az * av + bz * au :=
by
trans az * av * bu + (bz * au * bv + au * av)
Β· simp [w, Fin.sum_univ_succ, Fin.sum_univ_zero]
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -61,43 +61,44 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· rw [β add_div, div_self hab.ne']
rw [smul_add, smul_add, add_add_add_comm, add_comm, β mul_smul, β mul_smul]
classical
- let w : Fin 3 β π := ![az * av * bu, bz * au * bv, au * av]
- let z : Fin 3 β E := ![p, q, az β’ x + bz β’ y]
- have hwβ : β i, 0 β€ w i := by
- rintro i
- fin_cases i
- Β· exact mul_nonneg (mul_nonneg haz hav) hbu
- Β· exact mul_nonneg (mul_nonneg hbz hau) hbv
- Β· exact mul_nonneg hau hav
- have hw : (β i, w i) = az * av + bz * au :=
- by
- trans az * av * bu + (bz * au * bv + au * av)
- Β· simp [w, Fin.sum_univ_succ, Fin.sum_univ_zero]
- rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
- mul_assoc, β mul_add, mul_comm av, β add_mul, β mul_add, add_comm bu, add_comm bv, habu,
- habv, one_mul, mul_one]
- have hz : β i, z i β ({p, q, az β’ x + bz β’ y} : Set E) :=
- by
- rintro i
- fin_cases i <;> simp [z]
- convert Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i)
- (by rwa [hw]) fun i _ => hz i
- rw [Finset.centerMass]
- simp_rw [div_eq_inv_mul, hw, mul_assoc, mul_smul (az * av + bz * au)β»ΒΉ, β smul_add, add_assoc, β
- mul_assoc]
- congr 3
- rw [β mul_smul, β mul_rotate, mul_right_comm, mul_smul, β mul_smul _ av, mul_rotate,
- mul_smul _ bz, β smul_add]
- simp only [List.map, List.pmap, Nat.add_def, add_zero, Fin.mk_bit0, Fin.mk_one, List.foldr_cons,
- List.foldr_nil]
- rfl
+ let w : Fin 3 β π := ![az * av * bu, bz * au * bv, au * av]
+ let z : Fin 3 β E := ![p, q, az β’ x + bz β’ y]
+ have hwβ : β i, 0 β€ w i := by
+ rintro i
+ fin_cases i
+ Β· exact mul_nonneg (mul_nonneg haz hav) hbu
+ Β· exact mul_nonneg (mul_nonneg hbz hau) hbv
+ Β· exact mul_nonneg hau hav
+ have hw : (β i, w i) = az * av + bz * au :=
+ by
+ trans az * av * bu + (bz * au * bv + au * av)
+ Β· simp [w, Fin.sum_univ_succ, Fin.sum_univ_zero]
+ rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
+ mul_assoc, β mul_add, mul_comm av, β add_mul, β mul_add, add_comm bu, add_comm bv, habu, habv,
+ one_mul, mul_one]
+ have hz : β i, z i β ({p, q, az β’ x + bz β’ y} : Set E) :=
+ by
+ rintro i
+ fin_cases i <;> simp [z]
+ convert
+ Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i) (by rwa [hw])
+ fun i _ => hz i
+ rw [Finset.centerMass]
+ simp_rw [div_eq_inv_mul, hw, mul_assoc, mul_smul (az * av + bz * au)β»ΒΉ, β smul_add, add_assoc, β
+ mul_assoc]
+ congr 3
+ rw [β mul_smul, β mul_rotate, mul_right_comm, mul_smul, β mul_smul _ av, mul_rotate,
+ mul_smul _ bz, β smul_add]
+ simp only [List.map, List.pmap, Nat.add_def, add_zero, Fin.mk_bit0, Fin.mk_one, List.foldr_cons,
+ List.foldr_nil]
+ rfl
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
/-- **Stone's Separation Theorem** -/
theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π t) (hst : Disjoint s t) :
β C : Set E, Convex π C β§ Convex π (CαΆ) β§ s β C β§ t β CαΆ :=
by
- let S : Set (Set E) := { C | Convex π C β§ Disjoint C t }
+ let S : Set (Set E) := {C | Convex π C β§ Disjoint C t}
obtain β¨C, hC, hsC, hCmaxβ© :=
zorn_subset_nonempty S
(fun c hcS hc β¨t, htβ© =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -41,12 +41,12 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
rw [not_disjoint_iff]
obtain β¨az, bz, haz, hbz, habz, rflβ© := hz
obtain rfl | haz' := haz.eq_or_lt
- Β· rw [zero_add] at habz
+ Β· rw [zero_add] at habz
rw [zero_smul, zero_add, habz, one_smul]
refine' β¨v, right_mem_segment _ _ _, segment_subset_convexHull _ _ hvβ© <;> simp
obtain β¨av, bv, hav, hbv, habv, rflβ© := hv
obtain rfl | hav' := hav.eq_or_lt
- Β· rw [zero_add] at habv
+ Β· rw [zero_add] at habv
rw [zero_smul, zero_add, habv, one_smul]
exact β¨q, right_mem_segment _ _ _, subset_convexHull _ _ <| by simpβ©
obtain β¨au, bu, hau, hbu, habu, rflβ© := hu
@@ -119,7 +119,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
by_contra' h
suffices h : Disjoint (convexHull π (insert c C)) t
Β· rw [β
- hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
+ hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
exact hc (subset_convexHull _ _ <| mem_insert _ _)
rw [convexHull_insert β¨z, hzCβ©, convexJoin_singleton_left]
refine' disjoint_Unionβ_left.2 fun a ha => disjoint_iff_inf_le.mpr fun b hb => h a _ β¨b, hbβ©
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -27,7 +27,7 @@ complement is convex.
open Set
-open BigOperators
+open scoped BigOperators
variable {π E ΞΉ : Type _} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -31,9 +31,6 @@ open BigOperators
variable {π E ΞΉ : Type _} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
-/- warning: not_disjoint_segment_convex_hull_triple -> not_disjoint_segment_convexHull_triple is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_tripleβ'. -/
/-- In a tetrahedron with vertices `x`, `y`, `p`, `q`, any segment `[u, v]` joining the opposite
edges `[x, p]` and `[y, q]` passes through any triangle of vertices `p`, `q`, `z` where
`z β [x, y]`. -/
@@ -96,9 +93,6 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
rfl
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
-/- warning: exists_convex_convex_compl_subset -> exists_convex_convex_compl_subset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align exists_convex_convex_compl_subset exists_convex_convex_compl_subsetβ'. -/
/-- **Stone's Separation Theorem** -/
theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π t) (hst : Disjoint s t) :
β C : Set E, Convex π C β§ Convex π (CαΆ) β§ s β C β§ t β CαΆ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -32,10 +32,7 @@ open BigOperators
variable {π E ΞΉ : Type _} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
/- warning: not_disjoint_segment_convex_hull_triple -> not_disjoint_segment_convexHull_triple is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {p : E} {q : E} {u : E} {v : E} {x : E} {y : E} {z : E}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) z (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) x y)) -> (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) u (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) x p)) -> (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) v (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) y q)) -> (Not (Disjoint.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} E) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E))) (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) u v) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.hasInsert.{u2} E) p (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.hasInsert.{u2} E) q (Singleton.singleton.{u2, u2} E (Set.{u2} E) (Set.hasSingleton.{u2} E) z))))))
-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)] {p : E} {q : E} {u : E} {v : E} {x : E} {y : E} {z : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) z (segment.{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) (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)))) x y)) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) u (segment.{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) (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)))) x p)) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) v (segment.{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) (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)))) y q)) -> (Not (Disjoint.{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)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} E) (Preorder.toLE.{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)))))))) (CompleteLattice.toBoundedOrder.{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)))))) (segment.{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) (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)))) u v) (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)) (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.instInsertSet.{u2} E) p (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.instInsertSet.{u2} E) q (Singleton.singleton.{u2, u2} E (Set.{u2} E) (Set.instSingletonSet.{u2} E) z))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_tripleβ'. -/
/-- In a tetrahedron with vertices `x`, `y`, `p`, `q`, any segment `[u, v]` joining the opposite
edges `[x, p]` and `[y, q]` passes through any triangle of vertices `p`, `q`, `z` where
@@ -100,10 +97,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
/- warning: exists_convex_convex_compl_subset -> exists_convex_convex_compl_subset is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) -> (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t) -> (Disjoint.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} E) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E))) s t) -> (Exists.{succ u2} (Set.{u2} E) (fun (C : Set.{u2} E) => And (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) C) (And (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (HasCompl.compl.{u2} (Set.{u2} E) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E)) C)) (And (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s C) (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) t (HasCompl.compl.{u2} (Set.{u2} E) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E)) C))))))
-but is expected to have type
- forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {t : Set.{u1} E}, (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) -> (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) t) -> (Disjoint.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} E) (Preorder.toLE.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E)))))) s t) -> (Exists.{succ u1} (Set.{u1} E) (fun (C : Set.{u1} E) => And (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) C) (And (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (HasCompl.compl.{u1} (Set.{u1} E) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} E) (Set.instBooleanAlgebraSet.{u1} E)) C)) (And (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) s C) (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) t (HasCompl.compl.{u1} (Set.{u1} E) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} E) (Set.instBooleanAlgebraSet.{u1} E)) C))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align exists_convex_convex_compl_subset exists_convex_convex_compl_subsetβ'. -/
/-- **Stone's Separation Theorem** -/
theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π t) (hst : Disjoint s t) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/86d04064ca33ee3d3405fbfc497d494fd2dd4796
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
! This file was ported from Lean 3 source module analysis.convex.stone_separation
-! leanprover-community/mathlib commit 6ca1a09bc9aa75824bf97388c9e3b441fc4ccf3f
+! leanprover-community/mathlib commit f2b757fc5c341d88741b9c4630b1e8ba973c5726
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Analysis.Convex.Join
/-!
# Stone's separation theorem
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file prove Stone's separation theorem. This tells us that any two disjoint convex sets can be
separated by a convex set whose complement is also convex.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9b2b58d6b14b895b2f375108e765cb47de71aebd
@@ -28,6 +28,12 @@ open BigOperators
variable {π E ΞΉ : Type _} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
+/- warning: not_disjoint_segment_convex_hull_triple -> not_disjoint_segment_convexHull_triple is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {p : E} {q : E} {u : E} {v : E} {x : E} {y : E} {z : E}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) z (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) x y)) -> (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) u (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) x p)) -> (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) v (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) y q)) -> (Not (Disjoint.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} E) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E))) (segment.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) u v) (coeFn.{succ u2, succ u2} (ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (fun (_x : ClosureOperator.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) => (Set.{u2} E) -> (Set.{u2} E)) (ClosureOperator.hasCoeToFun.{u2} (Set.{u2} E) (PartialOrder.toPreorder.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))))) (convexHull.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3) (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.hasInsert.{u2} E) p (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.hasInsert.{u2} E) q (Singleton.singleton.{u2, u2} E (Set.{u2} E) (Set.hasSingleton.{u2} E) z))))))
+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)] {p : E} {q : E} {u : E} {v : E} {x : E} {y : E} {z : E}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) z (segment.{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) (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)))) x y)) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) u (segment.{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) (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)))) x p)) -> (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) v (segment.{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) (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)))) y q)) -> (Not (Disjoint.{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)))))) (BoundedOrder.toOrderBot.{u2} (Set.{u2} E) (Preorder.toLE.{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)))))))) (CompleteLattice.toBoundedOrder.{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)))))) (segment.{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) (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)))) u v) (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)) (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.instInsertSet.{u2} E) p (Insert.insert.{u2, u2} E (Set.{u2} E) (Set.instInsertSet.{u2} E) q (Singleton.singleton.{u2, u2} E (Set.{u2} E) (Set.instSingletonSet.{u2} E) z))))))
+Case conversion may be inaccurate. Consider using '#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_tripleβ'. -/
/-- In a tetrahedron with vertices `x`, `y`, `p`, `q`, any segment `[u, v]` joining the opposite
edges `[x, p]` and `[y, q]` passes through any triangle of vertices `p`, `q`, `z` where
`z β [x, y]`. -/
@@ -90,6 +96,12 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
rfl
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
+/- warning: exists_convex_convex_compl_subset -> exists_convex_convex_compl_subset is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : AddCommGroup.{u2} E] [_inst_3 : Module.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)] {s : Set.{u2} E} {t : Set.{u2} E}, (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) s) -> (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) t) -> (Disjoint.{u2} (Set.{u2} E) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} E) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} E) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} E) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} E) (Set.completeBooleanAlgebra.{u2} E)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u2} (Set.{u2} E) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E))) s t) -> (Exists.{succ u2} (Set.{u2} E) (fun (C : Set.{u2} E) => And (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) C) (And (Convex.{u1, u2} π E (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (AddCommGroup.toAddCommMonoid.{u2} E _inst_2)))) (Module.toMulActionWithZero.{u1, u2} π E (Ring.toSemiring.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u2} E _inst_2) _inst_3)))) (HasCompl.compl.{u2} (Set.{u2} E) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E)) C)) (And (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) s C) (HasSubset.Subset.{u2} (Set.{u2} E) (Set.hasSubset.{u2} E) t (HasCompl.compl.{u2} (Set.{u2} E) (BooleanAlgebra.toHasCompl.{u2} (Set.{u2} E) (Set.booleanAlgebra.{u2} E)) C))))))
+but is expected to have type
+ forall {π : Type.{u2}} {E : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : AddCommGroup.{u1} E] [_inst_3 : Module.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2)] {s : Set.{u1} E} {t : Set.{u1} E}, (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) s) -> (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) t) -> (Disjoint.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} E) (Preorder.toLE.{u1} (Set.{u1} E) (PartialOrder.toPreorder.{u1} (Set.{u1} E) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Set.{u1} E) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} E) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} E) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} E) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} E) (Set.instCompleteBooleanAlgebraSet.{u1} E)))))) s t) -> (Exists.{succ u1} (Set.{u1} E) (fun (C : Set.{u1} E) => And (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) C) (And (Convex.{u2, u1} π E (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) (SMulZeroClass.toSMul.{u2, u1} π E (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (SMulWithZero.toSMulZeroClass.{u2, u1} π E (CommMonoidWithZero.toZero.{u2} π (CommGroupWithZero.toCommMonoidWithZero.{u2} π (Semifield.toCommGroupWithZero.{u2} π (LinearOrderedSemifield.toSemifield.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u2, u1} π E (Semiring.toMonoidWithZero.{u2} π (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (NegZeroClass.toZero.{u1} E (SubNegZeroMonoid.toNegZeroClass.{u1} E (SubtractionMonoid.toSubNegZeroMonoid.{u1} E (SubtractionCommMonoid.toSubtractionMonoid.{u1} E (AddCommGroup.toDivisionAddCommMonoid.{u1} E _inst_2))))) (Module.toMulActionWithZero.{u2, u1} π E (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} E _inst_2) _inst_3)))) (HasCompl.compl.{u1} (Set.{u1} E) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} E) (Set.instBooleanAlgebraSet.{u1} E)) C)) (And (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) s C) (HasSubset.Subset.{u1} (Set.{u1} E) (Set.instHasSubsetSet.{u1} E) t (HasCompl.compl.{u1} (Set.{u1} E) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} E) (Set.instBooleanAlgebraSet.{u1} E)) C))))))
+Case conversion may be inaccurate. Consider using '#align exists_convex_convex_compl_subset exists_convex_convex_compl_subsetβ'. -/
/-- **Stone's Separation Theorem** -/
theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π t) (hst : Disjoint s t) :
β C : Set E, Convex π C β§ Convex π (CαΆ) β§ s β C β§ t β CαΆ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -77,8 +77,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
by
rintro i
fin_cases i <;> simp [z]
- convert
- Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i)
+ convert Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i)
(by rwa [hw]) fun i _ => hz i
rw [Finset.centerMass]
simp_rw [div_eq_inv_mul, hw, mul_assoc, mul_smul (az * av + bz * au)β»ΒΉ, β smul_add, add_assoc, β
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -60,11 +60,11 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· exact mul_nonneg hau hav
have hw : β i, w i = az * av + bz * au := by
trans az * av * bu + (bz * au * bv + au * av)
- Β· simp [Fin.sum_univ_succ, Fin.sum_univ_zero]
+ Β· simp [w, Fin.sum_univ_succ, Fin.sum_univ_zero]
rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
mul_assoc, β mul_add, mul_comm av, β add_mul, β mul_add, add_comm bu, add_comm bv, habu,
habv, one_mul, mul_one]
- have hz : β i, z i β ({p, q, az β’ x + bz β’ y} : Set E) := fun i => by fin_cases i <;> simp
+ have hz : β i, z i β ({p, q, az β’ x + bz β’ y} : Set E) := fun i => by fin_cases i <;> simp [z]
convert Finset.centerMass_mem_convexHull (Finset.univ : Finset (Fin 3)) (fun i _ => hwβ i)
(by rwa [hw]) fun i _ => hz i
rw [Finset.centerMass]
@@ -73,7 +73,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
congr 3
rw [β mul_smul, β mul_rotate, mul_right_comm, mul_smul, β mul_smul _ av, mul_rotate,
mul_smul _ bz, β smul_add]
- simp only [smul_add, List.foldr, Matrix.cons_val_succ', Fin.mk_one,
+ simp only [w, z, smul_add, List.foldr, Matrix.cons_val_succ', Fin.mk_one,
Matrix.cons_val_one, Matrix.head_cons, add_zero]
#align not_disjoint_segment_convex_hull_triple not_disjoint_segment_convexHull_triple
@@ -97,7 +97,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
refine'
not_disjoint_segment_convexHull_triple hz hu hv
(hC.2.symm.mono (ht.segment_subset hut hvt) <| convexHull_min _ hC.1)
- simpa [insert_subset_iff, hp, hq, singleton_subset_iff.2 hzC]
+ simp [insert_subset_iff, hp, hq, singleton_subset_iff.2 hzC]
rintro c hc
by_contra! h
suffices h : Disjoint (convexHull π (insert c C)) t by
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -91,8 +91,8 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
s β¨hs, hstβ©
refine'
β¨C, hC.1, convex_iff_segment_subset.2 fun x hx y hy z hz hzC => _, hsC, hC.2.subset_compl_leftβ©
- suffices h : β c β CαΆ, β a β C, (segment π c a β© t).Nonempty
- Β· obtain β¨p, hp, u, hu, hutβ© := h x hx
+ suffices h : β c β CαΆ, β a β C, (segment π c a β© t).Nonempty by
+ obtain β¨p, hp, u, hu, hutβ© := h x hx
obtain β¨q, hq, v, hv, hvtβ© := h y hy
refine'
not_disjoint_segment_convexHull_triple hz hu hv
@@ -100,8 +100,8 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
simpa [insert_subset_iff, hp, hq, singleton_subset_iff.2 hzC]
rintro c hc
by_contra! h
- suffices h : Disjoint (convexHull π (insert c C)) t
- Β· rw [β
+ suffices h : Disjoint (convexHull π (insert c C)) t by
+ rw [β
hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
exact hc (subset_convexHull _ _ <| mem_insert _ _)
rw [convexHull_insert β¨z, hzCβ©, convexJoin_singleton_left]
@@ -3,6 +3,7 @@ Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-/
+import Mathlib.Analysis.Convex.Combination
import Mathlib.Analysis.Convex.Join
#align_import analysis.convex.stone_separation from "leanprover-community/mathlib"@"6ca1a09bc9aa75824bf97388c9e3b441fc4ccf3f"
@@ -41,15 +41,12 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
rw [zero_smul, zero_add, habv, one_smul]
exact β¨q, right_mem_segment _ _ _, subset_convexHull _ _ <| by simpβ©
obtain β¨au, bu, hau, hbu, habu, rflβ© := hu
- have hab : 0 < az * av + bz * au :=
- add_pos_of_pos_of_nonneg (mul_pos haz' hav') (mul_nonneg hbz hau)
- refine'
- β¨(az * av / (az * av + bz * au)) β’ (au β’ x + bu β’ p) +
- (bz * au / (az * av + bz * au)) β’ (av β’ y + bv β’ q),
- β¨_, _, _, _, _, rflβ©, _β©
- Β· exact div_nonneg (mul_nonneg haz hav) hab.le
- Β· exact div_nonneg (mul_nonneg hbz hau) hab.le
- Β· rw [β add_div, div_self hab.ne']
+ have hab : 0 < az * av + bz * au := by positivity
+ refine β¨(az * av / (az * av + bz * au)) β’ (au β’ x + bu β’ p) +
+ (bz * au / (az * av + bz * au)) β’ (av β’ y + bv β’ q), β¨_, _, ?_, ?_, ?_, rflβ©, ?_β©
+ Β· positivity
+ Β· positivity
+ Β· rw [β add_div, div_self]; positivity
rw [smul_add, smul_add, add_add_add_comm, add_comm, β mul_smul, β mul_smul]
classical
let w : Fin 3 β π := ![az * av * bu, bz * au * bv, au * av]
@@ -101,7 +101,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
(hC.2.symm.mono (ht.segment_subset hut hvt) <| convexHull_min _ hC.1)
simpa [insert_subset_iff, hp, hq, singleton_subset_iff.2 hzC]
rintro c hc
- by_contra' h
+ by_contra! h
suffices h : Disjoint (convexHull π (insert c C)) t
Β· rw [β
hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
@@ -107,6 +107,6 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
exact hc (subset_convexHull _ _ <| mem_insert _ _)
rw [convexHull_insert β¨z, hzCβ©, convexJoin_singleton_left]
- refine' disjoint_iUnionβ_left.2 fun a ha => disjoint_iff_inf_le.mpr fun b hb => h a _ β¨b, hbβ©
+ refine disjoint_iUnionβ_left.2 fun a ha => disjoint_iff_inter_eq_empty.2 (h a ?_)
rwa [β hC.1.convexHull_eq]
#align exists_convex_convex_compl_subset exists_convex_convex_compl_subset
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -21,7 +21,7 @@ complement is convex.
open Set BigOperators
-variable {π E ΞΉ : Type _} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
+variable {π E ΞΉ : Type*} [LinearOrderedField π] [AddCommGroup E] [Module π E] {s t : Set E}
/-- In a tetrahedron with vertices `x`, `y`, `p`, `q`, any segment `[u, v]` joining the opposite
edges `[x, p]` and `[y, q]` passes through any triangle of vertices `p`, `q`, `z` where
@@ -10,7 +10,7 @@ import Mathlib.Analysis.Convex.Join
/-!
# Stone's separation theorem
-This file prove Stone's separation theorem. This tells us that any two disjoint convex sets can be
+This file proves Stone's separation theorem. This tells us that any two disjoint convex sets can be
separated by a convex set whose complement is also convex.
In locally convex real topological vector spaces, the Hahn-Banach separation theorems provide
@@ -2,14 +2,11 @@
Copyright (c) 2022 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module analysis.convex.stone_separation
-! leanprover-community/mathlib commit 6ca1a09bc9aa75824bf97388c9e3b441fc4ccf3f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Convex.Join
+#align_import analysis.convex.stone_separation from "leanprover-community/mathlib"@"6ca1a09bc9aa75824bf97388c9e3b441fc4ccf3f"
+
/-!
# Stone's separation theorem
@@ -90,7 +90,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
zorn_subset_nonempty S
(fun c hcS hc β¨_, _β© =>
β¨ββ c,
- β¨hc.directedOn.convex_sUnion fun s hs => (hcS hs).1,
+ β¨hc.directedOn.convex_sUnion fun s hs => (hcS hs).1,
disjoint_sUnion_left.2 fun c hc => (hcS hc).2β©,
fun s => subset_sUnion_of_memβ©)
s β¨hs, hstβ©
This PR is the result of running
find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1Β· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +Β·)\n +(.*)$/\1 \2/;P;D' {} \;
which firstly replaces .
focusing dots with Β·
and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.
@@ -65,7 +65,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· exact mul_nonneg hau hav
have hw : β i, w i = az * av + bz * au := by
trans az * av * bu + (bz * au * bv + au * av)
- . simp [Fin.sum_univ_succ, Fin.sum_univ_zero]
+ Β· simp [Fin.sum_univ_succ, Fin.sum_univ_zero]
rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
mul_assoc, β mul_add, mul_comm av, β add_mul, β mul_add, add_comm bu, add_comm bv, habu,
habv, one_mul, mul_one]
β'
precedence (#5615)
β
, β
and variants).([^a-zA-ZΞ±-ΟΞ-Ξ©'πβ³βπβ)]) \(([ββ][^()ββ]*,[^()ββ:]*)\) ([ββ=<β€])
replaced by $1 $2 $3
@@ -63,7 +63,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
Β· exact mul_nonneg (mul_nonneg haz hav) hbu
Β· exact mul_nonneg (mul_nonneg hbz hau) hbv
Β· exact mul_nonneg hau hav
- have hw : (β i, w i) = az * av + bz * au := by
+ have hw : β i, w i = az * av + bz * au := by
trans az * av * bu + (bz * au * bv + au * av)
. simp [Fin.sum_univ_succ, Fin.sum_univ_zero]
rw [β one_mul (au * av), β habz, add_mul, β add_assoc, add_add_add_comm, mul_assoc, β mul_add,
@@ -84,7 +84,7 @@ theorem not_disjoint_segment_convexHull_triple {p q u v x y z : E} (hz : z β s
/-- **Stone's Separation Theorem** -/
theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π t) (hst : Disjoint s t) :
- β C : Set E, Convex π C β§ Convex π (CαΆ) β§ s β C β§ t β CαΆ := by
+ β C : Set E, Convex π C β§ Convex π CαΆ β§ s β C β§ t β CαΆ := by
let S : Set (Set E) := { C | Convex π C β§ Disjoint C t }
obtain β¨C, hC, hsC, hCmaxβ© :=
zorn_subset_nonempty S
Currently, (for both Set
and Finset
) insert_subset
is an iff
lemma stating that insert a s β t
if and only if a β t
and s β t
. For both types, this PR renames this lemma to insert_subset_iff
, and adds an insert_subset
lemma that gives the implication just in the reverse direction : namely theorem insert_subset (ha : a β t) (hs : s β t) : insert a s β t
.
This both aligns the naming with union_subset
and union_subset_iff
, and removes the need for the awkward insert_subset.mpr β¨_,_β©
idiom. It touches a lot of files (too many to list), but in a trivial way.
@@ -102,7 +102,7 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
refine'
not_disjoint_segment_convexHull_triple hz hu hv
(hC.2.symm.mono (ht.segment_subset hut hvt) <| convexHull_min _ hC.1)
- simpa [insert_subset, hp, hq, singleton_subset_iff.2 hzC]
+ simpa [insert_subset_iff, hp, hq, singleton_subset_iff.2 hzC]
rintro c hc
by_contra' h
suffices h : Disjoint (convexHull π (insert c C)) t
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>
@@ -90,9 +90,9 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
zorn_subset_nonempty S
(fun c hcS hc β¨_, _β© =>
β¨ββ c,
- β¨hc.directedOn.convex_unionβ fun s hs => (hcS hs).1,
- disjoint_unionβ_left.2 fun c hc => (hcS hc).2β©,
- fun s => subset_unionβ_of_memβ©)
+ β¨hc.directedOn.convex_sUnion fun s hs => (hcS hs).1,
+ disjoint_sUnion_left.2 fun c hc => (hcS hc).2β©,
+ fun s => subset_sUnion_of_memβ©)
s β¨hs, hstβ©
refine'
β¨C, hC.1, convex_iff_segment_subset.2 fun x hx y hy z hz hzC => _, hsC, hC.2.subset_compl_leftβ©
@@ -110,6 +110,6 @@ theorem exists_convex_convex_compl_subset (hs : Convex π s) (ht : Convex π
hCmax _ β¨convex_convexHull _ _, hβ© ((subset_insert _ _).trans <| subset_convexHull _ _)] at hc
exact hc (subset_convexHull _ _ <| mem_insert _ _)
rw [convexHull_insert β¨z, hzCβ©, convexJoin_singleton_left]
- refine' disjoint_unionα΅’β_left.2 fun a ha => disjoint_iff_inf_le.mpr fun b hb => h a _ β¨b, hbβ©
+ refine' disjoint_iUnionβ_left.2 fun a ha => disjoint_iff_inf_le.mpr fun b hb => h a _ β¨b, hbβ©
rwa [β hC.1.convexHull_eq]
#align exists_convex_convex_compl_subset exists_convex_convex_compl_subset
The unported dependencies are