Context
Homotopy theory
homotopy theory , (∞,1)-category theory , homotopy type theory
flavors: stable , equivariant , rational , p-adic , proper , geometric , cohesive , directed …
models: topological , simplicial , localic , …
see also algebraic topology
Introductions
Definitions
Paths and cylinders
Homotopy groups
Basic facts
Theorems
Contents
Idea
The join S ⋆ T S \star T of a pair S , T S, T of simplicial set (Ehlers 1993 ) is a simplicial set that may geometrically be thought of as a cone over T T with tip of shape S S . Topologically, it can also be thought of as the union of line segments connecting S S to T T if both are placed in general position, cf. join of topological spaces .
The join operation on simplicial sets generalizes the historically earlier notion of join of simplicial complexes , cf. Spanier 1966 . It is naturally discussed in view of augmented simplicial sets [Ehlers & Porter 2000 ]
If the simplicial sets in question are quasi-categories , then their join produces the corresponding join of quasi-categories that underlies many constructions in higher category theory , such as a definition of limits in quasi-categories .
Motivating examples
When S = Δ 0 S = \Delta^0 is the point , then the join S ⋆ T S \star T is a genuine cone over T T . Or if S = 2 S = 2 is the discrete two-point space, the join is the suspension of T T .
For example, consider the two cones over [ 2 ] [2] , the standard 2-simplex. The first picture represents [ 0 ] ⋆ [ 2 ] [0]\star [2] , while the second represents [ 2 ] ⋆ [ 0 ] [2]\star [0] .
Layer 1
[
0
]
[0]
0
0
1
1
2
2
Layer 1
[
0
]
[0]
0
0
2
2
1
1
[ 0 ] ⋆ [ 2 ] [ 2 ] ⋆ [ 0 ]
\begin{matrix}
\begin{svg}
<svg width="205" height="183" xmlns="http://www.w3.org/2000/svg" se:nonce="92019" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs>
<marker viewBox="0 0 10 10" id="se_arrow_92019_fw" refY="5" markerUnits="strokeWidth" markerWidth="5" markerHeight="5" orient="auto" refX="8">
<path d="m0,0l10,5l-10,5l5,-5l-5,-5z" fill="#000000"/>
</marker>
<linearGradient id="svg_92019_7" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#000000" stop-opacity="0"/>
<stop offset="1" stop-color="#000000" stop-opacity="0.25"/>
</linearGradient>
</defs>
<g>
<title>Layer 1</title>
<path fill="url(#svg_92019_7)" stroke-width="2" d="m106.666656,19.33334l4.708,116.302189l80.708687,36.197815l-85.416687,-152.500004z" id="svg_92019_6"/>
<path d="m106.375,20l-92,151l178,1l-86,-152z" id="svg_92019_1" fill="#000000" stroke-width="2" fill-opacity="0.25"/>
<path d="m14.125,170.75l97.734283,-36.5l80.515717,37.75" id="svg_92019_2" fill="#000000" fill-opacity="0.25" stroke-width="2"/>
<foreignObject x="96" y="0" id="svg_92019_3" font-size="16" width="20" height="20">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mo stretchy="false">[</mo>
<mn>0</mn>
<mo stretchy="false">]</mo>
</mrow>
<annotation encoding="application/x-tex">[0]</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="0" y="163.125" id="svg_92019_4" font-size="16" width="16" height="20">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>0</mn>
</mrow>
<annotation encoding="application/x-tex">0</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="104" y="136" font-size="16" width="16" height="20" id="svg_92019_5">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>1</mn>
</mrow>
<annotation encoding="application/x-tex">1</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="188.875" y="162.875" font-size="16" width="16" height="20" id="svg_92019_12">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>2</mn>
</mrow>
<annotation encoding="application/x-tex">2</annotation>
</semantics>
</math>
</foreignObject>
<line x1="14.875" y1="170.5" x2="109.125" y2="135.375" id="svg_92019_26" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_92019_fw)"/>
<line x1="14.625" y1="171" x2="181.25001" y2="172.125" id="svg_92019_27" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_92019_fw)"/>
<line x1="112.125" y1="134.625" x2="183.875" y2="168" id="svg_92019_28" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_92019_fw)"/>
<line x1="106.37498" y1="19.87501" x2="16.874986" y2="166.999999" id="svg_92019_29" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_92019_fw)"/>
<line x1="109.072297" y1="20.497995" x2="108.197297" y2="132.619014" id="svg_92019_30" stroke="#000000" stroke-width="2" fill="none" transform="rotate(-3.16201, 108.635, 76.5585)" marker-end="url(#se_arrow_92019_fw)"/>
<line x1="106.375" y1="19" x2="187.875" y2="164.99999" id="svg_92019_31" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_92019_fw)"/>
</g>
</svg>
\end{svg}
&
\begin{svg}
<svg width="205" height="183" xmlns="http://www.w3.org/2000/svg" se:nonce="82471" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs>
<marker viewBox="0 0 10 10" id="se_arrow_82471_fw" refY="5" markerUnits="strokeWidth" markerWidth="5" markerHeight="5" orient="auto" refX="8">
<path d="m0,0l10,5l-10,5l5,-5l-5,-5z" fill="#000000"/>
</marker>
<linearGradient y2="1" x2="1" y1="0" x1="0" id="svg_82471_16">
<stop stop-opacity="0" stop-color="#000000" offset="0"/>
<stop stop-opacity="1" stop-color="#000000" offset="1"/>
</linearGradient>
</defs>
<g>
<title>Layer 1</title>
<path fill="#000000" stroke-width="2" d="m14,8l87,156.25l87,-156.25l-174,0z" id="svg_82471_1" fill-opacity="0.25"/>
<line fill="none" stroke="#000000" stroke-width="2" fill-opacity="0.25" x1="14.75" y1="9" x2="96.75" y2="157.125006" id="svg_82471_3" marker-end="url(#se_arrow_82471_fw)"/>
<line fill="none" stroke="#000000" stroke-width="2" fill-opacity="0.25" x1="186.500007" y1="10.562499" x2="105.062506" y2="157.062488" id="svg_82471_4" marker-end="url(#se_arrow_82471_fw)"/>
<line fill="none" stroke="#000000" stroke-width="2" fill-opacity="0.25" x1="14.375" y1="7.875" x2="88.875006" y2="47.125002" id="svg_82471_5" marker-end="url(#se_arrow_82471_fw)"/>
<line fill="none" stroke="#000000" stroke-width="2" fill-opacity="0.25" x1="91.124998" y1="47.25" x2="178.437491" y2="11.937498" id="svg_82471_6" marker-end="url(#se_arrow_82471_fw)"/>
<line fill="none" stroke="#000000" stroke-width="2" fill-opacity="0.25" x1="16.375007" y1="7.625" x2="176.312498" y2="7.9375" id="svg_82471_7" marker-end="url(#se_arrow_82471_fw)"/>
<line fill="none" stroke="#000000" stroke-width="2" fill-opacity="0.25" x1="90.500001" y1="50" x2="101.062501" y2="155.625003" id="svg_82471_8" marker-end="url(#se_arrow_82471_fw)"/>
<foreignObject x="91.25" y="163.25" id="svg_82471_9" font-size="16" width="20" height="20">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mo stretchy="false">[</mo>
<mn>0</mn>
<mo stretchy="false">]</mo>
</mrow>
<annotation encoding="application/x-tex">[0]</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="0" y="0" id="svg_82471_10" font-size="16" width="16" height="20">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>0</mn>
</mrow>
<annotation encoding="application/x-tex">0</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="189" y="0.1875" id="svg_82471_11" font-size="16" width="16" height="20">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>2</mn>
</mrow>
<annotation encoding="application/x-tex">2</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="83.75" y="27.25" id="svg_82471_12" font-size="16" width="14" height="20">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>1</mn>
</mrow>
<annotation encoding="application/x-tex">1</annotation>
</semantics>
</math>
</foreignObject>
<path id="svg_82471_2" d="m188,7.916668l-97.666649,40.355015l10.610336,115.978271" fill-opacity="0.25" stroke-width="2" fill="#000000"/>
<path id="svg_82471_13" d="m14.999999,8.666668l85.666665,155.000004l-9.666664,-114.666672" fill-opacity="0.25" stroke-width="2" fill="url(#svg_82471_16)"/>
</g>
</svg>
\end{svg} \\
[0]\star [2] & [2]\star [0]
\end{matrix}
If you take two non-coplanar line segments in ℝ 3 \mathbb{R}^3 (such as A B A B and C D C D in the picture below), then join every point in one to every point in the other, you get a 3-simplex (the tetrahedron in the picture). You can think of this as being the union of all the cones on the first segment with cone points on the second one. We have that the join Δ [ 1 ] ⋆ Δ [ 1 ] \Delta[1]\star \Delta[1] is Δ [ 3 ] \Delta[3] .
0 ⟶ f 1 0 ′ ⟶ g 1 ′ ⟶ f ⋆ g
Layer 1
g
g
Layer 2
0
′
0'
1
′
1'
1
1
0
0
f
f
≅
Layer 1
Layer 2
0
0
1
′
1'
0
′
0'
1
1
f ≅ g ≅ [ 1 ] ⇒ f ⋆ g ≅ Δ [ 3 ]
\begin{gathered}
\begin{matrix}
0\overset{f}{\longrightarrow}1\\
\\
0'\underset{g}{\longrightarrow}1'
\end{matrix}
\overset{\quad f\star g\quad}{\longrightarrow}
\array{\arrayopts{\rowalign{center}}
\begin{svg}
<svg width="96" height="116" xmlns="http://www.w3.org/2000/svg" se:nonce="91144" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs>
<marker viewBox="0 0 10 10" id="se_arrow_fw1" refY="5" markerUnits="strokeWidth" markerWidth="5" markerHeight="5" orient="auto" refX="8">
<path d="m0,0l10,5l-10,5l5,-5l-5,-5z" fill="#000"/>
</marker>
<marker refX="8" orient="auto" markerHeight="5" markerWidth="5" markerUnits="strokeWidth" refY="5" id="se_arrow_91144_fw" viewBox="0 0 10 10">
<path fill="#000000" d="m0,0l10,5l-10,5l5,-5l-5,-5z"/>
</marker>
</defs>
<g display="inline">
<title>Layer 1</title>
<rect fill-opacity="0.25" stroke-width="2" fill="#000000" id="svg_91144_6" height="80.249997" width="80.75" y="19.875" x="6.375"/>
<path stroke-width="2" fill-opacity="0.15" fill="#000000" id="svg_91144_7" d="m6.625,20.25l80.25,80.027077l-80.25,0.222923"/>
<ellipse fill-opacity="0.5" ry="7.625" rx="7.375" stroke-width="2" fill="#ffffff" id="svg_91144_12" cy="99.874999" cx="87.125"/>
<ellipse fill-opacity="0.5" id="svg_91144_11" ry="8.374999" rx="8.3125" stroke-width="2" fill="#ffffff" cy="99.625" cx="9.3125"/>
<ellipse fill-opacity="0.5" id="svg_91144_10" ry="6.875" rx="6.4375" stroke-width="2" fill="#ffffff" cy="21.75" cx="86.187501"/>
<ellipse fill-opacity="0.5" ry="6.75" rx="5.5625" stroke-width="2" fill="#ffffff" id="svg_91144_1" cy="21.75" cx="7.0625"/>
<polyline se:connector="svg_97259_9 svg_97259_2" marker-end="url(#se_arrow_91144_fw)" stroke-dasharray="2,2" fill="none" stroke-width="2" stroke="#000000" points="79.2069,28 47.9784,60.0575 16.75,92.115" id="svg_91144_2"/>
<polyline se:connector="svg_97259_1 svg_97259_9" id="svg_97259_23" points="12.375,19.75 45.125,19.75 77.875,19.75" stroke="#000" stroke-width="2" fill="none" marker-end="url(#se_arrow_fw1)"/>
<line marker-end="url(#se_arrow_91144_fw)" fill="none" stroke-width="2" stroke="#000000" id="svg_91144_4" y2="90" x2="6.375" y1="28.25" x1="6.375"/>
<line id="svg_91144_5" marker-end="url(#se_arrow_91144_fw)" fill="none" stroke-width="2" stroke="#000000" y2="90" x2="86.875" y1="28.25" x1="86.875"/>
<line marker-end="url(#se_arrow_91144_fw)" fill="none" stroke-width="2" stroke="#000000" id="svg_91144_8" y2="93.999999" x2="80.250002" y1="25.25" x1="11.375"/>
<foreignObject height="20" width="16" font-size="16" id="svg_91144_13" y="96.25" x="35">
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML">
<semantics>
<mrow>
<mi>g</mi>
</mrow>
<annotation encoding="application/x-tex">g</annotation>
</semantics>
</math>
</foreignObject>
<line x1="17.374999" y1="100" x2="78" y2="100" id="svg_91144_14" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_91144_fw)"/>
</g>
<g>
<title>Layer 2</title>
<foreignObject x="1.875" y="91.75" font-size="16" width="14" height="16" id="svg_97259_2">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>0</mn>
<mo>′</mo>
</mrow>
<annotation encoding="application/x-tex">0'</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="81.875" y="91.75" font-size="16" width="14" height="16" id="svg_97259_16">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>1</mn>
<mo>′</mo>
</mrow>
<annotation encoding="application/x-tex">1'</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="78" y="12" font-size="16" width="18" height="16" id="svg_97259_9">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>1</mn>
</mrow>
<annotation encoding="application/x-tex">1</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="0" y="12" id="svg_97259_1" font-size="16" width="12" height="16">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>0</mn>
</mrow>
<annotation encoding="application/x-tex">0</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject height="20" width="16" font-size="16" id="svg_91144_9" y="0" x="35">
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML">
<semantics>
<mrow>
<mi>f</mi>
</mrow>
<annotation encoding="application/x-tex">f</annotation>
</semantics>
</math>
</foreignObject>
</g>
</svg>
\end{svg}
}
\cong
\array{\arrayopts{\rowalign{center}}
\begin{svg}
<svg width="108" height="110" xmlns="http://www.w3.org/2000/svg" se:nonce="22396" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<defs>
<marker viewBox="0 0 10 10" id="se_arrow_fw" refY="5" markerUnits="strokeWidth" markerWidth="5" markerHeight="5" orient="auto" refX="8">
<path d="m0,0l10,5l-10,5l5,-5l-5,-5z" fill="#000000"/>
</marker>
<marker viewBox="0 0 10 10" id="se_arrow_22396_fw" refY="5" markerUnits="strokeWidth" markerWidth="5" markerHeight="5" orient="auto" refX="8">
<path d="m0,0l10,5l-10,5l5,-5l-5,-5z" fill="#000000"/>
</marker>
</defs>
<g>
<title>Layer 1</title>
<path d="m3.8125,49.25l33.375,53.125l63.125,-41.625l-62.75,-52.875l-33.75,41.375z" id="svg_4422_11" fill="#000000" stroke-width="2" stroke-dasharray="2,2" fill-opacity="0.25"/>
<ellipse fill-opacity="0.5" cx="98" cy="63.375001" id="svg_22396_4" fill="#ffffff" stroke-width="2" rx="5.25" ry="11.125"/>
<path d="m3.875,49.0625l35.25,55.75l0.25,-97.25" id="svg_4422_12" fill="#000000" fill-opacity="0.15" stroke-width="2" stroke-dasharray="2,2"/>
<ellipse fill-opacity="0.5" cx="38.90625" cy="102.125" id="svg_22396_3" fill="#ffffff" stroke-width="2" rx="10.90625" ry="7.75"/>
<ellipse fill-opacity="0.5" cx="5.25" cy="51" id="svg_22396_2" fill="#ffffff" stroke-width="2" rx="4.5" ry="7"/>
<ellipse fill-opacity="0.5" cx="37.250001" cy="9.25" id="svg_22396_1" fill="#ffffff" stroke-width="2" rx="9.749999" ry="8.25"/>
<line x1="8.375" y1="56.750001" x2="32.062498" y2="93.875" id="svg_22396_6" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_22396_fw)"/>
<line x1="92.75" y1="65.875" x2="48.062501" y2="95.250001" id="svg_22396_8" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_22396_fw)"/>
<line x1="10.000001" y1="51.5" x2="91" y2="61" id="svg_22396_9" stroke="#000000" stroke-width="2" stroke-dasharray="2,2" fill="none" marker-end="url(#se_arrow_22396_fw)"/>
<line x1="39.5" y1="17.625" x2="39.375" y2="92.375" id="svg_22396_5" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_22396_fw)"/>
<line x1="31.5" y1="16.25" x2="8.249999" y2="43.249999" id="svg_22396_10" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_22396_fw)"/>
<line x1="45" y1="14" x2="92.999999" y2="53.999999" id="svg_22396_11" stroke="#000000" stroke-width="2" fill="none" marker-end="url(#se_arrow_22396_fw)"/>
</g>
<g>
<title>Layer 2</title>
<foreignObject y="0" x="30.75" id="svg_4422_1" font-size="16" width="14" height="16">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>0</mn>
</mrow>
<annotation encoding="application/x-tex">0</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="92.375" y="52" id="svg_4422_4" font-size="16" width="16" height="16">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>1</mn>
<mo>′</mo>
</mrow>
<annotation encoding="application/x-tex">1'</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="33.25" y="94.375" id="svg_4422_2" font-size="16" width="16" height="16">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>0</mn>
<mo>′</mo>
</mrow>
<annotation encoding="application/x-tex">0'</annotation>
</semantics>
</math>
</foreignObject>
<foreignObject x="0" y="41.25" id="svg_4422_3" font-size="16" width="8" height="16">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
<semantics>
<mrow>
<mn>1</mn>
</mrow>
<annotation encoding="application/x-tex">1</annotation>
</semantics>
</math>
</foreignObject>
</g>
</svg>
\end{svg}
}\\
f\cong g \cong [1] \Rightarrow f\star g \cong \Delta[3]
\end{gathered}
Definition
We first define the join of simplicial sets as the restriction to simplicial sets of the extension of the ordinal sum operation on the augmented simplex category Δ a \Delta_a to augmented simplicial sets.
Then we give the more explicit definition in terms of concrete formulas. We first refer to the description of the ordinal sum , and then how it induces structure on the category of augmented simplicial sets .
By Day convolution
Via the general process of Day convolution , the ordinal sum monoidal structure on Δ a \Delta_a is lifted to a monoidal structure on presheaves on Δ a \Delta_a , i.e., to the the category asSet or sSet + sSet_+ of augmented simplicial set s. This is given by a coend formula:
Definition/Proposition
The join of simplicial sets is equivalently expressed as
⋆ : sSet + × sSet + → sSet +
\star : sSet_+ \times sSet_+ \to sSet_+
( S ⋆ S ′ ) ( − ) ≔ ∫ [ i ] , [ j ] ∈ Δ a ( S i × S ′ j ) × Hom Δ a ( − , [ i ] ⊞ [ j ] ) .
(S \star S')(-)
\coloneqq
\int^{[i],[j] \in \Delta_a}
(S_i \times S'_j) \times Hom_{\Delta_a}(-,[i] \boxplus [j])
\,.
Note that the join of simplicial sets S ⋆ T S \star T is cocontinuous in each of its separate arguments S S and T T (this is true generally of Day convolution products).
Definition
For S S a simplicial set, let S ^ \hat S denote the augmented simplicial set which equals S S in all degrees except in degree -1, where it is the point, ( S ^ ) − 1 = pt ({\hat S})_{-1} = pt . This is the trivial augmentation of S S .
Definition
The join of two ordinary simplicial set s S 1 S_1 and S 2 S_2 is the join of their trivial augmentation :
S 1 ⋆ S 2 ≔ S ^ 1 ⋆ S ^ 2 .
S_1 \star S_2 \coloneqq {\hat S_1} \star {\hat S_2}
\,.
The join of two non-augmented simplicial sets is given by the formula
( S ⋆ S ′ ) n ≔ S n ∪ S ′ n ∪ ( ∪ i + j = n − 1 S i × S ′ j ) .
(S \star S')_n \coloneqq S_n \cup S'_n \cup
(\cup_{i+j = n-1} S_i \times S'_j)
\,.
The i i -th boundary map
d i : ( S ⋆ T ) n → ( S ⋆ T ) n − 1
d_i : (S \star T)_n \to (S \star T)_{n-1}
is defined on S n S_n and T n T_n using the i i th boundary map on S S and T T .
Given σ ∈ S j \sigma \in S_j and τ ∈ T k \tau \in T_k , we have:
d i ( σ , τ ) = { ( d i σ , τ ) if i ≤ j , j ≠ 0 ( σ , d i − j − 1 τ ) if i > j , k ≠ 0
d_i (\sigma, \tau) =
\left\{
\array{
(d_i \sigma, \tau) & if\; i \leq j , j \neq 0
\\
(\sigma, d_{i-j-1} \tau) & if\; i \gt j, k \neq 0
}
\right.
If j = 0 j = 0 , then
d 0 ( σ , τ ) = τ ∈ T n − 1 ⊂ ( S ⋆ T ) n − 1 .
d_0(\sigma, \tau) = \tau \in T_{n-1} \subset (S \star T)_{n-1}
\,.
If k = 0 k = 0 , then
d n ( σ , τ ) = σ ∈ S n − 1 ⊂ ( S ⋆ T ) n − 1 .
d_n(\sigma, \tau) = \sigma \in S_{n-1} \subset (S \star T)_{n-1}
\,.
Join of quasi-categories
If the simplicial sets in question are quasi-categories , their join computes the corresponding join of quasi-categories , effectively an over quasi-category construction.
In this sense, the join can also be computed – up to equivalence of quasi-categories – as the homotopy pushout of the two projections out of S × S ′ S \times S' .
In this form, the join is used in definition 1.2.8.1, p. 42 of HTT
Examples
Recall that the join of augmented simplicial sets S ⋆ T S \star T is a cocontinuous functor in each of its separate arguments S S and T T (this is true generally of Day convolution products).
This observation can help simplify calculations. For example, simplicial joins preserve unions in the first argument S S , and inasmuch as horn s are unions of face simplices, this allows one to compute joins of horns with simplices.
As an operation on simplicial sets, S ⋆ T S \star T merely commutes with connected colimits (since these preserve the property of having trivial augmentation). However, for each S S , the natural inclusion S ≅ S ⋆ ∅ → S ⋆ T S \cong S \star \varnothing \to S \star T induces a functor S ⋆ ( − ) : sSet → S / sSet S \star (-) : sSet \to S/sSet that does preserve colimits. Similarly, ( − ) ⋆ T : sSet → T / sSet (-) \star T : sSet \to T/sSet preserves colimits.
Joins with the point: cones
For { v } = Δ [ 0 ] \{v\} = \Delta[0] the point , a join with the point is called a cone with cone vertex v v : for S ∈ sSet S \in sSet we say
Universal images of cones and cocones over a fixed base S S in a quasi-category C C are limits and colimits in that quasi-category .
For instance, the cone over the interval Δ [ 1 ] \Delta[1] is the 2-simplex
{ v } ⋆ Δ [ 1 ] = ( v ↙ ⇙ ↘ 0 → 1 ) ≃ Δ [ 2 ] .
\{v\} \star \Delta[1]
=
\left(
\array{
&& v
\\
& \swarrow &\swArrow& \searrow
\\
0 &&\to&& 1
}
\right)
\simeq
\Delta[2]
\,.
More generally, the cone over the n n -simplex is the ( n + 1 ) (n+1) -simplex
Δ [ n ] ◃ ≃ Δ [ n + 1 ] .
\Delta[n]^{\triangleleft} \simeq \Delta[n+1]
\,.
Cones of 2-horn s are simplicial 2-squares ≃ Δ [ 1 ] × Δ [ 1 ] \simeq \Delta[1] \times \Delta[1] :
Δ [ 1 ] × Δ [ 1 ] ≃ { v } ⋆ Λ 2 [ 2 ] = ( v → 1 ↓ ⇙ ↘ ⇙ ↓ 0 → 2 )
\Delta[1] \times \Delta[1]
\simeq
\{v\} \star \Lambda_2[2]
=
\left(
\array{
v &\to& 1
\\
\downarrow &{}_{\swArrow}\searrow^{\swArrow}& \downarrow
\\
0 &\to& 2
}
\right)
and
Δ [ 1 ] × Δ [ 1 ] ≃ Λ 0 [ 2 ] ⋆ { v } = ( 0 → 1 ↓ ⇙ ↘ ⇙ ↓ 2 → v ) .
\Delta[1] \times \Delta[1]
\simeq
\Lambda_0[2] \star \{v\}
=
\left(
\array{
0&\to& 1
\\
\downarrow &{}_{\swArrow}\searrow^{\swArrow}& \downarrow
\\
2 &\to& v
}
\right)
\,.
Joins of simplices
Effectively by the definition from the ordinal sum, we have that the join of two simplices is another simplex:
Δ [ k ] ⋆ Δ [ l ] = Δ [ k + l + 1 ] .
\Delta[k] \star \Delta[l] = \Delta[k + l + 1]
\,.
In particular, the cone over the n n -simplex is the ( n + 1 ) (n+1) -simplex
Δ [ 0 ] ⋆ Δ [ n ] = Δ [ n + 1 ]
\Delta[0] \star \Delta[n] = \Delta[n+1]
and hence
Δ [ n ] = Δ [ 0 ] ⋆ ⋯ ⋆ Δ [ 0 ] .
\Delta[n] = \Delta[0] \star \cdots \star \Delta[0]
\,.
Notice that while Δ [ n + 1 ] ≃ Δ [ 0 ] ⋆ Δ [ n ] ≃ Δ [ n ] ⋆ Δ [ 0 ] \Delta[n+1] \simeq \Delta[0]\star\Delta[n] \simeq \Delta[n] \star \Delta[0] , the identifications of the cone point of course differ in both cases. The asymmetry is seen, for instance, by restricting attention to the cone over the boundary of the n n -simplex, where we have
∂ Δ [ n ] ⋆ Δ [ 0 ] = Λ n + 1 [ n + 1 ]
\partial \Delta[n] \star \Delta[0] = \Lambda_{n+1}[n+1]
and
Δ [ 0 ] ⋆ ∂ Δ [ n ] = Λ 0 [ n + 1 ] .
\Delta[0] \star \partial \Delta[n] = \Lambda_0[n+1]
\,.
Simplicial n n -sphere
Let ∂ Δ [ 1 ] = Δ [ 0 ] ⊔ Δ [ 0 ] \partial \Delta[1] = \Delta[0] \sqcup \Delta[0] the simplicial 0-sphere : just the disjoint union of the point. Then the n n -fold join of ∂ Δ [ 1 ] \partial \Delta[1] with itself is a simplicial model for the n n -sphere
S 0 ≔ ∂ Δ [ 1 ] \mathbf{S}^0 \coloneqq \partial \Delta[1] S n ≔ S 0 ⋆ S n − 1 \mathbf{S}^n \coloneqq \mathbf{S}^0 \star \mathbf{S}^{n-1}
for n ∈ ℕ n \in \mathbb{N} , n > 0 n \gt 0 . The geometric realization of S n \mathbf{S}^n is equivalent to the topological n n -sphere.
See Ehlers/Porter p. 8 .
Properties
Compatibility with quasi-categories
This is due to Andre Joyal . A proof appears as HTT, prop. 1.2.8.3 .
Compatibility with homotopy coherent nerve
There is also a join operation on categories and sSet-categories :
Definition
Let C , D ∈ sSet Cat C,D \in sSet Cat . Then define C ⋆ D C \star D to be the sSet sSet -category given by
Obj ( C ⋆ D ) = Obj ( C ) ∐ Obj ( D )
Obj(C \star D) = Obj(C) \coprod Obj(D)
C ⋆ D ( x , y ) = { C ( x , y ) for x , y ∈ C D ( x , y ) for x , y ∈ D ∅ for x ∈ D , y ∈ C * for x ∈ C , y ∈ D
C \star D(x,y) =
\left\{
\array{
C(x,y) & for\; x,y \in C
\\
D(x,y) & for\; x,y \in D
\\
\emptyset & for \;x \in D, y \in C
\\
* & for\; x \in C , y \in D
}
\right.
with the obvious composition operations.
Write
τ hc : sSet → sSet Cat
\tau_{hc} : sSet \to sSet Cat
for the left adjoint of the homotopy coherent nerve functor (denoted ℭ \mathfrak{C} in HTT . )
Proposition
For S , S ′ S, S' two simplicial set s, we have that
the two inclusions τ hc ( S ) , τ hc ( S ′ ) → τ hc ( S ⋆ S ′ ) \tau_{hc}(S), \tau_{hc}(S') \to \tau_{hc}(S\star S') are full and faithful ;
τ hc ( S ⋆ S ′ ) \tau_{hc}(S \star S') is in general not isomorphic to τ hc ( S ) ⋆ τ hc ( S ′ ) \tau_{hc}(S) \star \tau_{hc}(S') ; and
the canonical morphism
τ hc ( S ⋆ S ′ ) → τ hc ( S ) ⋆ τ hc ( S ′ )
\tau_{hc}(S \star S') \to \tau_{hc}(S) \star \tau_{hc}(S')
is an equivalence in the model structure on sSet-categories .
This is HTT, corollary 4.2.1.4 .
References
The historical predecessor notion of the join of simplicial complexes :
Early discussion of the join operation on simplicial sets:
Philip J. Ehlers , Algebraic Homotopy in Simplicially Enriched Groupoids , PhD thesis, University of Wales Bangor (1993) [pdf ]
attributed there to unpublished notes of Jack Duskin and Don van Osdol .
Published discussion, relating to augmented simplicial sets :
Discussion emphasizing relation to Day convolution
Discussion in homotopy type theory (with application to n-image factorization):