Convex Analysis (Rockafellar, 1970) -- Chapter 04 -- Section 20 -- Part 9

open scoped BigOperators Pointwisesection Chap04section Section20

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter binary branch, an exact/top-or-attained bridge implies reverse inequality and universal split-attainment.

lemma helperForTheorem_20_1_nonriInter_binary_reverseLe_and_universalAttainment_of_polyLeft_domRi_posDim_of_exact_topOrAttained {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hbinaryBridge : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by have hcore : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := helperForTheorem_20_1_nonriInterCore_reverseLe_and_neTopAttainment_of_exact_topOrAttained_binary_posDim (p := p) (q := q) hbinaryBridge exact helperForTheorem_20_1_nonriInter_binary_reverseLe_and_universalAttainment_of_polyLeft_domRi_posDim_of_core (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hcore

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, exact/top-or-attained is equivalent to reverse inequality plus non- : ?m.1 split-attainment.

lemma helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_iff_reverseLe_and_neTopAttainment_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) : ((fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) := by have _hnPos_use : 0 < n := hnPos have _hnotRiInter_use : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q)) := hnotRiInter constructor · intro hbinaryBridge exact helperForTheorem_20_1_nonriInterCore_reverseLe_and_neTopAttainment_of_exact_topOrAttained_binary_posDim (p := p) (q := q) hbinaryBridge · intro hcore have hforwardAndTopWitness : (fenchelConjugate n (fun x => p x + q x) infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := helperForTheorem_20_1_forwardLe_and_topWitness_of_polyLeft_domRi (p := p) (q := q) hpolyP hproperP hproperQ hnonemptyDomInterRi exact helperForTheorem_20_1_exact_topOrAttained_of_forward_reverse_and_neTopAttainment (p := p) (q := q) (hforwardLe := hforwardAndTopWitness.1) (hreverseLe := hcore.1) (hneTopAttained := hcore.2)

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the core package Unknown identifier `reverseLe`sorry + sorry - sorry - sorry : ?m.16reverseLe + Unknown identifier `non`non-Function expected at but this term has type ?m.18 Note: Expected a function because this term is being applied to the argument split split-Unknown identifier `attainment`attainment implies exact equality plus top-or-attained for the binary bridge.

lemma helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_of_core {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hcore : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by exact (helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_iff_reverseLe_and_neTopAttainment_of_polyLeft_domRi (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter).2 hcore

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the remaining core package Unknown identifier `reverseLe`sorry + sorry - sorry - sorry : ?m.16reverseLe + Unknown identifier `non`non-Function expected at but this term has type ?m.18 Note: Expected a function because this term is being applied to the argument split split-Unknown identifier `attainment`attainment is equivalent to Unknown identifier `reverseLe`sorry + sorry - sorry : ?m.10reverseLe + Unknown identifier `universal`universal split-Unknown identifier `attainment`attainment.

lemma helperForTheorem_20_1_nonriInter_posDim_coreGoal_iff_reverseLe_and_universalAttainment_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) : ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) := by have _hnPos_use : 0 < n := hnPos have _hnotRiInter_use : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q)) := hnotRiInter exact helperForTheorem_20_1_nonriInter_binary_goal_iff_reverseLe_and_universalAttainment_of_polyLeft_domRi (p := p) (q := q) hpolyP hproperP hproperQ hnonemptyDomInterRi

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the package Unknown identifier `reverseLe`sorry + sorry - sorry : ?m.10reverseLe + Unknown identifier `universal`universal split-Unknown identifier `attainment`attainment already implies the required exact/top-or-attained binary bridge.

lemma helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_of_reverseLe_and_universal {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hreverseAndUniversal : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by have hcoreGoalIff : ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) := helperForTheorem_20_1_nonriInter_posDim_coreGoal_iff_reverseLe_and_universalAttainment_of_polyLeft_domRi (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter have hcore : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := hcoreGoalIff.2 hreverseAndUniversal exact helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_of_core (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hcore

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the core package Unknown identifier `reverseLe`sorry + sorry - sorry - sorry : ?m.16reverseLe + Unknown identifier `non`non-Function expected at but this term has type ?m.18 Note: Expected a function because this term is being applied to the argument split split-Unknown identifier `attainment`attainment yields both exact/top-or-attained and universal split-attainment.

lemma helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_and_universal_of_core {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hcore : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : ((fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by have hbinaryBridge : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_of_core (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hcore have hreverseAndUniversal : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := helperForTheorem_20_1_nonriInter_binary_reverseLe_and_universalAttainment_of_polyLeft_domRi_posDim_of_core (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hcore exact hbinaryBridge, hreverseAndUniversal.2

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the mixed assumptions already yield forward inequality and top-case split-attainment for the binary infimal convolution.

lemma helperForTheorem_20_1_nonriInter_posDim_forwardLe_and_topWitness_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) : (fenchelConjugate n (fun x => p x + q x) infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by have _hnPos_use : 0 < n := hnPos have _hnotRiInter_use : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q)) := hnotRiInter exact helperForTheorem_20_1_forwardLe_and_topWitness_of_polyLeft_domRi (p := p) (q := q) hpolyP hproperP hproperQ hnonemptyDomInterRi

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the unresolved core package Unknown identifier `reverseLe`sorry + sorry - sorry - sorry : ?m.16reverseLe + Unknown identifier `non`non-Function expected at but this term has type ?m.18 Note: Expected a function because this term is being applied to the argument split split-Unknown identifier `attainment`attainment is equivalent to the binary exact/top-or-attained bridge.

lemma helperForTheorem_20_1_nonriInter_posDim_core_iff_exactTopOrAttained_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) : ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ((fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) := by exact (helperForTheorem_20_1_nonriInter_posDim_exactTopOrAttained_iff_reverseLe_and_neTopAttainment_of_polyLeft_domRi (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter).symm

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, an exact/top-or-attained binary bridge immediately yields the core package Unknown identifier `reverseLe`sorry + sorry - sorry - sorry : ?m.16reverseLe + Unknown identifier `non`non-Function expected at but this term has type ?m.18 Note: Expected a function because this term is being applied to the argument split split-Unknown identifier `attainment`attainment.

lemma helperForTheorem_20_1_nonriInter_posDim_core_of_exactTopOrAttained_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hbinaryBridge : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by exact (helperForTheorem_20_1_nonriInter_posDim_core_iff_exactTopOrAttained_of_polyLeft_domRi (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter).2 hbinaryBridge

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the currently available dependency-closed binary data can be packaged as: forward inequality + top-case witness, together with the equivalence between the core package and exact/top-or-attained.

lemma helperForTheorem_20_1_nonriInter_posDim_forwardTop_and_coreIffExact_data_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) : ((fenchelConjugate n (fun x => p x + q x) infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) (((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ((fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y))) := by refine ?_, ?_ · exact helperForTheorem_20_1_nonriInter_posDim_forwardLe_and_topWitness_of_polyLeft_domRi (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter · exact helperForTheorem_20_1_nonriInter_posDim_core_iff_exactTopOrAttained_of_polyLeft_domRi (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, any exact/top-or-attained binary bridge implies the core package once the local Unknown identifier `core`sorry sorry : Propcore Unknown identifier `bridge`bridge equivalence is available.

lemma helperForTheorem_20_1_nonriInter_posDim_core_of_coreIff_and_exactTopOrAttained {n : } (p q : (Fin n ) EReal) (hcoreIffBinaryBridge : ((infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) ((fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y))) (hbinaryBridge : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by exact hcoreIffBinaryBridge.2 hbinaryBridge

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the remaining unresolved core package is reverse inequality plus non- : ?m.1 split-attainment.

lemma helperForTheorem_20_1_nonriInter_posDim_core_reverseLe_and_neTopAttainment_of_polyLeft_domRi {n : } (p q : (Fin n ) EReal) (_hnPos : 0 < n) (_hpolyP : IsPolyhedralConvexFunction n p) (_hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (_hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (_hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (_hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hbinaryBridgeExactTopOrAttained_nonri : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by exact helperForTheorem_20_1_nonriInterCore_reverseLe_and_neTopAttainment_of_exact_topOrAttained_binary_posDim (p := p) (q := q) hbinaryBridgeExactTopOrAttained_nonri

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri setting with polyhedral left block, this is the exact/top-or-attained binary bridge needed to close the non-Unknown identifier `riInter`riInter branch.

lemma section20_mixed_two_block_exact_topOrAttained_of_polyLeft_domRi_nonriInter_posDim_from_closure_forward_topcase {n : } (p q : (Fin n ) EReal) (_hnPos : 0 < n) (_hpolyP : IsPolyhedralConvexFunction n p) (_hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (_hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (_hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (_hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hbinaryBridgeExactTopOrAttained_nonri : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by exact hbinaryBridgeExactTopOrAttained_nonri

Helper for Theorem 20.1: in the positive-dimensional non-Unknown identifier `riInter`riInter mixed Unknown identifier `dom`sorry / sorry : ?m.5dom/Unknown identifier `ri`ri branch with polyhedral left block, the exact/top-or-attained binary bridge implies the core package Unknown identifier `reverseLe`sorry + sorry - sorry - sorry : ?m.16reverseLe + Unknown identifier `non`non-Function expected at but this term has type ?m.18 Note: Expected a function because this term is being applied to the argument split split-Unknown identifier `attainment`attainment.

lemma section20_mixed_two_block_reverseLe_and_neTopAttainment_of_polyLeft_domRi_nonriInter_posDim_from_closure_forward_topcase {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hbinaryBridgeExactTopOrAttained_nonri : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by exact helperForTheorem_20_1_nonriInter_posDim_core_reverseLe_and_neTopAttainment_of_polyLeft_domRi (p := p) (q := q) hnPos hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hbinaryBridgeExactTopOrAttained_nonri

Helper for Theorem 20.1: core non-Unknown identifier `riInter`riInter binary bridge under with polyhedral left block, providing reverse inequality and non- : ?m.1 split-attainment.

lemma helperForTheorem_20_1_nonriInter_binary_reverseLe_and_universalAttainment_of_polyLeft_domRi_posDim {n : } (p q : (Fin n ) EReal) (hnPos : 0 < n) (hpolyP : IsPolyhedralConvexFunction n p) (hproperP : ProperConvexFunctionOn (Set.univ : Set (Fin n )) p) (hproperQ : ProperConvexFunctionOn (Set.univ : Set (Fin n )) q) (hnonemptyDomInterRi : Set.Nonempty (((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hnotRiInter : ¬ Set.Nonempty (euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) p) euclideanRelativeInterior n ((fun x : EuclideanSpace (Fin n) => (x : Fin n )) ⁻¹' effectiveDomain (Set.univ : Set (Fin n )) q))) (hbinaryBridgeExactTopOrAttained_nonri : (fenchelConjugate n (fun x => p x + q x) = infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y)) : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := by have hcore : (infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) fenchelConjugate n (fun x => p x + q x)) ( xStar : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar ( : EReal) y : Fin n , infimalConvolution (fenchelConjugate n p) (fenchelConjugate n q) xStar = fenchelConjugate n p (xStar - y) + fenchelConjugate n q y) := section20_mixed_two_block_reverseLe_and_neTopAttainment_of_polyLeft_domRi_nonriInter_posDim_from_closure_forward_topcase (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hbinaryBridgeExactTopOrAttained_nonri exact helperForTheorem_20_1_nonriInter_binary_reverseLe_and_universalAttainment_of_polyLeft_domRi_posDim_of_core (p := p) (q := q) (hnPos := hnPos) hpolyP hproperP hproperQ hnonemptyDomInterRi hnotRiInter hcore

Helper for Theorem 20.5: every polyhedral convex set is finitely generated.

lemma helperForTheorem_20_5_finitelyGenerated_of_polyhedral {n : } {C : Set (Fin n )} (hCpoly : IsPolyhedralConvexSet n C) : IsFinitelyGeneratedConvexSet n C := by have hCconv : Convex C := helperForTheorem_19_1_polyhedral_isConvex (n := n) (C := C) hCpoly have hTFAE : [IsPolyhedralConvexSet n C, (IsClosed C {C' : Set (Fin n ) | IsFace (𝕜 := ) C C'}.Finite), IsFinitelyGeneratedConvexSet n C].TFAE := polyhedral_closed_finiteFaces_finitelyGenerated_equiv (n := n) (C := C) hCconv exact (hTFAE.out 0 2).1 hCpoly

Helper for Theorem 20.5: a simplex admits the local finite-simplicial witness required by Set.LocallySimplicial (n : ) (S : Set (Fin n )) : PropSet.LocallySimplicial.

lemma helperForTheorem_20_5_localSimplexWitness_of_isSimplex {n m : } {P : Set (Fin n )} {x : Fin n } (hP : IsSimplex n m P) (hx : x P) : (𝒮 : Set (Set (Fin n ))) (U : Set (Fin n )), 𝒮.Finite U nhds x ( Q 𝒮, k : , IsSimplex n k Q Q P) U (⋃₀ 𝒮) = U P := by classical rcases simplex_exists_subsimplex_through_point (hC := hP) (hx := hx) with b, _hb, _hP_eq, hthrough let cand : Fin (m + 1) Set (Fin n ) := fun j => convexHull (Set.insert x (Set.range fun i : Fin m => b (Fin.succAbove j i))) let 𝒮 : Set (Set (Fin n )) := {Q | j : Fin (m + 1), Q = cand j IsSimplex n m Q Q P} have h𝒮subsetRange : 𝒮 Set.range cand := by intro Q hQ rcases hQ with j, hQeq, _hQsimp, _hQsub exact j, hQeq.symm have h𝒮finite : 𝒮.Finite := by exact (Set.finite_range cand).subset h𝒮subsetRange have hsUnion_subset : ⋃₀ 𝒮 P := by intro y hy rcases Set.mem_sUnion.mp hy with Q, hQmem, hyQ rcases hQmem with j, rfl, _hQsimp, hQsub exact hQsub hyQ have hP_subset : P ⋃₀ 𝒮 := by intro y hyP rcases hthrough y hyP with j, hQsub, hQsimp, _hxQ, hyQ have hQsimpCand : IsSimplex n m (cand j) := by simpa [cand] using hQsimp have hQsubCand : cand j P := by simpa [cand] using hQsub have hyCand : y cand j := by simpa [cand] using hyQ have hCandMem : cand j 𝒮 := j, rfl, hQsimpCand, hQsubCand exact Set.mem_sUnion.mpr cand j, hCandMem, hyCand have hsUnion_eq : ⋃₀ 𝒮 = P := Set.Subset.antisymm hsUnion_subset hP_subset have hUnivNhds : (Set.univ : Set (Fin n )) nhds x := Filter.univ_mem have hSimplexFamily : Q 𝒮, k : , IsSimplex n k Q Q P := by intro Q hQ rcases hQ with j, rfl, hQsimp, hQsub exact m, hQsimp, hQsub refine 𝒮, Set.univ, h𝒮finite, hUnivNhds, hSimplexFamily, ?_ try 'simp' instead of 'simpa' Note: This linter can be disabled with `set_option linter.unnecessarySimpa false`simpa [hsUnion_eq]

Helper for Theorem 20.5: every simplex is locally simplicial.

lemma helperForTheorem_20_5_locallySimplicial_of_isSimplex {n m : } {P : Set (Fin n )} (hP : IsSimplex n m P) : Set.LocallySimplicial n P := by intro x hx exact helperForTheorem_20_5_localSimplexWitness_of_isSimplex (hP := hP) (hx := hx)

Helper for Theorem 20.5: a finitely generated convex set admits the global generalized-simplex decomposition from Theorem 17.1.

lemma helperForTheorem_20_5_globalGeneralizedSimplexDecomposition_of_finitelyGenerated {n : } {C : Set (Fin n )} (hCfg : IsFinitelyGeneratedConvexSet n C) : let d := Module.finrank (affineSpan C).direction C = ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := by rcases hCfg with S0, S1, hS0fin, hS1fin, rfl have _hS0fin_use : Set.Finite S0 := hS0fin have _hS1fin_use : Set.Finite S1 := hS1fin exact mixedConvexHull_eq_sUnion_generalizedSimplex_finrank_affineSpan_direction (n := n) S0 S1

Helper for Theorem 20.5: any member of the global generalized-simplex family over Unknown identifier `C`C is a subset of Unknown identifier `C`C.

lemma helperForTheorem_20_5_subset_of_mem_globalGeneralizedSimplexFamily {n d : } {C T : Set (Fin n )} (hTmem : T {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C}) : T C := by exact hTmem.2

Helper for Theorem 20.5: the global generalized-simplex union from finite generation is contained in the original set.

lemma helperForTheorem_20_5_globalGeneralizedSimplexUnion_subset_of_finitelyGenerated {n : } {C : Set (Fin n )} (hCfg : IsFinitelyGeneratedConvexSet n C) : let d := Module.finrank (affineSpan C).direction ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} C := by intro d have hdecomp : C = ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := helperForTheorem_20_5_globalGeneralizedSimplexDecomposition_of_finitelyGenerated (n := n) (C := C) hCfg intro x hx exact hdecomp.symm hx

Helper for Theorem 20.5: every point of a finitely generated convex set belongs to the global generalized-simplex union from Theorem 17.1.

lemma helperForTheorem_20_5_mem_globalGeneralizedSimplexUnion_of_finitelyGenerated {n : } {C : Set (Fin n )} {x : Fin n } (hCfg : IsFinitelyGeneratedConvexSet n C) (hx : x C) : let d := Module.finrank (affineSpan C).direction x ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := by intro d have hdecomp : C = ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := helperForTheorem_20_5_globalGeneralizedSimplexDecomposition_of_finitelyGenerated (n := n) (C := C) hCfg exact hdecomp hx

Helper for Theorem 20.5: a point in the global generalized-simplex union lies in one generalized simplex from that family.

lemma helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_mem_globalGeneralizedSimplexUnion {n d : } {C : Set (Fin n )} {x : Fin n } (hxUnion : x ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C}) : T : Set (Fin n ), IsGeneralizedSimplex n d T T C x T := by rcases Set.mem_sUnion.mp hxUnion with T, hTmem, hxT have hTsub : T C := helperForTheorem_20_5_subset_of_mem_globalGeneralizedSimplexFamily (n := n) (d := d) (C := C) (T := T) hTmem exact T, hTmem.1, hTsub, hxT

Helper for Theorem 20.5: extract a point-containing generalized simplex from finite generation via the global decomposition route.

lemma helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_finitelyGenerated_via_globalUnion {n : } {C : Set (Fin n )} {x : Fin n } (hCfg : IsFinitelyGeneratedConvexSet n C) (hx : x C) : let d := Module.finrank (affineSpan C).direction T : Set (Fin n ), IsGeneralizedSimplex n d T T C x T := by intro d have hxUnion : x ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := helperForTheorem_20_5_mem_globalGeneralizedSimplexUnion_of_finitelyGenerated (n := n) (C := C) (x := x) hCfg hx exact helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_mem_globalGeneralizedSimplexUnion (n := n) (d := d) (C := C) (x := x) hxUnion

Helper for Theorem 20.5: every point of a mixed convex hull lies in a generalized simplex contained in that mixed convex hull.

lemma helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_mixedConvexHull {n : } {S0 S1 : Set (Fin n )} {x : Fin n } (hx : x mixedConvexHull (n := n) S0 S1) : let C := mixedConvexHull (n := n) S0 S1 let d := Module.finrank (affineSpan C).direction T : Set (Fin n ), IsGeneralizedSimplex n d T T C x T := by intro C d have hxC : x C := by simpa [C] using hx have hdecomp : C = ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := mixedConvexHull_eq_sUnion_generalizedSimplex_finrank_affineSpan_direction (n := n) S0 S1 have hxUnion : x ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := by rw [ hdecomp] exact hxC rcases Set.mem_sUnion.mp hxUnion with T, hTmem, hxT exact T, hTmem.1, hTmem.2, hxT

Helper for Theorem 20.5: every point of a finitely generated convex set lies in a generalized simplex contained in that set.

lemma helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_finitelyGenerated {n : } {C : Set (Fin n )} {x : Fin n } (hCfg : IsFinitelyGeneratedConvexSet n C) (hx : x C) : let d := Module.finrank (affineSpan C).direction T : Set (Fin n ), IsGeneralizedSimplex n d T T C x T := by rcases hCfg with S0, S1, hS0fin, hS1fin, rfl have _hS0fin_use : Set.Finite S0 := hS0fin have _hS1fin_use : Set.Finite S1 := hS1fin simpa using (helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_mixedConvexHull (n := n) (S0 := S0) (S1 := S1) (x := x) hx)

Helper for Theorem 20.5: the global generalized-simplex decomposition of a finitely generated convex set gives a neighborhood equality with the global generalized-simplex union.

lemma helperForTheorem_20_5_localEq_with_globalGeneralizedSimplexUnion_of_finitelyGenerated {n : } {C : Set (Fin n )} {x : Fin n } (hCfg : IsFinitelyGeneratedConvexSet n C) : let d := Module.finrank (affineSpan C).direction U : Set (Fin n ), U nhds x U C = U ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := by intro d refine Set.univ, Filter.univ_mem, ?_ have hdecomp : C = ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := helperForTheorem_20_5_globalGeneralizedSimplexDecomposition_of_finitelyGenerated (n := n) (C := C) hCfg calc Set.univ C = C := by simp _ = ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := hdecomp _ = Set.univ ⋃₀ {T : Set (Fin n ) | IsGeneralizedSimplex n d T T C} := by simp

Helper for Theorem 20.5: package a point-containing generalized simplex together with the neighborhood equality to the global generalized-simplex union.

lemma helperForTheorem_20_5_exists_generalizedSimplex_through_point_and_localEq_with_globalUnion_of_finitelyGenerated {n : } {C : Set (Fin n )} {x : Fin n } (hCfg : IsFinitelyGeneratedConvexSet n C) (hx : x C) : let d := Module.finrank (affineSpan C).direction (T U : Set (Fin n )), IsGeneralizedSimplex n d T T C x T U nhds x U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} := by intro d rcases (helperForTheorem_20_5_exists_generalizedSimplex_through_point_of_finitelyGenerated (n := n) (C := C) (x := x) hCfg hx) with T, hTgen, hTsub, hxT rcases (helperForTheorem_20_5_localEq_with_globalGeneralizedSimplexUnion_of_finitelyGenerated (n := n) (C := C) (x := x) hCfg) with U, hUnhds, hUeq exact T, U, hTgen, hTsub, hxT, hUnhds, hUeq

Helper for Theorem 20.5: if Unknown identifier `T`sorry sorry : PropT Unknown identifier `C`C is locally simplicial and Unknown identifier `T`T agrees with Unknown identifier `C`C on a neighborhood of Unknown identifier `x`x, then Unknown identifier `C`C has a local simplicial witness at Unknown identifier `x`x.

lemma helperForTheorem_20_5_localWitness_of_subset_locallySimplicial_and_localEq {n : } {C T : Set (Fin n )} {x : Fin n } (hTloc : Set.LocallySimplicial n T) (hTsub : T C) (hxT : x T) {U : Set (Fin n )} (hUnhds : U nhds x) (hUeq : U C = U T) : (𝒮 : Set (Set (Fin n ))) (W : Set (Fin n )), 𝒮.Finite W nhds x ( Q 𝒮, k : , IsSimplex n k Q Q C) W (⋃₀ 𝒮) = W C := by rcases hTloc x hxT with 𝒮, V, h𝒮fin, hVnhds, hSimplex, hVeq refine 𝒮, U V, h𝒮fin, Filter.inter_mem hUnhds hVnhds, ?_, ?_ · intro Q hQ rcases hSimplex Q hQ with k, hQsimplex, hQsubT exact k, hQsimplex, Set.Subset.trans hQsubT hTsub · ext y constructor · intro hy rcases hy with hyUV, hyUnion rcases hyUV with hyU, hyV have hyVT : y V T := by have hyVS : y V ⋃₀ 𝒮 := hyV, hyUnion simpa [hVeq] using hyVS have hyC : y C := hTsub hyVT.2 exact hyU, hyV, hyC · intro hy rcases hy with hyUV, hyC rcases hyUV with hyU, hyV have hyUT : y U T := by have hyUC : y U C := hyU, hyC simpa [hUeq] using hyUC have hyVS : y V ⋃₀ 𝒮 := by have hyVT : y V T := hyV, hyUT.2 simpa [hVeq] using hyVT exact hyU, hyV, hyVS.2

Helper for Theorem 20.5: local generalized-simplex bridge at a point of a finitely generated convex set.

lemma helperForTheorem_20_5_localEq_of_localEq_with_union_and_localEq_union_to_piece {n : } {C T U : Set (Fin n )} {𝒯 : Set (Set (Fin n ))} (hUCeqUnion : U C = U ⋃₀ 𝒯) (hUUnionEqT : U ⋃₀ 𝒯 = U T) : U C = U T := by calc U C = U ⋃₀ 𝒯 := hUCeqUnion _ = U T := hUUnionEqT

Helper for Theorem 20.5: a selected generalized-simplex piece contained in Unknown identifier `C`C is contained in the global generalized-simplex union over Unknown identifier `C`C.

lemma helperForTheorem_20_5_selectedGeneralizedSimplex_subset_globalUnion {n d : } {C T : Set (Fin n )} (hTgen : IsGeneralizedSimplex n d T) (hTsub : T C) : T ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} := by intro y hyT exact Set.mem_sUnion.mpr T, hTgen, hTsub, hyT

Helper for Theorem 20.5: intersecting with Unknown identifier `U`U, a selected generalized-simplex piece contained in Unknown identifier `C`C is contained in the global generalized-simplex union over Unknown identifier `C`C.

lemma helperForTheorem_20_5_selectedGeneralizedSimplex_inter_subset_globalUnion_inter {n d : } {C T U : Set (Fin n )} (hTgen : IsGeneralizedSimplex n d T) (hTsub : T C) : U T U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} := by intro y hyUT rcases hyUT with hyU, hyT exact hyU, helperForTheorem_20_5_selectedGeneralizedSimplex_subset_globalUnion (n := n) (d := d) (C := C) (T := T) hTgen hTsub hyT

Helper for Theorem 20.5: missing local piece data for a selected generalized-simplex inside the global generalized-simplex union of a finitely generated convex set.

lemma helperForTheorem_20_5_localPieceData_of_selectedGeneralizedSimplex_in_finitelyGenerated {n d : } {C T U : Set (Fin n )} (hTloc : Set.LocallySimplicial n T) (hUUnionSubT : U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T) : _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T := by exact hTloc, hUUnionSubT

Helper for Theorem 20.5: from a selected generalized-simplex in the finitely generated decomposition neighborhood, extract the local piece data needed for the bridge step.

lemma helperForTheorem_20_5_selectedGeneralizedSimplex_localPieceData_of_finitelyGenerated {n d : } {C T U : Set (Fin n )} {x : Fin n } (_hCfg : IsFinitelyGeneratedConvexSet n C) (_hx : x C) (_hTgen : IsGeneralizedSimplex n d T) (_hTsub : T C) (_hxT : x T) (_hUCeqUnion : U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C}) (hTloc : Set.LocallySimplicial n T) (hUUnionSubT : U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T) : _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T := by exact helperForTheorem_20_5_localPieceData_of_selectedGeneralizedSimplex_in_finitelyGenerated (n := n) (d := d) (C := C) (T := T) (U := U) hTloc hUUnionSubT

Helper for Theorem 20.5: local piece data together with the selected-piece-to-union inclusion yields neighborhood equality between the global union and the selected piece.

lemma helperForTheorem_20_5_localEq_of_localPieceData_and_selectedGeneralizedSimplexInterSubset {n d : } {C T U : Set (Fin n )} (hLocalPieceData : _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T) (hUTsubUUnion : U T U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C}) : _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} = U T := by rcases hLocalPieceData with hTloc, hUUnionSubT refine hTloc, Set.Subset.antisymm hUUnionSubT hUTsubUUnion

Helper for Theorem 20.5: once local simpliciality of a selected generalized-simplex piece and local union-to-piece equality are available, the local bridge data follow.

lemma helperForTheorem_20_5_localGeneralizedSimplexBridge_of_finitelyGenerated_of_localPieceData {n d : } {C T U : Set (Fin n )} {x : Fin n } (hTgen : IsGeneralizedSimplex n d T) (hTsub : T C) (hxT : x T) (hTloc : Set.LocallySimplicial n T) (hUnhds : U nhds x) (hUCeqUnion : U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C}) (hUUnionEqT : U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} = U T) : (T' U' : Set (Fin n )), IsGeneralizedSimplex n d T' T' C x T' Set.LocallySimplicial n T' U' nhds x U' C = U' T' := by have hUCeqT : U C = U T := helperForTheorem_20_5_localEq_of_localEq_with_union_and_localEq_union_to_piece (n := n) (C := C) (T := T) (U := U) (𝒯 := {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C}) hUCeqUnion hUUnionEqT exact T, U, hTgen, hTsub, hxT, hTloc, hUnhds, hUCeqT

Helper for Theorem 20.5: local generalized-simplex bridge at a point of a finitely generated convex set.

lemma helperForTheorem_20_5_localGeneralizedSimplexBridge_of_finitelyGenerated {n : } {C : Set (Fin n )} {x : Fin n } (hCfg : IsFinitelyGeneratedConvexSet n C) (hx : x C) : let d := Module.finrank (affineSpan C).direction ( {T U : Set (Fin n )}, IsGeneralizedSimplex n d T T C x T U nhds x U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T) (T U : Set (Fin n )), IsGeneralizedSimplex n d T T C x T Set.LocallySimplicial n T U nhds x U C = U T := by intro d hSelectedLocalPieceData rcases (helperForTheorem_20_5_exists_generalizedSimplex_through_point_and_localEq_with_globalUnion_of_finitelyGenerated (n := n) (C := C) (x := x) hCfg hx) with T, U, hTgen, hTsub, hxT, hUnhds, hUeqUnion have _hUeqUnion_use : U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} := hUeqUnion have _hTgen_use : IsGeneralizedSimplex n d T := hTgen have _hTsub_use : T C := hTsub have _hxT_use : x T := hxT have _hUnhds_use : U nhds x := hUnhds have hUTsubUUnion : U T U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} := by exact helperForTheorem_20_5_selectedGeneralizedSimplex_inter_subset_globalUnion_inter (n := n) (d := d) (C := C) (T := T) (U := U) hTgen hTsub have hLocalPieceData : hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T := hSelectedLocalPieceData hTgen hTsub hxT hUnhds hUeqUnion rcases (helperForTheorem_20_5_localEq_of_localPieceData_and_selectedGeneralizedSimplexInterSubset (n := n) (d := d) (C := C) (T := T) (U := U) hLocalPieceData hUTsubUUnion) with hTloc, hUUnionEqT exact helperForTheorem_20_5_localGeneralizedSimplexBridge_of_finitelyGenerated_of_localPieceData (n := n) (d := d) (C := C) (T := T) (U := U) (x := x) hTgen hTsub hxT hTloc hUnhds hUeqUnion hUUnionEqT

Helper for Theorem 20.5: finitely generated convex sets are locally simplicial.

lemma helperForTheorem_20_5_locallySimplicial_of_finitelyGenerated {n : } {C : Set (Fin n )} (hCfg : IsFinitelyGeneratedConvexSet n C) (hSelectedLocalPieceData : x C, let d := Module.finrank (affineSpan C).direction {T U : Set (Fin n )}, IsGeneralizedSimplex n d T T C x T U nhds x U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T) : Set.LocallySimplicial n C := by intro x hx let d := Module.finrank (affineSpan C).direction rcases (helperForTheorem_20_5_localGeneralizedSimplexBridge_of_finitelyGenerated (n := n) (C := C) (x := x) hCfg hx) (hSelectedLocalPieceData x hx) with T, U, _hTgen, hTsub, hxT, hTloc, hUnhds, hUeq exact helperForTheorem_20_5_localWitness_of_subset_locallySimplicial_and_localEq (n := n) (C := C) (T := T) (x := x) hTloc hTsub hxT hUnhds hUeq

Helper for Theorem 20.5: every polytope is polyhedral.

lemma helperForTheorem_20_5_polyhedral_of_polytope {n : } {P : Set (Fin n )} (hPpolytope : IsPolytope n P) : IsPolyhedralConvexSet n P := by rcases hPpolytope with S, hSfinite, hP_eq have hPconv : Convex P := by rw [hP_eq] exact convex_convexHull S have hPfg : IsFinitelyGeneratedConvexSet n P := by refine S, ( : Set (Fin n )), hSfinite, Set.finite_empty, ?_ calc P = convexHull S := hP_eq _ = mixedConvexHull (n := n) S ( : Set (Fin n )) := by symm exact mixedConvexHull_empty_directions_eq_convexHull (n := n) S exact helperForTheorem_19_1_finitelyGenerated_imp_polyhedral (n := n) (C := P) hPconv hPfg

Theorem 20.5: every polyhedral convex set is locally simplicial; in particular, every polytope is locally simplicial.

theorem Theorem_20_5 (n : ) (hSelectedLocalPieceData : C : Set (Fin n ), IsPolyhedralConvexSet n C x C, let d := Module.finrank (affineSpan C).direction {T U : Set (Fin n )}, IsGeneralizedSimplex n d T T C x T U nhds x U C = U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} _hTloc : Set.LocallySimplicial n T, U ⋃₀ {R : Set (Fin n ) | IsGeneralizedSimplex n d R R C} U T) : ( C : Set (Fin n ), IsPolyhedralConvexSet n C Set.LocallySimplicial n C) ( P : Set (Fin n ), IsPolytope n P Set.LocallySimplicial n P) := by have hpolyhedralLocallySimplicial : C : Set (Fin n ), IsPolyhedralConvexSet n C Set.LocallySimplicial n C := by intro C hCpoly exact helperForTheorem_20_5_locallySimplicial_of_finitelyGenerated (helperForTheorem_20_5_finitelyGenerated_of_polyhedral (n := n) (C := C) hCpoly) (hSelectedLocalPieceData C hCpoly) constructor · exact hpolyhedralLocallySimplicial · intro P hPpolytope exact hpolyhedralLocallySimplicial P (helperForTheorem_20_5_polyhedral_of_polytope (n := n) (P := P) hPpolytope)
end Section20end Chap04