next | previous | forward | backward | up | index | toc

# link(SimplicialComplex,RingElement) -- make the link of a face in an abstract simplicial complex

## Synopsis

• Usage:
link(Delta, F)
• Inputs:
• Delta, ,
• F, , that is a monomial representing a face of $\Delta$
• Outputs:
• , the link of face $f$ in $\Delta$

## Description

The link of a face $F$ in the abstract simplicial complex $\Delta$ is the set of faces that are disjoint from $F$ but whose unions with $F$ lie in $\Delta$.

Following Example 1.39 in Miller-Sturmfels' Combinatorial Commutative Algebra, we consider a simplicial complex with 6 facets. The link of the vertex $a$ consists of the vertex $e$ along with the proper faces of the triangle $b*c*d$. The link of the vertex $c$ is pure of dimension $1$; its four facets being the three edges of the triangle $a*b*d$ plus the extra edge $b*e$. The link of $e$ consists of the vertex $a$ along with the edge $b*c$. The link of the edge $b*c$ consists of the three remaining vertices. Finally, the link of the edge $a*e$ is the irrelevant complex.

 i1 : S = QQ[a..e]; i2 : Δ = simplicialComplex monomialIdeal (d*e, a*b*e, a*c*e, a*b*c*d) o2 = simplicialComplex | ae bce bcd acd abd abc | o2 : SimplicialComplex i3 : link (Δ, a) o3 = simplicialComplex | e cd bd bc | o3 : SimplicialComplex i4 : link (Δ, c) o4 = simplicialComplex | be bd ad ab | o4 : SimplicialComplex i5 : link (Δ, e) o5 = simplicialComplex | a bc | o5 : SimplicialComplex i6 : link (Δ, b*c) o6 = simplicialComplex | e d a | o6 : SimplicialComplex i7 : link (Δ, a*e) o7 = simplicialComplex | 1 | o7 : SimplicialComplex i8 : assert (facets link (Δ, a) === {e, c*d, b*d, b*c}) i9 : assert (facets link (Δ, c) === {b*e, b*d, a*d, a*b}) i10 : assert (facets link (Δ, e) === {a, b*c}) i11 : assert (facets link (Δ, b*c) === {e,d,a}) i12 : assert (facets link (Δ, a*e) === {1_S}) i13 : assert (isPure link (Δ, c) and dim link (Δ, a*e) === -1)

The link of the empty face equals the original simplicial complex.

 i14 : link(Δ, 1_S) o14 = simplicialComplex | ae bce bcd acd abd abc | o14 : SimplicialComplex i15 : void = simplicialComplex monomialIdeal 1_S o15 = simplicialComplex 0 o15 : SimplicialComplex i16 : link (void, 1_S) o16 = simplicialComplex 0 o16 : SimplicialComplex i17 : assert (link (Δ, 1_S) === Δ and link(void, 1_S) === void)

If $G$ is a face in the link of some face $F$, then $F$ is a face in the link of $G$.

 i18 : S = ZZ/101[a..g]; i19 : Δ = simplicialComplex {a*b*c, a*c*d, a*d*e, a*e*f, a*f*g, a*b*g} o19 = simplicialComplex | afg abg aef ade acd abc | o19 : SimplicialComplex i20 : link (Δ, a*b) o20 = simplicialComplex | g c | o20 : SimplicialComplex i21 : link (Δ, g) o21 = simplicialComplex | af ab | o21 : SimplicialComplex i22 : link (Δ, c) o22 = simplicialComplex | ad ab | o22 : SimplicialComplex

The dual version of Hochster's formula (see Corollary 1.40 in Miller-Sturmfels) relates the Betti numbers of a Stanley–Reisner ideal with the reduced homology of a link in the Alexander dual simplicial complex.

 i23 : betti res ideal Δ 0 1 2 3 4 o23 = total: 1 9 16 9 1 0: 1 . . . . 1: . 9 16 9 . 2: . . . . 1 o23 : BettiTally i24 : R = QQ[a..e, DegreeRank => 5]; i25 : Γ = simplicialComplex monomialIdeal (d*e, a*b*e, a*c*e, a*b*c*d) o25 = simplicialComplex | ae bce bcd acd abd abc | o25 : SimplicialComplex i26 : prune Tor_0(R^1/gens R,ideal Γ) o26 = cokernel {1, 1, 1, 1, 0} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e d c b a | {1, 1, 0, 0, 1} | 0 0 0 0 0 e d c b a 0 0 0 0 0 0 0 0 0 0 | {1, 0, 1, 0, 1} | 0 0 0 0 0 0 0 0 0 0 e d c b a 0 0 0 0 0 | {0, 0, 0, 1, 1} | e d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 4 o26 : R-module, quotient of R i27 : assert (hilbertFunction({1,1,1,1,0}, Tor_0(R^1/gens R, ideal Γ)) === rank HH_(-1) (link (dual Γ, e))) i28 : assert (hilbertFunction({1,1,0,0,1}, Tor_0(R^1/gens R, ideal Γ)) === rank HH_(-1) (link (dual Γ, c*d))) i29 : assert (hilbertFunction({1,0,1,0,1}, Tor_0(R^1/gens R, ideal Γ)) === rank HH_(-1) (link (dual Γ, b*d))) i30 : assert (hilbertFunction({0,0,0,1,1}, Tor_0(R^1/gens R, ideal Γ)) === rank HH_(-1) (link (dual Γ, a*b*c))) i31 : prune Tor_1(R^1/gens R, ideal Γ) o31 = cokernel {1, 1, 1, 0, 1} | e d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {1, 1, 0, 1, 1} | 0 0 0 0 0 e d c b a 0 0 0 0 0 0 0 0 0 0 | {1, 0, 1, 1, 1} | 0 0 0 0 0 0 0 0 0 0 e d c b a 0 0 0 0 0 | {1, 1, 1, 1, 1} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e d c b a | 4 o31 : R-module, quotient of R i32 : assert (hilbertFunction({1,1,1,0,1}, Tor_1(R^1/gens R, ideal Γ)) === rank HH_0 (link (dual Γ, d))) i33 : assert (hilbertFunction({1,1,0,1,1}, Tor_1(R^1/gens R, ideal Γ)) === rank HH_0 (link (dual Γ, c))) i34 : assert (hilbertFunction({1,0,1,1,1}, Tor_1(R^1/gens R, ideal Γ)) === rank HH_0 (link (dual Γ, b))) i35 : assert (hilbertFunction({1,1,1,1,1}, Tor_1(R^1/gens R, ideal Γ)) === rank HH_0 (link (dual Γ, 1_R))) i36 : prune Tor_2(R^1/gens R, ideal Γ) o36 = cokernel {1, 1, 1, 1, 1} | e d c b a | 1 o36 : R-module, quotient of R i37 : assert (hilbertFunction({1,1,1,1,1}, Tor_2(R^1/gens R, ideal Γ)) === rank HH_1 (link (dual Γ, 1_R)))

The Reisner criterion for the Cohen-Macaulay property of the Stanley–Reisner ring involves links, see Theorem 5.53 in Miller-Sturmfels. Specifically, an abstract simplicial complex $\Delta$ is Cohen-Macaulay if and only if, for all faces $F$ in $\Delta$ and all $i$ such that $i < \operatorname{dim} \operatorname{link}(\Delta, F)$, the $i$-th reduced homology of $\operatorname{link}(\Delta, F)$ vanishes.

 i38 : R' = QQ[a..h]; i39 : B = bartnetteSphereComplex R' o39 = simplicialComplex | defh befh cdfh bcfh adeh abeh acdh abch defg cefg adfg acfg bdeg bceg abdg abcg bcef acdf abde | o39 : SimplicialComplex i40 : pdim comodule ideal B === codim ideal B -- B is Cohen-Macaulay o40 = true i41 : assert all (flatten apply(-1..2, i -> (faces B)#i), f -> ( L := link (B, f); all (-1..dim L - 1, j -> HH_j(L) == 0)))