CINXE.COM

homotopy in nLab

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" > <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> homotopy in nLab </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="robots" content="noindex,nofollow" /> <style type="text/css"> h1#pageName, div.info, .newWikiWord a, a.existingWikiWord, .newWikiWord a:hover, [actiontype="toggle"]:hover, #TextileHelp h3 { color: #226622; } </style> <link href="/stylesheets/instiki.css?1676280126" media="all" rel="stylesheet" type="text/css" /> <style type="text/css"><!--/*--><![CDATA[/*><!--*/ .toc ul {margin: 0; padding: 0;} .toc ul ul {margin: 0; padding: 0 0 0 10px;} .toc li &gt; p {margin: 0} .toc ul li {list-style-type: none; position: relative;} .toc div {border-top:1px dotted #ccc;} .rightHandSide h2 {font-size: 1.5em;color:#008B26} table.plaintable { border-collapse:collapse; margin-left:30px; border:0; } .plaintable td {border:1px solid #000; padding: 3px;} .plaintable th {padding: 3px;} .plaintable caption { font-weight: bold; font-size:1.1em; text-align:center; margin-left:30px; } /* Query boxes for questioning and answering mechanism */ div.query{ background: #f6fff3; border: solid #ce9; border-width: 2px 1px; padding: 0 1em; margin: 0 1em; max-height: 20em; overflow: auto; } /* Standout boxes for putting important text */ div.standout{ background: #fff1f1; border: solid black; border-width: 2px 1px; padding: 0 1em; margin: 0 1em; overflow: auto; } /* Icon for links to n-category arXiv documents (commented out for now i.e. disabled) a[href*=&quot;http://arxiv.org/&quot;] { background-image: url(../files/arXiv_icon.gif); background-repeat: no-repeat; background-position: right bottom; padding-right: 22px; } */ /* Icon for links to n-category cafe posts (disabled) a[href*=&quot;http://golem.ph.utexas.edu/category&quot;] { background-image: url(../files/n-cafe_5.gif); background-repeat: no-repeat; background-position: right bottom; padding-right: 25px; } */ /* Icon for links to pdf files (disabled) a[href$=&quot;.pdf&quot;] { background-image: url(../files/pdficon_small.gif); background-repeat: no-repeat; background-position: right bottom; padding-right: 25px; } */ /* Icon for links to pages, etc. -inside- pdf files (disabled) a[href*=&quot;.pdf#&quot;] { background-image: url(../files/pdf_entry.gif); background-repeat: no-repeat; background-position: right bottom; padding-right: 25px; } */ a.existingWikiWord { color: #226622; } a.existingWikiWord:visited { color: #226622; } a.existingWikiWord[title] { border: 0px; color: #aa0505; text-decoration: none; } a.existingWikiWord[title]:visited { border: 0px; color: #551111; text-decoration: none; } a[href^=&quot;http://&quot;] { border: 0px; color: #003399; } a[href^=&quot;http://&quot;]:visited { border: 0px; color: #330066; } a[href^=&quot;https://&quot;] { border: 0px; color: #003399; } a[href^=&quot;https://&quot;]:visited { border: 0px; color: #330066; } div.dropDown .hide { display: none; } div.dropDown:hover .hide { display:block; } div.clickDown .hide { display: none; } div.clickDown:focus { outline:none; } div.clickDown:focus .hide, div.clickDown:hover .hide { display: block; } div.clickDown .clickToReveal, div.clickDown:focus .clickToHide { display:block; } div.clickDown:focus .clickToReveal, div.clickDown .clickToHide { display:none; } div.clickDown .clickToReveal:after { content: &quot;A(Hover to reveal, click to &quot;hold&quot;)&quot;; font-size: 60%; } div.clickDown .clickToHide:after { content: &quot;A(Click to hide)&quot;; font-size: 60%; } div.clickDown .clickToHide, div.clickDown .clickToReveal { white-space: pre-wrap; } .un_theorem, .num_theorem, .un_lemma, .num_lemma, .un_prop, .num_prop, .un_cor, .num_cor, .un_defn, .num_defn, .un_example, .num_example, .un_note, .num_note, .un_remark, .num_remark { margin-left: 1em; } span.theorem_label { margin-left: -1em; } .proof span.theorem_label { margin-left: 0em; } :target { background-color: #BBBBBB; border-radius: 5pt; } /*]]>*/--></style> <script src="/javascripts/prototype.js?1660229990" type="text/javascript"></script> <script src="/javascripts/effects.js?1660229990" type="text/javascript"></script> <script src="/javascripts/dragdrop.js?1660229990" type="text/javascript"></script> <script src="/javascripts/controls.js?1660229990" type="text/javascript"></script> <script src="/javascripts/application.js?1660229990" type="text/javascript"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- function updateSize(elt, w, h) { // adjust to the size of the user's browser area. // w and h are the original, unadjusted, width and height per row/column var parentheight = document.viewport.getHeight(); var parentwidth = $('Container').getWidth(); elt.writeAttribute({'cols': Math.floor(parentwidth/w) - 1, 'rows': Math.floor(parentheight/h) - 2 }); elt.setStyle({Width: parentwidth, Height: parentheight}); } function resizeableTextarea() { //make the textarea resize to fit available space $$('textarea#content').each( function(textarea) { var w = textarea.getWidth()/textarea.getAttribute('cols'); var h = textarea.getStyle('lineHeight').replace(/(\d*)px/, "$1"); Event.observe(window, 'resize', function(){ updateSize(textarea, w, h) }); updateSize(textarea, w, h); Form.Element.focus(textarea); }); } window.onload = function (){ resizeableTextarea(); } //--><!]]> </script> </head> <body> <div id="Container"> <textarea id='content' readonly=' readonly' rows='24' cols='60' > &gt; This page is about homotopy as a transformation. For homotopy sets in [[homotopy categories]], see [[homotopy (as an operation)]]. *** +-- {: .rightHandSide} +-- {: .toc .clickDown tabindex=&quot;0&quot;} ###Context### #### Homotopy theory +--{: .hide} [[!include homotopy - contents]] =-- #### Type theory +--{: .hide} [[!include type theory - contents]] =-- =-- =-- #Contents# * table of contents {:toc} ## Idea In many [[category|categories]] $C$ in which one does [[homotopy theory]], there is a notion of _homotopy_ between [[morphisms]], which is closely related to the [[2-morphisms]] in [[higher category theory]]: a homotopy between two morphisms is a way in which they are equivalent. If we regard such a category as a presentation of an $(\infty,1)$-[[(infinity,1)-category|category]], then homotopies $f\sim g$ present the 2-cells $f\Rightarrow g$ in the resulting $(\infty,1)$-category. ## Definition ### In topological spaces +-- {: .num_defn #LeftHomotopy} ###### Definition For $f,g\colon X \longrightarrow Y$ two [[continuous functions]] between [[topological spaces]] $X,Y$, then a **left homotopy** $$ \eta \colon f \,\Rightarrow_L\, g $$ is a [[continuous function]] $$ \eta \;\colon\; X \times I \longrightarrow Y $$ out of the standard [[cylinder object]] over $X$: the [[product space]] of $X$ with the [[Euclidean space|Euclidean]] [[closed interval]] $I \coloneqq [0,1]$, such that this fits into a [[commuting diagram]] of the form &lt;div style=&quot;float:right;margin:0 10px 10px 0;&quot;&gt; &lt;img src=&quot;http://www.ncatlab.org/nlab/files/AHomotopy.jpg&quot; width=&quot;400&quot;&gt; &lt;/div&gt; $$ \array{ X \\ {}^{\mathllap{(id,\delta_0)}}\downarrow &amp; \searrow^{\mathrlap{f}} \\ X \times I &amp;\stackrel{\eta}{\longrightarrow}&amp; Y \\ {}^{\mathllap{(id,\delta_1)}}\uparrow &amp; \nearrow_{\mathrlap{g}} \\ X } \,. $$ (graphics grabbed from J. Tauber [here](http://jtauber.com/blog/2005/07/01/path_homotopy/)) =-- +-- {: .num_example #PathsAsLeftHomotopyBetweenPoints} ###### Example Let $X$ be a [[topological space]] and let $x,y \in X$ be two of its points, regarded as functions $x,y \colon \ast \longrightarrow X$ from the point to $X$. Then a left homotopy, def. \ref{LeftHomotopy}, between these two functions is a commuting diagram of the form $$ \array{ \ast \\ {}^{\mathllap{\delta_0}}\downarrow &amp; \searrow^{\mathrlap{x}} \\ I &amp;\stackrel{\eta}{\longrightarrow}&amp; X \\ {}^{\mathllap{\delta_1}}\uparrow &amp; \nearrow_{\mathrlap{y}} \\ \ast } \,. $$ This is simply a continuous path in $X$ whose endpoints are $x$ and $y$. =-- ### In enriched categories If $C$ is [[enriched category|enriched]] over [[Top]], then a **homotopy** in $C$ between maps $f,g:X\,\rightrightarrows \,Y$ is a map $H:[0,1] \to C(X,Y)$ in $Top$ such that $H(0)=f$ and $H(1)=g$. In $Top$ itself this is the classical notion. If $C$ has [[copower|copowers]], then an equivalent definition is a map $[0,1]\odot X\to Y$, while if it has [[power|powers]], an equivalent definition is a map $X\to \pitchfork([0,1],Y)$. There is a similar definition in a [[simplicially enriched category]], replacing $[0,1]$ with the 1-simplex $\Delta^1$, with the caveat that in this case not all _simplicial homotopies_ need be composable even if they match correctly. (This depends on whether or not all (2,1)-[[horn]]s in the simplicial set, $C(X,Y)$, have fillers.) Likewise in a [[dg-category]] we can use the &quot;chain complex interval&quot; to get a notion of _chain homotopy_. ### In model categories If $\mathcal{C}$ is a [[model category]], it has an intrinsic notion of homotopy determined by its factorizations. For more on the following see at _[[homotopy in a model category]]_. +-- {: .num_defn #PathAndCylinderObjectsInAModelCategory} ###### Definition Let $\mathcal{C}$ be a [[model category]] and $X \in \mathcal{C}$ an [[object]]. * A **[[path object]]** $Path(X)$ for $X$ is a factorization of the [[diagonal]] $\nabla_X \colon X \to X \times X$ as $$ \nabla_X \;\colon\; X \underoverset{\in W}{i}{\longrightarrow} Path(X) \overset{(p_0,p_1)}{\longrightarrow} X \times X \,. $$ where $X\to Path(X)$ is a weak equivalence. This is called a **good path object** if in addition $Path(X) \to X \times X$ is a fibration. * A **[[cylinder object]]** $Cyl(X)$ for $X$ is a factorization of the [[codiagonal]] (or &quot;fold map&quot;) $\Delta_X: X \sqcup X \to X$ as $$ \Delta_X \;\colon\; X \sqcup X \overset{(i_0,i_1)}{\longrightarrow} Cyl(X) \underoverset{p}{\in W}{\longrightarrow} X \,. $$ where $Cyl(X) \to X$ is a weak equivalence. This is called a **good cylinder object** if in addition $X \sqcup X \to Cyl(X)$ is a cofibration. =-- +-- {: .num_remark #RemarkOnChoicesOfNonGoodPathAndCylinderObjects} ###### Remark By the factorization axioms every object in a model category has both a good path object and as well as a good cylinder object according to def. \ref{PathAndCylinderObjectsInAModelCategory}. But in some situations one is genuinely interested in using non-good such objects. For instance in the [[classical model structure on topological spaces]], the obvious object $X\times [0,1]$ is a cylinder object, but not a good cylinder unless $X$ itself is cofibrant (a [[cell complex]] in this case). More generally, the path object $Path(X)$ of def. \ref{PathAndCylinderObjectsInAModelCategory} is analogous to the [[powering]] $\pitchfork(I,X)$ with an [[interval object]] and the cylinder object $Cyl(X)$ is analogous to the [[tensoring]] $I\odot X$ with an interval object. In fact, if $\mathcal{C}$ is a $V$-[[enriched model category]] and $X$ is fibrant/cofibrant, then these powers and copowers are in fact examples of (good) path and cylinder objects if the [[interval object]] is sufficiently good. =-- +-- {: .num_defn #LeftAndRightHomotopyInAModelCategory} ###### Definition Let $f,g \colon X \longrightarrow Y$ be two [[parallel morphisms]] in a [[model category]]. * A **left homotopy** $\eta \colon f \Rightarrow_L g$ is a morphism $\eta \colon Cyl(X) \longrightarrow Y$ from a [[cylinder object]] of $X$, def. \ref{PathAndCylinderObjectsInAModelCategory}, such that it makes this [[commuting diagram|diagram commute]]: $$ \array{ X &amp;\longrightarrow&amp; Cyl(X) &amp;\longleftarrow&amp; X \\ &amp; {}_{\mathllap{f}}\searrow &amp;\downarrow^{\mathrlap{\eta}}&amp; \swarrow_{\mathrlap{g}} \\ &amp;&amp; Y } \,. $$ * A **right homotopy** $\eta \colon f \Rightarrow_R g$ is a morphism $\eta \colon X \to Path(Y)$ to some [[path object]] of $X$, def. \ref{PathAndCylinderObjectsInAModelCategory}, such that this [[commuting diagram|diagram commutes]]: $$ \array{ &amp;&amp; X \\ &amp; {}^{\mathllap{f}}\swarrow &amp; \downarrow^{\mathrlap{\eta}} &amp; \searrow^{\mathrlap{g}} \\ Y &amp;\longleftarrow&amp; Path(Y) &amp;\longrightarrow&amp; Y } \,. $$ =-- +-- {: .num_remark } ###### Remark By remark \ref{RemarkOnChoicesOfNonGoodPathAndCylinderObjects} it follows that in a $Top$-[[enriched model category]], any enriched homotopy between maps $X\to Y$ is a left homotopy if $X$ is cofibrant and a right homotopy if $Y$ is fibrant. Similar remarks hold for other enrichments. =-- For more see at _[[homotopy in a model category]]_. ### In (co-)fibration categories Clearly the concept of left homotopy in def. \ref{PathAndCylinderObjectsInAModelCategory} only needs part of the model category axioms and thus makes sense more generally in suitable [[cofibration categories]]. Dually, the concept of path objects in def. \ref{PathAndCylinderObjectsInAModelCategory} makes sense more generally in suitable [[fibration categories]] such as [[categories of fibrant objects]] in the sense of Brown. Likewise if there is a [[cylinder functor]], one gets functorially defined [[cylinder objects]], etc. ### In dependent type theory In [[dependent type theory]], let $A$ be a type and let $P$ be a [[type family]] indexed by $A$, and let $f,g:\prod_{x:A} P(x)$ be two elements of a [[dependent product type]] of a [[type family]] $P$. The **type of homotopies** between $f$ and $g$ is the type $$f \sim g \equiv \prod_{x:A} (f(x) =_{B(x)} g(x))$$ A **homotopy** between $f$ and $g$ is simply an element $H:f \sim g$. Note that a homotopy is not the same as an [[identification]] $f = g$. However this can be made so if one assumes [[function extensionality]]. ## Related concepts [[!include homotopy-homology-cohomology]] * [[homotopy theory]] * [[left homotopy]], [[right homotopy]] * [[homotopy relative boundary]] * [[smooth homotopy]] * [[isotopy]], [[smooth isotopy]] * [[higher homotopy]] * [[homotopy class]] * [[transfor]] * [[natural transformation]] * [[pseudonatural transformation]] * [[lax natural transformation]] * [[function extensionality]] * [[whiskering]] * [[homotopy analysis method]] ## References &gt; See also the references at _[[homotopy theory]]_ and at _[[model category]]_. Textbook accounts: * [[Anatoly Fomenko]], [[Dmitry Fuchs]], §3.1 in: *Homotopical Topology*, Graduate Texts in Mathematics **273**, Springer (2016) \[&lt;a href=&quot;https://doi.org/10.1007/978-3-319-23488-5&quot;&gt;doi:10.1007/978-3-319-23488-5&lt;/a&gt;, &lt;a href=&quot;https://www.cimat.mx/~gil/docencia/2020/topologia_diferencial/[Fomenko,Fuchs]Homotopical_Topology(2016).pdf&quot;&gt;pdf&lt;/a&gt;\] * [[Adam Marsh]]: Fig. 4.2.2 in: _Mathematics for Physics: An Illustrated Handbook_, World Scientific (2018) &amp;lbrack;[doi:10.1142/10816](https://doi.org/10.1142/10816), [book webpage](https://www.mathphysicsbook.com/)&amp;rbrack; Discussion in [[computational topology]]: * [[Marek Filakovský]], [[Lukáš Vokřínek]], _Are two given maps homotopic? An algorithmic viewpoint_, Found Comput Math (2019) ([arXiv:1312.2337](https://arxiv.org/abs/1312.2337), [doi:10.1007/s10208-019-09419-x](https://doi.org/10.1007/s10208-019-09419-x)) For homotopies in [[Martin-Löf dependent type theory]]: * Univalent Foundations Project, [[HoTT book|Homotopy Type Theory – Univalent Foundations of Mathematics]] (2013) [[!redirects left homotopy]] [[!redirects right homotopy]] [[!redirects left homotopies]] [[!redirects right homotopies]] [[!redirects homotopy (as a transformation)]] [[!redirects homotopies]] [[!redirects homotopic]] [[!redirects type of homotopies]] [[!redirects type of left homotopies]] [[!redirects type of right homotopies]]</textarea> </div> <!-- Container --> </body> </html>