Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

6 Homotopy theory
 6.1 Beat points and homotopy type
 6.2 Weak points and simple homotopy type
 6.3 Colorings
 6.4 Connectivity
 6.5 Fences and homotopies

6 Homotopy theory

6.1 Beat points and homotopy type

The main reference for this section is [Bar11, Section 1.3]. We recall here some important facts and definitions. We consider finite posets as finite topological spaces via the intrinsic topology where the open sets are the downsets. This topology is also known as the Alexandroff topology. A point \(x\in X\) is an up beat point if \(\{y\,:\, y> x\}\) has a minimum. A point \(x\in X\) is a down beat point if \(\{y\,:\, y< x\}\) has a maximum. A point \(x\in X\) is a beat point if it is either an up or a down beat point. A poset is minimal if it has no beat points. A core of a finite poset X is a strong deformation retract which is a minimal poset. The core of a poset is unique up to isomorphism. Moreover, any core of a poset can be reached by exctracting beat points. Two posets are homotopy equivalent if and only if their cores are isomorphic. A poset is contractible if its has only one point. This method of removing beat points to describe the homotopy type of finite posets with the Alexandroff topology was developed by R.E. Stong.

6.1-1 IsBeatPoint
‣ IsBeatPoint( X, x )( operation )

Checks if \(x\) is a beat point of \(X\).

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> IsBeatPoint(P,3);
false
gap> IsBeatPoint(P,1);
true

6.1-2 IsUpBeatPoint
‣ IsUpBeatPoint( X, x )( operation )

Checks if \(x\) is an up beat point of \(X\).

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> IsUpBeatPoint(P,1);
true

6.1-3 IsDownBeatPoint
‣ IsDownBeatPoint( X, x )( operation )

Checks if \(x\) is a down beat point of \(X\).

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> IsDownBeatPoint(P,1);
false

6.1-4 UpBeatPoints
‣ UpBeatPoints( X )( attribute )

Returns the list of all the up beat points of the poset.

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> UpBeatPoints(P);
[ 1, 2 ]

6.1-5 DownBeatPoints
‣ DownBeatPoints( X )( attribute )

Returns the list of all the down beat points of the poset.

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> DownBeatPoints(P);
[  ]

6.1-6 BeatPoints
‣ BeatPoints( X )( attribute )

Returns the list of all the beat points of the poset.

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> BeatPoints(P);
[ 1, 2 ]

6.1-7 Core
‣ Core( X )( attribute )

Returns the core of \(X\). It also computes the natural inclusion map \(i\colon \mathrm{core}(X) \to X\) and a retraction \(r\colon X \to \mathrm{core}(X)\).

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> Q:=Core(P);
<finite poset of size 1>
gap> N:=NaturalMaps(Q);
[ <order preserving map>, <order preserving map> ]
gap> SourceMap(inc) = Q;
true
gap> TargetMap(inc) = P;
true

6.1-8 CoreParallel
‣ CoreParallel( X )( attribute )

Returns the core of \(X\) by using multiple processor cores. It also computes the natural inclusion map and a retraction. Note: only works on Linux.

gap> G:=AlternatingGroup(8);
Alt( [ 1 .. 8 ] )
gap> ApG:=QuillenPoset(G,2);
<finite poset of size 2655>
gap> start:=Runtime();; Q:=Core(ApG);; Runtime()-start; 
90996
gap> start:=Runtime();; R:=CoreParallel(ApG);; Runtime()-start;
# Remaining points: 1710
# Remaining points: 1010
184
gap> Set(Q) = Set(R);
true

6.1-9 IsContractible
‣ IsContractible( X )( attribute )

Checks if the finite poset is contractible.

gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> IsContractible(P);
true

6.1-10 HomotopyEquivalence
‣ HomotopyEquivalence( X, Y )( operation )

Returns a homotopy equivalence \(X\to Y\) or fail if \(X\) and \(Y\) are not homotopy equivalent.

gap> S:=PosetByCoveringRelations([1,2,3,4], [[3,1],[3,2],[4,1],[4,2]]);
<finite poset of size 4>
gap> S1:=MinimalFiniteModelSphere(1);
<finite poset of size 4>
gap> HomotopyEquivalence(S,S1);
<order preserving map>
gap> P:=PosetByCoveringRelations([1,2,3], [[3,1],[3,2]]);
<finite poset of size 3>
gap> HomotopyEquivalence(S,P);
fail

6.2 Weak points and simple homotopy type

The reference for this section is [Bar11, Section 4.2]. As before, we consider finite posets with the Alexandroff topology. A point \(x\in X\) is an up weak point if \(\{y\,:\, y> x\}\) is contractible. A point \(x\in X\) is a down weak point if \(\{y\,:\, y< x\}\) is contractible. A point \(x\in X\) is a weak point if it is either an up or a down weak point. A weak core for \(X\) is a subposet of \(X\) without weak poitns and obtained from \(X\) by removing weak points. The poset \(X\) is collapsible if it admits a weak core with only one point. The weak cores of a finite poset do not need to be unique up to isomorphism.

6.2-1 IsWeakPoint
‣ IsWeakPoint( X, x )( operation )

Checks if \(x\) is a weak point of \(X\).

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> IsWeakPoint(P,1);
true
gap> IsBeatPoint(P,1);
false

6.2-2 IsUpWeakPoint
‣ IsUpWeakPoint( X, x )( operation )

Checks if \(x\) is an weak point of \(X\).

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> IsUpWeakPoint(P,1);
true
gap> IsUpBeatPoint(P,1);
false

6.2-3 IsDownWeakPoint
‣ IsDownWeakPoint( X, x )( operation )

Checks if \(x\) is a down weak point of \(X\).

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> IsDownWeakPoint(P,4);
true
gap> IsBeatPoint(P,4);
false

6.2-4 WeakPoints
‣ WeakPoints( X )( attribute )

Return the list of all the weak points of the poset.

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> WeakPoints(P);
[ 1, 2, 3, 4 ]

6.2-5 UpWeakPoints
‣ UpWeakPoints( X )( attribute )

Return the list of all the up weak points of the poset.

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> UpWeakPoints(P);
[ 1, 2, 3 ]

6.2-6 DownWeakPoints
‣ DownWeakPoints( X )( attribute )

Return the list of all the down weak points of the poset.

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> DownWeakPoints(P);
[ 2, 3, 4 ]

6.2-7 WeakCore
‣ WeakCore( X )( operation )

A subposet of \(X\) without weak points obtained from \(X\) by removing weak points. Note that this subposet does not need to be unique up to isomorphism.

gap> P:=PosetByCoveringRelations([1,2,3,4], [[2,1], [3,1], [4,2], [4,3]]);
<finite poset of size 4>
gap> WeakCore(P);
<finite poset of size 1>

6.2-8 MinWeakCore
‣ MinWeakCore( X )( operation )

Returns a weak core of the poset with the minimum possible size. Again, this subposet does not need to be unique up to isomorphism.

gap> W:=TheWallet();
<finite poset of size 11>
gap> MinWeakCore(W);
<finite poset of size 1>

6.2-9 IsCollapsible
‣ IsCollapsible( X )( attribute )

Checks if the poset is collapsible.

gap> W:=TheWallet();
<finite poset of size 11>
gap> IsCollapsible(W);
true
gap> IsCollapsible(MinimalFiniteModelSphere(2));
false

6.3 Colorings

Colorings were introduced by Barmak and Minian in [BM14]. Given \(X\) a poset and \(A\) an (appropriate) coloring of the Hasse diagram of \(X\), they propose a technique to compute a presentation of the fundamental group of \(X\) (see Theorem 4.4). A \(\textit{coloring}\) or \(\textit{subdiagram}\) \(A\) of \(X\) is a subgraph of the Hasse diagram of \(X\). \(A\) has to satisfy some hypothesis to recover the fundamental group of \(X\). For instance, \(A\) could be a simple-connected diagram containing all the vertices of \(X\). Using colorings, they give a presentation of the fundamental group of \(X\) whose generators are the edges which are not in \(A\) and the relators are given by the \(\textit{digons}\). A digon in a poset \(X\) is a subdiagram which is the union of two different \(\textit{monotonic}\) (or directed) edge-paths from a point \(x\) to a point \(y\) of \(X\). This method can be applied to compute the fundamental group of any regular finite CW-complex by means of its face poset.

6.3-1 FundamentalGroupByColoring
‣ FundamentalGroupByColoring( X )( operation )
‣ FundamentalGroupByColoring( X, A )( operation )

Computes a presentation of the fundamental group of a connected poset X. If specified, A must be a simply-connected subdiagram of X. When A is not specified, a spanning tree in X is chosen arbitrarily. Returns an FpGroup isomorphic to \(\pi_1(X)\). This method is implemented according to the optimized Definition 6.2.1 of [Fer17], to also apply this algorithm to the Andrews-Curtis Conjecture.

gap> W:=TheWallet();;
gap> FundamentalGroupByColoring(W);
<fp group on the generators [ f1, f2, f3, f4, f5, f6 ]>
gap> RelatorsOfFpGroup(G);
[ f2, f3, f4, f5*f3^-1, f1*f5*f4^-1, f1*f6 ]
gap> SimplifiedFpGroup(G);
<fp group on the generators [  ]>
gap> A:=SpanningCollapsibleSubdiagram(W);;
gap> FundamentalGroupByColoring(W,A);
<fp group on the generators [  ]>

6.3-2 SpanningForestHasseDiagram
‣ SpanningForestHasseDiagram( X )( operation )

A spanning forest of the Hasse diagram of X.

6.3-3 RandomSpanningForestHasseDiagram
‣ RandomSpanningForestHasseDiagram( X )( operation )

A random spanning forest of the Hasse diagram of X.

6.3-4 SpanningTreeHasseDiagram
‣ SpanningTreeHasseDiagram( X )( operation )

A spanning tree of the Hasse diagram of X. Returns fail if the poset is not connected.

6.3-5 RandomSpanningTreeHasseDiagram
‣ RandomSpanningTreeHasseDiagram( X )( operation )

A random spanning tree of the Hasse diagram of X. Returns fail if the poset is not connected.

6.3-6 SpanningCollapsibleSubdiagram
‣ SpanningCollapsibleSubdiagram( X )( operation )

A spanning collapsible subdiagram of the Hasse diagram of X which is maximal (i.e. any addition of a single edge in the subdiagram corresponds to a non-collapsible poset).

6.3-7 RandomSpanningCollapsibleSubdiagram
‣ RandomSpanningCollapsibleSubdiagram( X )( operation )

A random maximal spanning collapsible subdiagram of the Hasse diagram of X.

6.4 Connectivity

6.4-1 PathInPoset
‣ PathInPoset( X, x, y )( operation )

A path from \(x\) to \(y\) in \(X\) of the minimum possible length. Returns fail if \(x\) and \(y\) are not in the same connected component of \(X\).

gap> A:=PosetByCoveringRelations([1..8], [[5,1], [5,2], [6,2], [6,3], [7,3], [7,4], [8,4], [8,1]]);
<finite poset of size 8>
gap> PathInPoset(A,1,4);
[ 1, 8, 4 ]
gap> PathInPoset(A,2,4);
[ 2, 5, 1, 8, 4 ]
gap> B:=PosetByCoveringRelations([1,2],[]);
<finite poset of size 2>
gap> PathInPoset(B,1,2);
fail

6.4-2 ConnectedComponents
‣ ConnectedComponents( X )( operation )

The connected components of \(X\), given as a list of subposets.

gap> S1:=MinimalFiniteModelSphere(1);;
gap> S2:=MinimalFiniteModelSphere(2);;
gap> C:=Coproduct(S1,S2);
<finite poset of size 10>
gap> pi0:=ConnectedComponents(C);
[ <finite poset of size 4>, <finite poset of size 6> ]
gap> IsomorphismPosets(S1,pi0[1]);
<order preserving map>
gap> IsomorphismPosets(S2,pi0[2]);
<order preserving map>

6.5 Fences and homotopies

Two maps \(f,g\colon X\to Y\) are homotopic if and only if they are in the same connected component of \(Y^X\) which is equivalent to the existence of a fence \(f=h_0\leq h_1 \geq h_2\leq \cdots \geq h_n=g\), see [Bar11, Section 1.2].

6.5-1 Fence
‣ Fence( f, g )( operation )

Given \(f,g\colon X\to Y\), if \(f\) and \(g\) are homotopic returns a fence (a path in \(Y^X\)) between \(f\) and \(g\) of the minimum possible length. Otherwise it returns fail.

gap> S1:=MinimalFiniteModelSphere(1);;
gap> point:=Set(S1)[1];;
gap> f:=PosetHomomorphismByImages(S1, S1, List(Set(S1),x->point));
<order preserving map>
gap> Fence(f,IdentityMap(S1));
fail
gap> A:=ConePoset(S1);
<finite poset of size 5>
gap> p:=MaximumPoset(A);;
gap> g:=PosetHomomorphismByImages(A, A, List(Set(A),x->p));
<order preserving map>
gap> Fence(g,IdentityMap(A));
[ <order preserving map>, <order preserving map> ]

6.5-2 AreHomotopic
‣ AreHomotopic( f, g )( operation )

Given \(f,g\colon X\to Y\), returns true if \(f\simeq g\), false otherwise.

gap> S1:=MinimalFiniteModelSphere(1);;
gap> point:=Set(S1)[1];;
gap> f:=PosetHomomorphismByImages(S1, S1, List(Set(S1),x->point));
<order preserving map>
gap> AreHomotopic(f,IdentityMap(S1));
false
gap> A:=ConePoset(S1);
<finite poset of size 5>
gap> p:=MaximumPoset(A);;
gap> g:=PosetHomomorphismByImages(A, A, List(Set(A),x->p));
<order preserving map>
gap> AreHomotopic(g,IdentityMap(A));
true
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 Bib Ind

generated by GAPDoc2HTML