:: Sperner's Lemma :: by Karol P\c{a}k :: :: Received February 9, 2010 :: Copyright (c) 2010-2021 Association of Mizar Users :: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland). :: This code can be distributed under the GNU General Public Licence :: version 3.0 or later, or the Creative Commons Attribution-ShareAlike :: License version 3.0 or later, subject to the binding interpretation :: detailed in file COPYING.interpretation. :: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these :: licenses, or see http://www.gnu.org/licenses/gpl.html and :: http://creativecommons.org/licenses/by-sa/3.0/. environ vocabularies ARYTM_1, ARYTM_3, XBOOLE_0, CARD_1, CARD_2, CLASSES1, COHSP_1, COMPLEX1, CONVEX1, CONVEX2, CONVEX3, FINSEQ_1, FINSET_1, FUNCT_1, MATROID0, MCART_1, ORDERS_1, PARTFUN1, PRE_TOPC, QC_LANG1, RELAT_1, RLVECT_1, RLVECT_2, SEMI_AF1, SETFAM_1, SGRAPH1, SUBSET_1, TARSKI, TOPS_1, ZFMISC_1, RLAFFIN1, RLAFFIN2, SIMPLEX0, SIMPLEX1, REAL_1, FUNCOP_1, NAT_1, FUNCT_2, STRUCT_0, XXREAL_0, NUMBERS, ORDINAL1, CARD_3, GLIB_000, FINSEQ_4; notations TARSKI, XBOOLE_0, SUBSET_1, ZFMISC_1, ORDINAL1, NUMBERS, XXREAL_3, XXREAL_0, XCMPLX_0, XREAL_0, ORDERS_1, CARD_1, REAL_1, FINSET_1, WELLORD2, SETFAM_1, DOMAIN_1, RELAT_1, FUNCT_1, FUNCT_2, RELSET_1, FINSEQ_1, STRUCT_0, CLASSES1, RVSUM_1, RLVECT_1, RLVECT_2, CONVEX1, CONVEX2, CONVEX3, PRE_TOPC, RLAFFIN1, FUNCOP_1, PENCIL_1, MATROID0, XTUPLE_0, MCART_1, CARD_2, COHSP_1, SIMPLEX0, RLAFFIN2; constructors BINOP_2, CONVEX1, CONVEX3, REAL_1, RVSUM_1, RLAFFIN1, SIMPLEX0, TOPS_2, BORSUK_1, COHSP_1, CARD_2, RLAFFIN2, XTUPLE_0; registrations CARD_1, FINSET_1, FUNCT_1, NAT_1, RELAT_1, RLVECT_1, STRUCT_0, SUBSET_1, VALUED_0, XCMPLX_0, XREAL_0, XXREAL_0, XBOOLE_0, RLAFFIN1, SIMPLEX0, FUNCOP_1, INT_1, XXREAL_3, MATROID0, SETFAM_1, COHSP_1, RLAFFIN2, RELSET_1, RLVECT_2, ORDINAL1, XTUPLE_0; requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM; begin :: Preliminaries reserve x,y,X for set, r for Real, n,k for Nat; theorem :: SIMPLEX1:1 for R be Relation, C be Cardinal st for x being object st x in X holds card Im(R,x) = C holds card R = card(R|(dom R\X)) +` C*`card X; theorem :: SIMPLEX1:2 for Y be non empty finite set st card X = card Y+1 for f be Function of X,Y st f is onto ex y st y in Y & card(f"{y}) = 2 & for x st x in Y & x <> y holds card (f"{x})=1; definition let X be 1-sorted; mode SimplicialComplexStr of X is SimplicialComplexStr of the carrier of X; mode SimplicialComplex of X is SimplicialComplex of the carrier of X; end; definition let X be 1-sorted; let K be SimplicialComplexStr of X; let A be Subset of K; func @A -> Subset of X equals :: SIMPLEX1:def 1 A; end; definition let X be 1-sorted; let K be SimplicialComplexStr of X; let A be Subset-Family of K; func @A -> Subset-Family of X equals :: SIMPLEX1:def 2 A; end; theorem :: SIMPLEX1:3 for X be 1-sorted for K be subset-closed SimplicialComplexStr of X st K is total for S be finite Subset of K st S is simplex-like holds Complex_of {@S} is SubSimplicialComplex of K; begin :: The Area of an Abstract Simplicial Complex reserve RLS for non empty RLSStruct, Kr,K1r,K2r for SimplicialComplexStr of RLS, V for RealLinearSpace, Kv for non void SimplicialComplex of V; definition let RLS,Kr; func |.Kr.| -> Subset of RLS means :: SIMPLEX1:def 3 x in it iff ex A be Subset of Kr st A is simplex-like & x in conv @A; end; theorem :: SIMPLEX1:4 the topology of K1r c= the topology of K2r implies |.K1r.| c= |.K2r.|; theorem :: SIMPLEX1:5 for A be Subset of Kr st A is simplex-like holds conv @A c= |.Kr.|; theorem :: SIMPLEX1:6 for K be subset-closed SimplicialComplexStr of V holds x in |.K.| iff ex A be Subset of K st A is simplex-like & x in Int @A; theorem :: SIMPLEX1:7 |.Kr.| is empty iff Kr is empty-membered; theorem :: SIMPLEX1:8 for A be Subset of RLS holds |.Complex_of{A}.| = conv A; theorem :: SIMPLEX1:9 for A,B be Subset-Family of RLS holds |.Complex_of (A\/B).| = |.Complex_of A.| \/ |.Complex_of B.|; begin :: The Subdivision of a Simplicial Complex definition let RLS,Kr; mode SubdivisionStr of Kr -> SimplicialComplexStr of RLS means :: SIMPLEX1:def 4 |.Kr.| c= |.it.| & for A be Subset of it st A is simplex-like ex B be Subset of Kr st B is simplex-like & conv @A c= conv @B; end; theorem :: SIMPLEX1:10 for P be SubdivisionStr of Kr holds |.Kr.| = |.P.|; registration let RLS; let Kr be with_non-empty_element SimplicialComplexStr of RLS; cluster -> with_non-empty_element for SubdivisionStr of Kr; end; theorem :: SIMPLEX1:11 Kr is SubdivisionStr of Kr; theorem :: SIMPLEX1:12 Complex_of the topology of Kr is SubdivisionStr of Kr; theorem :: SIMPLEX1:13 for K be subset-closed SimplicialComplexStr of V for SF be Subset-Family of K st SF = Sub_of_Fin the topology of K holds Complex_of SF is SubdivisionStr of K; theorem :: SIMPLEX1:14 for P1 be SubdivisionStr of Kr for P2 be SubdivisionStr of P1 holds P2 is SubdivisionStr of Kr; registration let V; let K be SimplicialComplexStr of V; cluster finite-membered subset-closed for SubdivisionStr of K; end; definition let V; let K be SimplicialComplexStr of V; mode Subdivision of K is finite-membered subset-closed SubdivisionStr of K; end; theorem :: SIMPLEX1:15 for K be with_empty_element SimplicialComplex of V st |.K.| c= [#]K for B be Function of BOOL the carrier of V,the carrier of V st for S be Simplex of K st S is non empty holds B.S in conv @S holds subdivision(B,K) is SubdivisionStr of K; registration let V,Kv; cluster non void for Subdivision of Kv; end; begin :: The Barycentric Subdivision definition let V,Kv such that |.Kv.| c= [#]Kv; func BCS Kv -> non void Subdivision of Kv equals :: SIMPLEX1:def 5 subdivision(center_of_mass V,Kv); end; definition let n; let V,Kv such that |.Kv.| c= [#]Kv; func BCS(n,Kv) -> non void Subdivision of Kv equals :: SIMPLEX1:def 6 subdivision(n,center_of_mass V,Kv); end; theorem :: SIMPLEX1:16 |.Kv.| c= [#]Kv implies BCS(0,Kv) = Kv; theorem :: SIMPLEX1:17 |.Kv.| c= [#]Kv implies BCS(1,Kv) = BCS Kv; theorem :: SIMPLEX1:18 |.Kv.| c= [#]Kv implies [#]BCS(n,Kv) = [#]Kv; theorem :: SIMPLEX1:19 |.Kv.| c= [#]Kv implies |.BCS(n,Kv).| = |.Kv.|; theorem :: SIMPLEX1:20 |.Kv.| c= [#]Kv implies BCS(n+1,Kv) = BCS BCS(n,Kv); theorem :: SIMPLEX1:21 |.Kv.| c= [#]Kv & degree Kv <= 0 implies the TopStruct of Kv = BCS Kv; theorem :: SIMPLEX1:22 n > 0 & |.Kv.| c= [#]Kv & degree Kv <= 0 implies the TopStruct of Kv = BCS(n,Kv); theorem :: SIMPLEX1:23 for Sv be non void SubSimplicialComplex of Kv st |.Kv.| c= [#]Kv & |.Sv.| c= [#]Sv holds BCS(n,Sv) is SubSimplicialComplex of BCS(n,Kv); theorem :: SIMPLEX1:24 |.Kv.| c= [#]Kv implies Vertices Kv c= Vertices BCS(n,Kv); registration let n,V; let K be non void total SimplicialComplex of V; cluster BCS(n,K) -> total; end; registration let n,V; let K be non void finite-vertices total SimplicialComplex of V; cluster BCS(n,K) -> finite-vertices; end; begin :: Selected Properties of Simplicial Complexes definition let V; let K be SimplicialComplexStr of V; attr K is affinely-independent means :: SIMPLEX1:def 7 for A be Subset of K st A is simplex-like holds @A is affinely-independent; end; definition let RLS,Kr; attr Kr is simplex-join-closed means :: SIMPLEX1:def 8 for A,B be Subset of Kr st A is simplex-like & B is simplex-like holds conv @A /\ conv @B = conv @(A/\B); end; registration let V; cluster empty-membered -> affinely-independent for SimplicialComplexStr of V; let F be affinely-independent Subset-Family of V; cluster Complex_of F -> affinely-independent; end; registration let RLS; cluster empty-membered -> simplex-join-closed for SimplicialComplexStr of RLS; end; registration let V; let I be affinely-independent Subset of V; cluster Complex_of{I} -> simplex-join-closed; end; registration let V; cluster 1-element affinely-independent for Subset of V; end; registration let V; cluster with_non-empty_element finite-vertices affinely-independent simplex-join-closed total for SimplicialComplex of V; end; registration let V; let K be affinely-independent SimplicialComplexStr of V; cluster -> affinely-independent for SubSimplicialComplex of K; end; registration let V; let K be simplex-join-closed SimplicialComplexStr of V; cluster -> simplex-join-closed for SubSimplicialComplex of K; end; theorem :: SIMPLEX1:25 for K be subset-closed SimplicialComplexStr of V holds K is simplex-join-closed iff for A,B be Subset of K st A is simplex-like & B is simplex-like & Int @A meets Int @B holds A=B; reserve Ks for simplex-join-closed SimplicialComplex of V, As,Bs for Subset of Ks, Ka for non void affinely-independent SimplicialComplex of V, Kas for non void affinely-independent simplex-join-closed SimplicialComplex of V, K for non void affinely-independent simplex-join-closed total SimplicialComplex of V; registration let V,Ka; let S be Simplex of Ka; cluster @S -> affinely-independent; end; theorem :: SIMPLEX1:26 As is simplex-like & Bs is simplex-like & Int@As meets conv@Bs implies As c= Bs; theorem :: SIMPLEX1:27 As is simplex-like & @As is affinely-independent & Bs is simplex-like implies (Int@As c= conv @Bs iff As c= Bs); theorem :: SIMPLEX1:28 |.Ka.| c= [#]Ka implies BCS Ka is affinely-independent; registration let V; let Ka be non void affinely-independent total SimplicialComplex of V; cluster BCS Ka -> affinely-independent; let n; cluster BCS(n,Ka) -> affinely-independent; end; registration let V,Kas; cluster (center_of_mass V)|the topology of Kas -> one-to-one; end; theorem :: SIMPLEX1:29 |.Kas.| c= [#]Kas implies BCS Kas is simplex-join-closed; registration let V,K; cluster BCS K -> simplex-join-closed; let n; cluster BCS(n,K) -> simplex-join-closed; end; theorem :: SIMPLEX1:30 |.Kv.| c= [#]Kv & (for n st n <= degree Kv ex S be Simplex of Kv st card S = n+1 & @S is affinely-independent) implies degree Kv = degree BCS Kv; theorem :: SIMPLEX1:31 |.Ka.| c= [#]Ka implies degree Ka = degree BCS Ka; theorem :: SIMPLEX1:32 |.Ka.| c= [#]Ka implies degree Ka = degree BCS(n,Ka); theorem :: SIMPLEX1:33 for S be simplex-like Subset-Family of Kas st S is with_non-empty_elements holds card S = card ((center_of_mass V).:S); reserve Aff for finite affinely-independent Subset of V, Af,Bf for finite Subset of V, B for Subset of V, S,T for finite Subset-Family of V, Sf for c=-linear finite finite-membered Subset-Family of V, Sk,Tk for finite simplex-like Subset-Family of K, Ak for Simplex of K; theorem :: SIMPLEX1:34 for S1,S2 be simplex-like Subset-Family of Kas st |.Kas.|c=[#]Kas & S1 is with_non-empty_elements & (center_of_mass V).:S2 is Simplex of BCS Kas & (center_of_mass V).:S1 c= (center_of_mass V).:S2 holds S1 c= S2 & S2 is c=-linear; theorem :: SIMPLEX1:35 S is with_non-empty_elements & union S c= Aff & card S+n+1 <= card Aff implies ( Bf is Simplex of n+card S,BCS Complex_of{Aff} & (center_of_mass V).:S c=Bf iff ex T st T misses S & T\/S is c=-linear with_non-empty_elements & card T=n+1 & union T c= Aff & Bf = (center_of_mass V).:S\/(center_of_mass V).:T); theorem :: SIMPLEX1:36 Sf is with_non-empty_elements & union Sf c=Aff implies ((center_of_mass V).:Sf is Simplex of card union Sf-1,BCS Complex_of {Aff} iff for n st 0 < n & n <= card union Sf ex x st x in Sf & card x = n); theorem :: SIMPLEX1:37 for S st S is c=-linear & S is with_non-empty_elements & card S = card union S for Af,Bf st Af is non empty & Af misses union S & union S\/Af is affinely-independent & union S\/Af c=Bf holds (center_of_mass V).:S \/ (center_of_mass V).:{union S\/Af} is Simplex of card S,BCS Complex_of{Bf}; theorem :: SIMPLEX1:38 for Sf st Sf is with_non-empty_elements & card Sf = card union Sf for v be Element of V st not v in union Sf & union Sf\/{v} is affinely-independent holds {S1 where S1 is Simplex of card Sf,BCS Complex_of{union Sf\/{v}}: (center_of_mass V).:Sf c= S1} = {(center_of_mass V).:Sf\/(center_of_mass V).:{union Sf\/{v}}}; theorem :: SIMPLEX1:39 for Sf st Sf is with_non-empty_elements & card Sf+1 = card union Sf & union Sf is affinely-independent holds card {S1 where S1 is Simplex of card Sf,BCS Complex_of{union Sf}: (center_of_mass V).:Sf c= S1} = 2; theorem :: SIMPLEX1:40 Aff is Simplex of K implies (B is Simplex of BCS Complex_of{Aff} iff B is Simplex of BCS K & conv B c= conv Aff); theorem :: SIMPLEX1:41 Sk is with_non-empty_elements & card Sk+n <= degree K implies (Af is Simplex of n+card Sk,BCS K & (center_of_mass V).:Sk c=Af iff ex Tk st Tk misses Sk & Tk\/Sk is c=-linear with_non-empty_elements & card Tk=n+1 & Af = (center_of_mass V).:Sk\/(center_of_mass V).:Tk); theorem :: SIMPLEX1:42 Sk is c=-linear with_non-empty_elements & card Sk = card union Sk & union Sk c= Ak & card Ak = card Sk+1 implies {S1 where S1 is Simplex of card Sk,BCS K: (center_of_mass V).:Sk c= S1 & conv @S1 c= conv @Ak} = {(center_of_mass V).:Sk \/(center_of_mass V).:{Ak}}; theorem :: SIMPLEX1:43 Sk is c=-linear with_non-empty_elements & card Sk+1 = card union Sk implies card {S1 where S1 is Simplex of card Sk,BCS K: (center_of_mass V).:Sk c= S1 & conv @S1 c= conv @union Sk} = 2; theorem :: SIMPLEX1:44 for Af st K is Subdivision of Complex_of{Af} & card Af = n+1 & degree K = n & for S be Simplex of n-1,K,X st X = {S1 where S1 is Simplex of n,K: S c= S1} holds (conv @S meets Int Af implies card X = 2) & (conv @S misses Int Af implies card X = 1) holds for S be Simplex of n-1,BCS K,X st X = {S1 where S1 is Simplex of n,BCS K:S c= S1} holds (conv @S meets Int Af implies card X = 2) & (conv @S misses Int Af implies card X = 1); theorem :: SIMPLEX1:45 for S be Simplex of n-1,BCS(k,Complex_of{Aff}) st card Aff = n+1 & X = {S1 where S1 is Simplex of n,BCS(k,Complex_of{Aff}): S c= S1} holds (conv @S meets Int Aff implies card X = 2) & (conv @S misses Int Aff implies card X = 1); begin :: The Main Theorem reserve v for Vertex of BCS(k,Complex_of{Aff}), F for Function of Vertices BCS(k,Complex_of{Aff}),Aff; theorem :: SIMPLEX1:46 for F st for v,B st B c= Aff & v in conv B holds F.v in B ex n st card {S where S is Simplex of card Aff-1,BCS(k,Complex_of{Aff}): F.:S = Aff} = 2*n+1; :: Sperner's Lemma theorem :: SIMPLEX1:47 for F st for v,B st B c= Aff & v in conv B holds F.v in B ex S be Simplex of card Aff-1,BCS(k,Complex_of{Aff}) st F.:S = Aff;