Simplicial
\(\newcommand{\footnotename}{footnote}\)
\(\def \LWRfootnote {1}\)
\(\newcommand {\footnote }[2][\LWRfootnote ]{{}^{\mathrm {#1}}}\)
\(\newcommand {\footnotemark }[1][\LWRfootnote ]{{}^{\mathrm {#1}}}\)
\(\let \LWRorighspace \hspace \)
\(\renewcommand {\hspace }{\ifstar \LWRorighspace \LWRorighspace }\)
\(\newcommand {\mathnormal }[1]{{#1}}\)
\(\newcommand \ensuremath [1]{#1}\)
\(\newcommand {\LWRframebox }[2][]{\fbox {#2}} \newcommand {\framebox }[1][]{\LWRframebox } \)
\(\newcommand {\setlength }[2]{}\)
\(\newcommand {\addtolength }[2]{}\)
\(\newcommand {\setcounter }[2]{}\)
\(\newcommand {\addtocounter }[2]{}\)
\(\newcommand {\arabic }[1]{}\)
\(\newcommand {\number }[1]{}\)
\(\newcommand {\noalign }[1]{\text {#1}\notag \\}\)
\(\newcommand {\cline }[1]{}\)
\(\newcommand {\directlua }[1]{\text {(directlua)}}\)
\(\newcommand {\luatexdirectlua }[1]{\text {(directlua)}}\)
\(\newcommand {\protect }{}\)
\(\def \LWRabsorbnumber #1 {}\)
\(\def \LWRabsorbquotenumber "#1 {}\)
\(\newcommand {\LWRabsorboption }[1][]{}\)
\(\newcommand {\LWRabsorbtwooptions }[1][]{\LWRabsorboption }\)
\(\def \mathchar {\ifnextchar "\LWRabsorbquotenumber \LWRabsorbnumber }\)
\(\def \mathcode #1={\mathchar }\)
\(\let \delcode \mathcode \)
\(\let \delimiter \mathchar \)
\(\def \oe {\unicode {x0153}}\)
\(\def \OE {\unicode {x0152}}\)
\(\def \ae {\unicode {x00E6}}\)
\(\def \AE {\unicode {x00C6}}\)
\(\def \aa {\unicode {x00E5}}\)
\(\def \AA {\unicode {x00C5}}\)
\(\def \o {\unicode {x00F8}}\)
\(\def \O {\unicode {x00D8}}\)
\(\def \l {\unicode {x0142}}\)
\(\def \L {\unicode {x0141}}\)
\(\def \ss {\unicode {x00DF}}\)
\(\def \SS {\unicode {x1E9E}}\)
\(\def \dag {\unicode {x2020}}\)
\(\def \ddag {\unicode {x2021}}\)
\(\def \P {\unicode {x00B6}}\)
\(\def \copyright {\unicode {x00A9}}\)
\(\def \pounds {\unicode {x00A3}}\)
\(\let \LWRref \ref \)
\(\renewcommand {\ref }{\ifstar \LWRref \LWRref }\)
\( \newcommand {\multicolumn }[3]{#3}\)
\(\require {textcomp}\)
\(\newcommand {\intertext }[1]{\text {#1}\notag \\}\)
\(\let \Hat \hat \)
\(\let \Check \check \)
\(\let \Tilde \tilde \)
\(\let \Acute \acute \)
\(\let \Grave \grave \)
\(\let \Dot \dot \)
\(\let \Ddot \ddot \)
\(\let \Breve \breve \)
\(\let \Bar \bar \)
\(\let \Vec \vec \)
\(\require {mathtools}\)
\(\newenvironment {crampedsubarray}[1]{}{}\)
\(\newcommand {\smashoperator }[2][]{#2\limits }\)
\(\newcommand {\SwapAboveDisplaySkip }{}\)
\(\newcommand {\LaTeXunderbrace }[1]{\underbrace {#1}}\)
\(\newcommand {\LaTeXoverbrace }[1]{\overbrace {#1}}\)
\(\newcommand {\LWRmultlined }[1][]{\begin {multline*}}\)
\(\newenvironment {multlined}[1][]{\LWRmultlined }{\end {multline*}}\)
\(\let \LWRorigshoveleft \shoveleft \)
\(\renewcommand {\shoveleft }[1][]{\LWRorigshoveleft }\)
\(\let \LWRorigshoveright \shoveright \)
\(\renewcommand {\shoveright }[1][]{\LWRorigshoveright }\)
\(\newcommand {\shortintertext }[1]{\text {#1}\notag \\}\)
\(\newcommand {\vcentcolon }{\mathrel {\unicode {x2236}}}\)
\(\def \LWRtensorindicesthreesub #1#2{{_{#2}}\LWRtensorindicesthree }\)
\(\def \LWRtensorindicesthreesup #1#2{{^{#2}}\LWRtensorindicesthree }\)
\(\newcommand {\LWRtensorindicesthreenotsup }{}\)
\(\newcommand {\LWRtensorindicesthreenotsub }{ \ifnextchar ^ \LWRtensorindicesthreesup \LWRtensorindicesthreenotsup }\)
\(\newcommand {\LWRtensorindicesthree }{ \ifnextchar _ \LWRtensorindicesthreesub \LWRtensorindicesthreenotsub }\)
\(\newcommand {\LWRtensorindicestwo }{ \ifstar \LWRtensorindicesthree \LWRtensorindicesthree }\)
\(\newcommand {\indices }[1]{\LWRtensorindicestwo #1}\)
\(\newcommand {\LWRtensortwo }[3][]{{}\indices {#1}{#2}\indices {#3}}\)
\(\newcommand {\tensor }{\ifstar \LWRtensortwo \LWRtensortwo }\)
\(\newcommand {\LWRnuclidetwo }[2][]{{\vphantom {\mathrm {#2}}{}^{\LWRtensornucleonnumber }_{#1}\mathrm {#2}}}\)
\(\newcommand {\nuclide }[1][]{\def \LWRtensornucleonnumber {#1}\LWRnuclidetwo }\)
\(\newcommand {\FF }{\mathbb {F}}\)
\(\newcommand {\cO }{\mathcal {O}}\)
\(\newcommand {\cC }{\mathcal {C}}\)
\(\newcommand {\cP }{\mathcal {P}}\)
\(\newcommand {\cF }{\mathcal {F}}\)
\(\newcommand {\cS }{\mathcal {S}}\)
\(\newcommand {\cK }{\mathcal {K}}\)
\(\newcommand {\cM }{\mathcal {M}}\)
\(\newcommand {\GG }{\mathbb {G}}\)
\(\newcommand {\ZZ }{\mathbb {Z}}\)
\(\newcommand {\NN }{\mathbb {N}}\)
\(\newcommand {\PP }{\mathbb {P}}\)
\(\newcommand {\QQ }{\mathbb {Q}}\)
\(\newcommand {\RR }{\mathbb {R}}\)
\(\newcommand {\LL }{\mathbb {L}}\)
\(\newcommand {\HH }{\mathbb {H}}\)
\(\newcommand {\EE }{\mathbb {E}}\)
\(\newcommand {\SP }{\mathbb {S}}\)
\(\newcommand {\CC }{\mathbb {C}}\)
\(\newcommand {\FF }{\mathbb {F}}\)
\(\renewcommand {\AA }{\mathbb {A}}\)
\(\newcommand {\sF }{\mathscr {F}}\)
\(\newcommand {\sC }{\mathscr {C}}\)
\(\newcommand {\ts }{\textsuperscript }\)
\(\newcommand {\mf }{\mathfrak }\)
\(\newcommand {\cc }{\mf {c}}\)
\(\newcommand {\mg }{\mf {g}}\)
\(\newcommand {\ma }{\mf {a}}\)
\(\newcommand {\mh }{\mf {h}}\)
\(\newcommand {\mn }{\mf {n}}\)
\(\newcommand {\mc }{\mf {c}}\)
\(\newcommand {\ul }{\underline }\)
\(\newcommand {\mz }{\mf {z}}\)
\(\newcommand {\me }{\mf {e}}\)
\(\newcommand {\mff }{\mf {f}}\)
\(\newcommand {\mm }{\mf {m}}\)
\(\newcommand {\mt }{\mf {t}}\)
\(\newcommand {\pp }{\mf {p}}\)
\(\newcommand {\qq }{\mf {q}}\)
\(\newcommand {\gl }{\mf {gl}}\)
\(\newcommand {\msl }{\mf {sl}}\)
\(\newcommand {\so }{\mf {so}}\)
\(\newcommand {\mfu }{\mf {u}}\)
\(\newcommand {\su }{\mf {su}}\)
\(\newcommand {\msp }{\mf {sp}}\)
\(\renewcommand {\aa }{\mf {a}}\)
\(\newcommand {\bb }{\mf {b}}\)
\(\newcommand {\sR }{\mathscr {R}}\)
\(\newcommand {\lb }{\langle }\)
\(\newcommand {\rb }{\rangle }\)
\(\newcommand {\ff }{\mf {f}}\)
\(\newcommand {\ee }{\epsilon }\)
\(\newcommand {\heart }{\heartsuit }\)
\(\newcommand {\Mloc }{\mathcal {M}_{\text {loc}}}\)
\(\newcommand {\Mnilpnil }{\mathcal {M}_{\text {nil}}^{\text {pnil}}}\)
\(\newcommand {\Uloc }{\mathcal {U}_{\text {loc}}}\)
\(\newcommand {\Mnil }{\mathcal {M}_{\text {nil}}}\)
\(\newcommand {\Unil }{\mathcal {U}_{\text {nil}}}\)
\(\newcommand {\floor }[1]{\lfloor #1 \rfloor }\)
\(\newcommand {\ceil }[1]{\lceil #1 \rceil }\)
\(\newcommand {\pushout }{\arrow [ul, phantom, "\ulcorner ", very near start]}\)
\(\newcommand {\pullback }{\arrow [dr, phantom, "\lrcorner ", very near start]}\)
\(\newcommand {\simp }[1]{#1^{\Delta ^{op}}}\)
\(\newcommand {\arrowtcupp }[2]{\arrow [bend left=50, ""{name=U, below,inner sep=1}]{#1}\arrow [Rightarrow,from=U,to=MU,"#2"]}\)
\(\newcommand {\arrowtclow }[2]{\arrow [bend right=50, ""{name=L,inner sep=1}]{#1}\arrow [Rightarrow,from=LM,to=L]{}[]{#2}}\)
\(\newcommand {\arrowtcmid }[2]{\arrow [""{name=MU,inner sep=1},""{name=LM,below,inner sep=1}]{#1}[pos=.1]{#2}}\)
\(\newcommand {\dummy }{\textcolor {white}{\bullet }}\)
\(\newcommand {\adjunction }[4]{ #1\hspace {2pt}\colon #2 \leftrightharpoons #3 \hspace {2pt}\colon #4 }\)
\(\newcommand {\aug }{\mathop {\rm aug}\nolimits }\)
\(\newcommand {\MC }{\mathop {\rm MC}\nolimits }\)
\(\newcommand {\art }{\mathop {\rm art}\nolimits }\)
\(\newcommand {\DiGrph }{\mathop {\rm DiGrph}\nolimits }\)
\(\newcommand {\FMP }{\mathop {\rm FMP}\nolimits }\)
\(\newcommand {\CAlg }{\mathop {\rm CAlg}\nolimits }\)
\(\newcommand {\perf }{\mathop {\rm perf}\nolimits }\)
\(\newcommand {\cof }{\mathop {\rm cof}\nolimits }\)
\(\newcommand {\fib }{\mathop {\rm fib}\nolimits }\)
\(\newcommand {\Thick }{\mathop {\rm Thick}\nolimits }\)
\(\newcommand {\Orb }{\mathop {\rm Orb}\nolimits }\)
\(\newcommand {\ko }{\mathop {\rm ko}\nolimits }\)
\(\newcommand {\Spf }{\mathop {\rm Spf}\nolimits }\)
\(\newcommand {\Spc }{\mathop {\rm Spc}\nolimits }\)
\(\newcommand {\sk }{\mathop {\rm sk}\nolimits }\)
\(\newcommand {\cosk }{\mathop {\rm cosk}\nolimits }\)
\(\newcommand {\holim }{\mathop {\rm holim}\nolimits }\)
\(\newcommand {\hocolim }{\mathop {\rm hocolim}\nolimits }\)
\(\newcommand {\Pre }{\mathop {\rm Pre}\nolimits }\)
\(\newcommand {\THR }{\mathop {\rm THR}\nolimits }\)
\(\newcommand {\THH }{\mathop {\rm THH}\nolimits }\)
\(\newcommand {\Fun }{\mathop {\rm Fun}\nolimits }\)
\(\newcommand {\Loc }{\mathop {\rm Loc}\nolimits }\)
\(\newcommand {\Bord }{\mathop {\rm Bord}\nolimits }\)
\(\newcommand {\Cob }{\mathop {\rm Cob}\nolimits }\)
\(\newcommand {\Set }{\mathop {\rm Set}\nolimits }\)
\(\newcommand {\Ind }{\mathop {\rm Ind}\nolimits }\)
\(\newcommand {\Sind }{\mathop {\rm Sind}\nolimits }\)
\(\newcommand {\Ext }{\mathop {\rm Ext}\nolimits }\)
\(\newcommand {\sd }{\mathop {\rm sd}\nolimits }\)
\(\newcommand {\Ex }{\mathop {\rm Ex}\nolimits }\)
\(\newcommand {\Out }{\mathop {\rm Out}\nolimits }\)
\(\newcommand {\Cyl }{\mathop {\rm Cyl}\nolimits }\)
\(\newcommand {\Path }{\mathop {\rm Path}\nolimits }\)
\(\newcommand {\Ch }{\mathop {\rm Ch}\nolimits }\)
\(\newcommand {\SSet }{\mathop {\rm \Set ^{\Delta ^{op}}}\nolimits }\)
\(\newcommand {\Sq }{\mathop {\rm Sq}\nolimits }\)
\(\newcommand {\Free }{\mathop {\rm Free}\nolimits }\)
\(\newcommand {\Map }{\mathop {\rm Map}\nolimits }\)
\(\newcommand {\Chain }{\mathop {\rm Ch}\nolimits }\)
\(\newcommand {\LMap }{\mathop {\rm LMap}\nolimits }\)
\(\newcommand {\RMap }{\mathop {\rm RMap}\nolimits }\)
\(\newcommand {\Tot }{\mathop {\rm Tot}\nolimits }\)
\(\newcommand {\MU }{\mathop {\rm MU}\nolimits }\)
\(\newcommand {\MSU }{\mathop {\rm MSU}\nolimits }\)
\(\newcommand {\MSp }{\mathop {\rm MSp}\nolimits }\)
\(\newcommand {\MSO }{\mathop {\rm MSO}\nolimits }\)
\(\newcommand {\MO }{\mathop {\rm MO}\nolimits }\)
\(\newcommand {\BU }{\mathop {\rm BU}\nolimits }\)
\(\newcommand {\KU }{\mathop {\rm KU}\nolimits }\)
\(\newcommand {\BSU }{\mathop {\rm BSU}\nolimits }\)
\(\newcommand {\BSp }{\mathop {\rm BSp}\nolimits }\)
\(\newcommand {\BGL }{\mathop {\rm BGL}\nolimits }\)
\(\newcommand {\BSO }{\mathop {\rm BSO}\nolimits }\)
\(\newcommand {\BO }{\mathop {\rm BO}\nolimits }\)
\(\newcommand {\KO }{\mathop {\rm KO}\nolimits }\)
\(\newcommand {\Tor }{\mathop {\rm Tor}\nolimits }\)
\(\newcommand {\Cotor }{\mathop {\rm Cotor}\nolimits }\)
\(\newcommand {\imag }{\mathop {\rm Im}\nolimits }\)
\(\newcommand {\real }{\mathop {\rm Re}\nolimits }\)
\(\newcommand {\Cat }{\mathop {\rm Cat}\nolimits }\)
\(\newcommand {\Fld }{\mathop {\rm Fld}\nolimits }\)
\(\newcommand {\Frac }{\mathop {\rm Frac}\nolimits }\)
\(\newcommand {\Dom }{\mathop {\rm Dom}\nolimits }\)
\(\newcommand {\Hotc }{\mathop {\rm Hotc}\nolimits }\)
\(\newcommand {\Top }{\mathop {\rm Top}\nolimits }\)
\(\newcommand {\Ring }{\mathop {\rm Ring}\nolimits }\)
\(\newcommand {\CRing }{\mathop {\rm CRing}\nolimits }\)
\(\newcommand {\CGHaus }{\mathop {\rm CGHaus}\nolimits }\)
\(\newcommand {\Alg }{\mathop {\rm Alg}\nolimits }\)
\(\newcommand {\Bool }{\mathop {\rm Bool}\nolimits }\)
\(\newcommand {\hTop }{\mathop {\rm hTop}\nolimits }\)
\(\newcommand {\Nat }{\mathop {\rm Nat}\nolimits }\)
\(\newcommand {\Rel }{\mathop {\rm Rel}\nolimits }\)
\(\newcommand {\Mod }{\mathop {\rm Mod}\nolimits }\)
\(\newcommand {\Space }{\mathop {\rm Space}\nolimits }\)
\(\newcommand {\Vect }{\mathop {\rm Vect}\nolimits }\)
\(\newcommand {\FinVect }{\mathop {\rm FinVect}\nolimits }\)
\(\newcommand {\Matr }{\mathop {\rm Matr}\nolimits }\)
\(\newcommand {\Ab }{\mathop {\rm Ab}\nolimits }\)
\(\newcommand {\Gr }{\mathop {\rm Gr}\nolimits }\)
\(\newcommand {\Grp }{\mathop {\rm Grp}\nolimits }\)
\(\newcommand {\Hol }{\mathop {\rm Hol}\nolimits }\)
\(\newcommand {\Gpd }{\mathop {\rm Gpd}\nolimits }\)
\(\newcommand {\Grpd }{\mathop {\rm Gpd}\nolimits }\)
\(\newcommand {\Mon }{\mathop {\rm Mon}\nolimits }\)
\(\newcommand {\FinSet }{\mathop {\rm FinSet}\nolimits }\)
\(\newcommand {\Sch }{\mathop {\rm Sch}\nolimits }\)
\(\newcommand {\AffSch }{\mathop {\rm AffSch}\nolimits }\)
\(\newcommand {\Idem }{\mathop {\rm Idem}\nolimits }\)
\(\newcommand {\SIdem }{\mathop {\rm SIdem}\nolimits }\)
\(\newcommand {\Aut }{\mathop {\rm Aut}\nolimits }\)
\(\newcommand {\Ord }{\mathop {\rm Ord}\nolimits }\)
\(\newcommand {\coker }{\mathop {\rm coker}\nolimits }\)
\(\newcommand {\ch }{\mathop {\rm char}\nolimits }\)
\(\newcommand {\Sym }{\mathop {\rm Sym}\nolimits }\)
\(\newcommand {\adj }{\mathop {\rm adj}\nolimits }\)
\(\newcommand {\dil }{\mathop {\rm dil}\nolimits }\)
\(\newcommand {\Cl }{\mathop {\rm Cl}\nolimits }\)
\(\newcommand {\Diff }{\mathop {\rm Diff}\nolimits }\)
\(\newcommand {\End }{\mathop {\rm End}\nolimits }\)
\(\newcommand {\Hom }{\mathop {\rm Hom}\nolimits }\)
\(\newcommand {\Gal }{\mathop {\rm Gal}\nolimits }\)
\(\newcommand {\Pos }{\mathop {\rm Pos}\nolimits }\)
\(\newcommand {\Ad }{\mathop {\rm Ad}\nolimits }\)
\(\newcommand {\GL }{\mathop {\rm GL}\nolimits }\)
\(\newcommand {\SL }{\mathop {\rm SL}\nolimits }\)
\(\newcommand {\vol }{\mathop {\rm vol}\nolimits }\)
\(\newcommand {\reg }{\mathop {\rm reg}\nolimits }\)
\(\newcommand {\Or }{\textnormal {O}}\)
\(\newcommand {\U }{\mathop {\rm U}\nolimits }\)
\(\newcommand {\SOr }{\mathop {\rm SO}\nolimits }\)
\(\newcommand {\SU }{\mathop {\rm SU}\nolimits }\)
\(\newcommand {\Spin }{\mathop {\rm Spin}\nolimits }\)
\(\newcommand {\Sp }{\mathop {\rm Sp}\nolimits }\)
\(\newcommand {\Int }{\mathop {\rm Int}\nolimits }\)
\(\newcommand {\im }{\mathop {\rm im}\nolimits }\)
\(\newcommand {\dom }{\mathop {\rm dom}\nolimits }\)
\(\newcommand {\di }{\mathop {\rm div}\nolimits }\)
\(\newcommand {\cod }{\mathop {\rm cod}\nolimits }\)
\(\newcommand {\colim }{\mathop {\rm colim}\nolimits }\)
\(\newcommand {\ad }{\mathop {\rm ad}\nolimits }\)
\(\newcommand {\PSL }{\mathop {\rm PSL}\nolimits }\)
\(\newcommand {\PGL }{\mathop {\rm PGL}\nolimits }\)
\(\newcommand {\sep }{\mathop {\rm sep}\nolimits }\)
\(\newcommand {\MCG }{\mathop {\rm MCG}\nolimits }\)
\(\newcommand {\oMCG }{\mathop {\rm MCG^+}\nolimits }\)
\(\newcommand {\Spec }{\mathop {\rm Spec}\nolimits }\)
\(\newcommand {\rank }{\mathop {\rm rank}\nolimits }\)
\(\newcommand {\diverg }{\mathop {\rm div}\nolimits }\)
\(\newcommand {\disc }{\mathop {\rm disc}\nolimits }\)
\(\newcommand {\sign }{\mathop {\rm sign}\nolimits }\)
\(\newcommand {\Arf }{\mathop {\rm Arf}\nolimits }\)
\(\newcommand {\Pic }{\mathop {\rm Pic}\nolimits }\)
\(\newcommand {\Tr }{\mathop {\rm Tr}\nolimits }\)
\(\newcommand {\res }{\mathop {\rm res}\nolimits }\)
\(\newcommand {\Proj }{\mathop {\rm Proj}\nolimits }\)
\(\newcommand {\mult }{\mathop {\rm mult}\nolimits }\)
\(\newcommand {\N }{\mathop {\rm N}\nolimits }\)
\(\newcommand {\lk }{\mathop {\rm lk}\nolimits }\)
\(\newcommand {\Pf }{\mathop {\rm Pf}\nolimits }\)
\(\newcommand {\sgn }{\mathop {\rm sgn}\nolimits }\)
\(\newcommand {\grad }{\mathop {\rm grad}\nolimits }\)
\(\newcommand {\lcm }{\mathop {\rm lcm}\nolimits }\)
\(\newcommand {\Ric }{\mathop {\rm Ric}\nolimits }\)
\(\newcommand {\Hess }{\mathop {\rm Hess}\nolimits }\)
\(\newcommand {\sn }{\mathop {\rm sn}\nolimits }\)
\(\newcommand {\cut }{\mathop {\rm cut}\nolimits }\)
\(\newcommand {\tr }{\mathop {\rm tr}\nolimits }\)
\(\newcommand {\codim }{\mathop {\rm codim}\nolimits }\)
\(\newcommand {\ind }{\mathop {\rm index}\nolimits }\)
\(\newcommand {\rad }{\mathop {\rm rad}\nolimits }\)
\(\newcommand {\Rep }{\mathop {\rm Rep}\nolimits }\)
\(\newcommand {\Lie }{\mathop {\rm Lie}\nolimits }\)
\(\newcommand {\Der }{\mathop {\rm Der}\nolimits }\)
\(\newcommand {\hgt }{\mathop {\rm ht}\nolimits }\)
\(\newcommand {\Ider }{\mathop {\rm Ider}\nolimits }\)
\(\newcommand {\id }{\mathop {\rm id}\nolimits }\)
3 Kan Fibrations
Apparently the following proposition, due to Moore, convinced Milnor that simplicial sets are the right thing.

Proof. Suppose we have a diagram
Since \(G \to H\) is surjective, we can lift \(\Delta ^n\) (without making the diagram commute), and divide by the lift, reducing to the case where \(\Delta ^n \to H\) is the identity. Thus we can assume \(H\) is trivial, so
that it amounts to showing that a simplicial group \(G\) is fibrant.
Let \(f_j, j \neq i\) denote the boundary components making up \(\Lambda _i^n\). We will show by induction on \(j\neq i\) that there is a simplex agreeing with \(\Lambda _i^n\) on the first \(j\) boundary components.
For the induction step, we can divide by the simplex in the induction hypothesis to reduce to the case that \(f_k\) is the identity for \(k<j\).
Consider \(s_jf_j\). \(d_js_jf_j=f_j\), and \(i \neq k < j\) we have \(d_ks_jf_j= s_jd_kf_j = s_j 1 = 1\). □
Given two elements \([a],[b]\) of \(\pi _n(X,Y,x)\) we can multiply them to get \([a]\star [b]\) as follows: consider \(\lambda ^{n+1}_n\) given by \((x,x\dots ,x,a,\cdot ,b)\). By filling in the horn, \(d_n\) of the
resulting simplex is the composite. By the homotopy extension property the homotopy class of the composite is only dependent on the homotopy class of \(a,b\). Moreover, one can easily see that there are inverses and identities,
and that \(\pi _n(X,Y)\) with the operation \(\star \) is functorial.

Proof. It remains to check associativity. If \(f = \Delta ^{n+1}\) realizes a composite \(a \star b\), \(g\) realizes \(a\star (b\star c)\), \(f'\) realizes \(b\star c\), then
consider the map from \(\Lambda _{n+1}^{n+2}\) given by \((x,x,\dots ,f,g,\cdot ,f')\). Extending to \(\Delta ^{n+1}\) and taking \(d_{n+1}\), we see that \(a\star (b\star c)\) is a realized as a composite of
\((a\star b)\star c\). □
Note that with another definition of \(\pi _n\) one could also use the homotopy category to prove associativity.

Proposition 3.4. Given a Kan fibration \(X \to Y\) where
\(Y\) is fibrant, and \(F\) is the fibre, there is a natural long exact sequence
\[\pi _n(F) \to \pi _n(X) \to \pi _n(Y) \to \pi _{n1}(F) \to \pi _{n1}(X)\]
at any basepoint.

Proof. The maps \(\pi _n(F) \to \pi _n(X) \to \pi _n(Y)\) are the obvious ones. The composite is obviously zero, and if something is in the kernel, then by the homotopy lifting
property, the class is equivalent to something from \(F\).
The boundary map \(\partial :\pi _n(Y) \to \pi _{n1}(F)\) is defined by taking a class \(\alpha : \Delta ^n \to Y\), and extending the diagram
This is welldefined up to homotopy by Corollary 2.31. Something is in its kernel iff there is a lift of \(\alpha \) gives a class in \(\pi _n(X)\), showing that
\(\pi _n(X) \to \pi _n(Y) \to \pi _{n1}(F)\) is exact.
Clearly the composite \(\pi _{n+1}(Y) \to \pi _n(F) \to \pi _{n}(X)\) is trivial. If a class \(\alpha \) is in the kernel \(\pi _n(F) \to \pi _n(X)\), then there is a homotopy in \(X\) relative to the boundary from the
trivial map. This homotopy factors through \(\Delta ^{n+1}\) giving a map whose boundary is \((x,x,\dots , \alpha )\). But this projects to a class in \(Y\) such that \(\partial \) of it is \(\alpha \). □
The free path space of \(X\) is \(\Map (\Delta ^1,X)\). The path space of \(X,x\), denoted \(P(X)\) or \(P_x(X)\) is the pullback (or fibre) of the fibration \(\Map (\Delta ^1,X) \to \Map (\Delta
^0,X)\) given by \(d_0\) along the inclusion of \(x= \Map (\Delta ^0,\Delta ^0)\). \(P(X)\) is trivial fibrant since it is the fibre of a trivial fibration.
By identifying \(P(X)\) with the pullback of the fibration \(\Map (\Delta ^1,X) \to \Map (\partial \Delta ^1,X)\) along the inclusion of \(\Map (\Delta ^0,X)\), we see that the projection \(P(X) \to X\) is a fibration.
Its fibre \(F\) is called the loop space \(\Omega (X)\) or \(\Omega _x(X)\) of \(X,x\).
The fibration \(\Omega _x(X) \to P_x(X) \to X\) gives an identification \(\pi _n(\Omega _x(X)) = \pi _{n+1}(X)\).
For example, if \(G\) is a discrete group, \(\Omega _xBG=G\), so we see \(\pi _1=G\), and the rest of the homotopy groups vanish.

Lemma 3.5. Suppose that \(X\) is a Kan complex and has a homotopy unital
multiplication. Then \(\pi _i(X,x)\) is abelian for \(i\geq 1\). Moreover, if it sends the basepoint \(x,x\) to \(x\), the multiplication map agrees with the multiplication on \(\pi _n(X,x)\).

Proof. We can force the multiplication \(\cdot \) to preserve the basepoint \(x\) via the homotopy extension property. Now if \(\cdot \) is homotopy unital and basepoint preserving,
we are done by functoriality of \(\pi _n\) and the HiltonEckmann argument: \(b\cdot a = (1\star b)\cdot (a \star 1) = (1\cdot a)\star (b\cdot 1) = a\star b = (a\cdot 1)\star (1\cdot b) = (a\star
1)\cdot (1\star b) = a\cdot b\). □

Lemma 3.6. \(\pi _i(X,x)\) is abelian for \(i>1\). \(\Omega _x(X)\) has a unital multiplication
such that the identification \(\pi _n(\Omega _x(X)) \cong \pi _{n+1}(X)\) gives \(\pi _0(\Omega _x(X))\) the group structure coming from \(\pi _{1}(X)\), which is also the group structure from \(\Hom (x,x)\) in \(\Pi
_{\leq 1}(X)\).

Proof. Consider the trivial Kan fibration \(\Map (\Delta ^2,X) \to \Map (\Lambda ^2_1,X)\). on \(\Omega _x(X)\times \cdot \cup \cdot \times \Omega _x(X)\) sits inside of
\(\Map (\Lambda ^2_1,X)\) as pairs for which one map is the identity, moreover, there is a natural section on this subset given by the degeneracies. Extend this to a section of the whole fibration, and then consider the composite
\(\Omega _x(X)^2 \to \Map (\Lambda ^2_1,X) \to \Map (\Delta ^2,X) \to \Map (\Delta ^1,X)\) where the last map is the restriction to \(d_1\). This sends two maps to a composite, and so factors through a unital
multiplication. By Lemma 3.5 \(\pi _i(X,x)\) is abelian for \(i>1\), and the addition on \(\pi _i\) is given by the multiplication map, which is composition. For
\(i=0\), one can directly identify everything. □

Proposition 3.7. Let \(f:X \to Y\) be a fibration, and
\(Y\) fibrant. Then \(f\) induces a surjection \(\pi _n(X,x) \twoheadrightarrow \pi _n(Y,f(x))\) and injection \(\pi _{n1}(X,x) \hookrightarrow \pi _{n1}(Y,f(x))\) iff it has the right lifting property with respect
to \(\partial \Delta ^n \to \Delta ^n\).

Proof. If we have the lifting property, then \(\partial : \pi _n(Y) \to \pi _{n1}(F)\) is \(0\), and \(\pi _n(X,x) \twoheadrightarrow \pi _n(Y,x)\) is also clearly surjective.
For the converse, we’d like to show the homotopy extension property with respect to \(\partial \Delta ^n \subset \Delta ^n\). By the homotopy lifting property it suffices to lift it after a homotopy of the diagram. Now there
is a canonical homotopy \(H\) on \(\Delta ^n\) to from the constant \(0\)map to the identity, which moreover restricts to a homotopy on \(\Lambda _0^n\). Applying this homotopy on \(\Delta ^n\) and extending over the
projection from \(\Lambda _0^n\) to \(\partial \Delta ^n\), we can reduce to the case where \(\Delta ^n\) is trivial, and \(\partial ^n\Delta ^n\) is trivial on \(\Lambda _0^n\), i.e it looks like \((f,\cdot ,\cdot
,\dots \cdot )\), where \(\cdot \) denotes constant. \(f \in \pi _{n1}(X)\) is in the kernel of the map to \(\pi _{n}(X)\). Since \(\pi _{n1}(X) \to \pi _{n1}(Y)\) is injective, this means there is a homotopy
relative to the boundary \(H\) from \(f\) to \(\cdot \).
Since the map \(X \to Y\) is injective on \(\pi _{n1}\), we have a homotopy trivializing \(x\). Extending again to the whole diagram, we reduce to the case where \(\partial \Delta ^n\) is constant. But then surjectivity of
\(\pi _n\) guarantees a lift. □
The fundamental groupoid \(\Pi _{\leq 1}(X)\) of a Kan complex \(X\) is its homotopy \(1\)category.

Proof. Let \(f\) be a path \(x \to y\). Consider the composite \(\partial \Delta ^n\times \Delta ^1 \to \Delta ^1 \xrightarrow {f} X\). We can extend elements of \(\pi
_n(X)\) along this to get a map \(\pi _n(X,x) \to \pi _n(X,y)\). By Corollary 2.31, this is welldefined, and only dependent on the homotopy class of \(f\).
Moreover, by transporting composition maps, we see it respects composition, so is a homomorphism. □
3.1 Minimal fibrations

Proof. Let \(x,y\) be the simplices with equal boundary, such that \(x = s_mz\) and \(y=s_nw\) with \(m\leq n\). If \(m=n\), then \(z=d_mx=d_ny=w\), so x=y. If \(m<n\), then
\(z=d_mx=d_my=d_ms_nw=s_{n1}d_mw\), so \(x = s_ms_{n1}d_mw = s_ns_md_mw\) so \(s_md_mw=d_nx=d_ny=w\) and both \(x,y=s_nw\). □

Proof. Let \(X \to Y\) be the Kan fibration. We will inductively define the \(i\)skelaton \(Z_i\) as a subcomplex of \(X\) such that the inclusions \(X_{i} \subset X\) have
compatible fibrewise homotopies that retract onto \(Z_i\), and such that \(Z_i \to Y_i\) is a minimal fibration. Taking the limit, we will be done. Let \(Z_0\) be a collection of points of \(X\) containing a unique point in every
homotopy class of each fibre. We can produce a fibrewise homotopy \(H_0\) from \(X_0\) to \(Z_0\) by choosing paths in the fibres to \(Z_0\). For anything already in \(Z_0\), choose the constant path.
Now suppose we have constructed \(Z_{i1},H_{i1}\). Choose a representative simplex for each equivalence class of \(i\)simplex having boundary in \(Z_{i1}\) via the equivalence relation fibrewise homotopy relative to
boundary. Attach these to \(Z_{i1}\) to obtain \(Z_i\). By construction, \(Z_i\) has a unique simplex in each fibrewise homotopy class relative to boundary in dimension \(\leq i\) and also in dimension \(>i\) by Lemma
3.11, so it is a minimal fibration over \(Y_i\). For any nondegenerate \(i\)simplex \(x\) of \(X\), \(H\) is a fibrewise homotopy on its boundary to \(Z_{i1}\), so we can
extend it to a fibrewise homotopy on \(x\), and if it is already in \(Z_i\), we can again choose the constant homotopy. If it isn’t already in \(Z_i\), by construction it will end up fibrewise homotopic relative to the boundary to a
cell in \(Z_i\), via some homotopy \(H'\). We can ‘compose’ the homotopies by creating a lift in the following diagram:
By taking \(d_1\) on the \(\Delta ^2\) component of the homotopy, we get an extension of \(H\) to a fibrewise homotopy from \(X_i\) to \(Z_i\). □

Proof. if \(f\) is a fibre homotopy equivalence and \(g\) a homotopy inverse, it suffices so show that \(g\circ f\) and \(f \circ g\) are isomorphisms. But they are homotopic to the
identity, so it suffices to show that any fibrewise map \(a\) to a minimal fibration that is homotopic via a homotopy \(h\) to an isomorphism \(b\) is also an isomorphism.
Let’s first show that \(a\) is injective. Let \(\alpha \) be an \(n\)simplex such that \(f(\alpha ) = f(\beta )\). By induction, we can assume that \(\partial \alpha = \partial \beta \). Thus \(h\) on the simplices
restricts to a map on \(\Delta ^n\times \Lambda _2^2\), that can be extended to include \(\partial \Delta ^n \times \Delta ^2\) via \(s_0h\). Then extending this map to \(\Delta ^n\times \Delta ^2\) via Corollary
2.30 and Proposition 2.22 and taking the \(d_2\) component gives a fibrewise homotopy from
\(\alpha \) to \(\beta \) relative to the boundary, which has to be trivial.
For surjectivity, let \(\alpha \) be an \(n\)simplex. We can assume \(\partial \alpha \) is in the image of \(f\) by induction. Then by the homotopy extension property we can extend \(h\) on \(\partial \alpha \) to a
fibrewise homotopy \(h_1\) from a simplex \(z\) to \(\alpha \). \(z=g(z')\) since \(g\) is surjective. So \(h_1\) and \(h_{z'}\) are homotopies from \(z\) that agree on the boundary, so paste them together and
extending to include \(\partial \Delta ^n \times \Delta ^2\) via \(s_1h\). Then again via Corollary 2.30 and Proposition 2.22 extend to \(\Delta ^n\times \Delta ^2\) and take \(d_0\) to get a fibrewise homotopy from \(\alpha \) to whatever \(g(z')\) is sent to by \(h\). □

Proof. If \(f:X \to Y\) is a minimal fibration, and \(x=\Delta ^n\) is a simplex in \(X\), then there is a homotopy from the constant simplex on the zero vertex of x to the inclusion.
The pullbacks of \(f\) along these two maps are then fibre homotopy equivalent, but the pullback along the constant map is a product. □
3.2 Equivalence of Quillen and Serre model structures

Proof. By Proposition 3.12, the projection \(X \to Y\) factors through \(Z\), where the projection \(Z \to Y\)
is locally trivial, hence a Serre fibration after realization. Thus it suffices to show \(X \to Z\) is also a Serre fibration. To do this, we will show it is a trivial fibration, and that the the realization of a trivial fibration is a Serre
fibration.
The realization of a trivial fibration \(f:A \to B\) is a Serre fibration since we can find a lift in the diagram
This shows that \(f\) is a retract of the projection \(A\times B\to B\) which is a Serre fibration after realizing, so it is also a Serre fibration.
To see that \(p:X \to Z\) is a trivial fibration, Note that it induces an isomorphism on homotopy groups since \(Z\) is a deformation retract of \(X\). If we are trying to lift the inclusion \(\partial \Delta ^n \to \Delta ^n=z\)
over the projection \(X \to Z\), observe that we have a fibrewise homotopy \(H\) from the composite \(X \to Z \to X\) to the identity. We can extend this homotopy from the boundary of the simplex over \(Y\) to \(H'\),
giving a simplex \(y\) in \(X\), and a homotopy \(H'\) from \(z\) to \(y\). \(p(y)\) certainly agrees with \(z\) on the boundary, so if they are fibrewise homotopic relative to \(Y\), they are equal by minimality.
\(pH'\) is a homotopy not relative to the boundary from \(z\) to \(p(y)\), and \(pH\) restricted to \(y\) is a homotopy agreeing with \(pH'\) on the boundary but from \(p(y)\) to itself. By pasting these homotopies
together, we can ‘compose’ along the inclusion \((\partial \Delta ^n \times \Delta ^2) \cup (\Delta ^n\times \Lambda _2^2) \subset \Delta ^n\times \Delta ^1\), where on \(\partial \Delta ^n\times \Delta
^2\) we have used \(s_0pH\). Then the resulting homotopy from \(p(y)\) to \(z\) on the \(d_2\) edge will be relative to the boundary. □

Proof. There is clearly a natural map \(\pi _n(X) \to \pi _n(X)\) that is compatible with the long exact sequence on homotopy groups. Observe that it is an isomorphism for \(\pi
_0\) since the realization of a simplex is connected. Now consider the fibre sequence \(\Omega _x(X) \to P_x(X) \to X\). Since there is a contracting homotopy in \(P_x(X)\), \(P_x(X)\) is contractible. Then by induction
using the long exact sequence to dimension shift, \(\pi _i\) is an isomorphism for all \(i\). □
It is also true by definition essentially that \(\pi _n(X) = \pi _n(SX)\).
A map is a weak equivalence in either \(\CGHaus \) or Kan complexes if it induces an isomorphims on \(\pi _n\).

Proposition 3.20. If \(X\) is a Kan complex, \(X \to SX\) is a weak equivalence to a cofibrant fibrant
object and if \(X \in \CGHaus \), \(SX \to X\) is a weak equivalence from a cofibrant fibrant object.
The following lemma about Kan fibrations is useful.

Proof. We would like to be able to lift extensions of a homotopy of a boundary of a simplex to the whole simplex. To do this, by surjectivity of \(p\), choose a lift of the simplex to \(X\).
Then, we can lift the homotopy on the boundary of the simplex to \(X\) since \(p\) is a Kan fibration. Then since \(q\circ p\) is a Kan fibration, we can lift the homotopy on the simplex to \(X\), which projects to the desired
homotopy on \(Y\). □