CINXE.COM

higher inductive type 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> higher inductive type in nLab </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="robots" content="index,follow" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link href="/stylesheets/instiki.css?1676280126" media="all" rel="stylesheet" type="text/css" /> <link href="/stylesheets/mathematics.css?1660229990" media="all" rel="stylesheet" type="text/css" /> <link href="/stylesheets/syntax.css?1660229990" media="all" rel="stylesheet" type="text/css" /> <link href="/stylesheets/nlab.css?1676280126" media="all" rel="stylesheet" type="text/css" /> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/dreampulse/computer-modern-web-font@master/fonts.css"/> <style type="text/css"> h1#pageName, div.info, .newWikiWord a, a.existingWikiWord, .newWikiWord a:hover, [actiontype="toggle"]:hover, #TextileHelp h3 { color: #226622; } a:visited.existingWikiWord { color: #164416; } </style> <style type="text/css"><!--/*--><![CDATA[/*><!--*/ .toc ul {margin: 0; padding: 0;} .toc ul ul {margin: 0; padding: 0 0 0 10px;} .toc li > 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*="http://arxiv.org/"] { 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*="http://golem.ph.utexas.edu/category"] { 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$=".pdf"] { 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*=".pdf#"] { 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^="http://"] { border: 0px; color: #003399; } a[href^="http://"]:visited { border: 0px; color: #330066; } a[href^="https://"] { border: 0px; color: #003399; } a[href^="https://"]: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: "A(Hover to reveal, click to "hold")"; font-size: 60%; } div.clickDown .clickToHide:after { content: "A(Click to hide)"; 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 src="/javascripts/page_helper.js?1660229990" type="text/javascript"></script> <script src="/javascripts/thm_numbering.js?1660229990" type="text/javascript"></script> <script type="text/x-mathjax-config"> <!--//--><![CDATA[//><!-- MathJax.Ajax.config.path["Contrib"] = "/MathJax"; MathJax.Hub.Config({ MathML: { useMathMLspacing: true }, "HTML-CSS": { scale: 90, extensions: ["handle-floats.js"] } }); MathJax.Hub.Queue( function () { var fos = document.getElementsByTagName('foreignObject'); for (var i = 0; i < fos.length; i++) { MathJax.Hub.Typeset(fos[i]); } }); //--><!]]> </script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- window.addEventListener("DOMContentLoaded", function () { var div = document.createElement('div'); var math = document.createElementNS('http://www.w3.org/1998/Math/MathML', 'math'); document.body.appendChild(div); div.appendChild(math); // Test for MathML support comparable to WebKit version https://trac.webkit.org/changeset/203640 or higher. div.setAttribute('style', 'font-style: italic'); var mathml_unsupported = !(window.getComputedStyle(div.firstChild).getPropertyValue('font-style') === 'normal'); div.parentNode.removeChild(div); if (mathml_unsupported) { // MathML does not seem to be supported... var s = document.createElement('script'); s.src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=MML_HTMLorMML-full"; document.querySelector('head').appendChild(s); } else { document.head.insertAdjacentHTML("beforeend", '<style>svg[viewBox] {max-width: 100%}</style>'); } }); //--><!]]> </script> <link href="https://ncatlab.org/nlab/atom_with_headlines" rel="alternate" title="Atom with headlines" type="application/atom+xml" /> <link href="https://ncatlab.org/nlab/atom_with_content" rel="alternate" title="Atom with full content" type="application/atom+xml" /> <script type="text/javascript"> document.observe("dom:loaded", function() { generateThmNumbers(); }); </script> </head> <body> <div id="Container"> <div id="Content"> <h1 id="pageName"> <span style="float: left; margin: 0.5em 0.25em -0.25em 0"> <svg xmlns="http://www.w3.org/2000/svg" width="1.872em" height="1.8em" viewBox="0 0 190 181"> <path fill="#226622" d="M72.8 145c-1.6 17.3-15.7 10-23.6 20.2-5.6 7.3 4.8 15 11.4 15 11.5-.2 19-13.4 26.4-20.3 3.3-3 8.2-4 11.2-7.2a14 14 0 0 0 2.9-11.1c-1.4-9.6-12.4-18.6-16.9-27.2-5-9.6-10.7-27.4-24.1-27.7-17.4-.3-.4 26 4.7 30.7 2.4 2.3 5.4 4.1 7.3 6.9 1.6 2.3 2.1 5.8-1 7.2-5.9 2.6-12.4-6.3-15.5-10-8.8-10.6-15.5-23-26.2-31.8-5.2-4.3-11.8-8-18-3.7-7.3 4.9-4.2 12.9.2 18.5a81 81 0 0 0 30.7 23c3.3 1.5 12.8 5.6 10 10.7-2.5 5.2-11.7 3-15.6 1.1-8.4-3.8-24.3-21.3-34.4-13.7-3.5 2.6-2.3 7.6-1.2 11.1 2.8 9 12.2 17.2 20.9 20.5 17.3 6.7 34.3-8 50.8-12.1z"/> <path fill="#a41e32" d="M145.9 121.3c-.2-7.5 0-19.6-4.5-26-5.4-7.5-12.9-1-14.1 5.8-1.4 7.8 2.7 14.1 4.8 21.3 3.4 12 5.8 29-.8 40.1-3.6-6.7-5.2-13-7-20.4-2.1-8.2-12.8-13.2-15.1-1.9-2 9.7 9 21.2 12 30.1 1.2 4 2 8.8 6.4 10.3 6.9 2.3 13.3-4.7 17.7-8.8 12.2-11.5 36.6-20.7 43.4-36.4 6.7-15.7-13.7-14-21.3-7.2-9.1 8-11.9 20.5-23.6 25.1 7.5-23.7 31.8-37.6 38.4-61.4 2-7.3-.8-29.6-13-19.8-14.5 11.6-6.6 37.6-23.3 49.2z"/> <path fill="#193c78" d="M86.3 47.5c0-13-10.2-27.6-5.8-40.4 2.8-8.4 14.1-10.1 17-1 3.8 11.6-.3 26.3-1.8 38 11.7-.7 10.5-16 14.8-24.3 2.1-4.2 5.7-9.1 11-6.7 6 2.7 7.4 9.2 6.6 15.1-2.2 14-12.2 18.8-22.4 27-3.4 2.7-8 6.6-5.9 11.6 2 4.4 7 4.5 10.7 2.8 7.4-3.3 13.4-16.5 21.7-16 14.6.7 12 21.9.9 26.2-5 1.9-10.2 2.3-15.2 3.9-5.8 1.8-9.4 8.7-15.7 8.9-6.1.1-9-6.9-14.3-9-14.4-6-33.3-2-44.7-14.7-3.7-4.2-9.6-12-4.9-17.4 9.3-10.7 28 7.2 35.7 12 2 1.1 11 6.9 11.4 1.1.4-5.2-10-8.2-13.5-10-11.1-5.2-30-15.3-35-27.3-2.5-6 2.8-13.8 9.4-13.6 6.9.2 13.4 7 17.5 12C70.9 34 75 43.8 86.3 47.4z"/> </svg> </span> <span class="webName">nLab</span> higher inductive type </h1> <div class="navigation"> <span class="skipNav"><a href='#navEnd'>Skip the Navigation Links</a> | </span> <span style="display:inline-block; width: 0.3em;"></span> <a href="/nlab/show/HomePage" accesskey="H" title="Home page">Home Page</a> | <a href="/nlab/all_pages" accesskey="A" title="List of all pages">All Pages</a> | <a href="/nlab/latest_revisions" accesskey="U" title="Latest edits and page creations">Latest Revisions</a> | <a href="https://nforum.ncatlab.org/discussion/6691/#Item_87" title="Discuss this page in its dedicated thread on the nForum" style="color: black">Discuss this page</a> | <form accept-charset="utf-8" action="/nlab/search" id="navigationSearchForm" method="get"> <fieldset class="search"><input type="text" id="searchField" name="query" value="Search" style="display:inline-block; float: left;" onfocus="this.value == 'Search' ? this.value = '' : true" onblur="this.value == '' ? this.value = 'Search' : true" /></fieldset> </form> <span id='navEnd'></span> </div> <div id="revision"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xml:lang="en" lang="en"> <head><meta http-equiv="Content-type" content="application/xhtml+xml;charset=utf-8" /><title>Contents</title></head> <body> <div class="rightHandSide"> <div class="toc clickDown" tabindex="0"> <h3 id="context">Context</h3> <h4 id="type_theory">Type theory</h4> <div class="hide"><div> <p><strong><a class="existingWikiWord" href="/nlab/show/natural+deduction">natural deduction</a></strong> <a class="existingWikiWord" href="/nlab/show/metalanguage">metalanguage</a>, <a class="existingWikiWord" href="/nlab/show/practical+foundations">practical foundations</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/judgement">judgement</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/hypothetical+judgement">hypothetical judgement</a>, <a class="existingWikiWord" href="/nlab/show/sequent">sequent</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/antecedents">antecedents</a><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>⊢</mo></mrow><annotation encoding="application/x-tex">\vdash</annotation></semantics></math> <a class="existingWikiWord" href="/nlab/show/consequent">consequent</a>, <a class="existingWikiWord" href="/nlab/show/succedents">succedents</a></li> </ul> </li> </ul> <ol> <li><a class="existingWikiWord" href="/nlab/show/type+formation+rule">type formation rule</a></li> <li><a class="existingWikiWord" href="/nlab/show/term+introduction+rule">term introduction rule</a></li> <li><a class="existingWikiWord" href="/nlab/show/term+elimination+rule">term elimination rule</a></li> <li><a class="existingWikiWord" href="/nlab/show/computation+rule">computation rule</a></li> </ol> <p><strong><a class="existingWikiWord" href="/nlab/show/type+theory">type theory</a></strong> (<a class="existingWikiWord" href="/nlab/show/dependent+type+theory">dependent</a>, <a class="existingWikiWord" href="/nlab/show/intensional+type+theory">intensional</a>, <a class="existingWikiWord" href="/nlab/show/observational+type+theory">observational type theory</a>, <a class="existingWikiWord" href="/nlab/show/homotopy+type+theory">homotopy type theory</a>)</p> <ul> <li><a class="existingWikiWord" href="/nlab/show/calculus+of+constructions">calculus of constructions</a></li> </ul> <p><strong><a class="existingWikiWord" href="/nlab/show/syntax">syntax</a></strong> <a class="existingWikiWord" href="/nlab/show/object+language">object language</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/theory">theory</a>, <a class="existingWikiWord" href="/nlab/show/axiom">axiom</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/proposition">proposition</a>/<a class="existingWikiWord" href="/nlab/show/type">type</a> (<a class="existingWikiWord" href="/nlab/show/propositions+as+types">propositions as types</a>)</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/definition">definition</a>/<a class="existingWikiWord" href="/nlab/show/proof">proof</a>/<a class="existingWikiWord" href="/nlab/show/program">program</a> (<a class="existingWikiWord" href="/nlab/show/proofs+as+programs">proofs as programs</a>)</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/theorem">theorem</a></p> </li> </ul> <div> <p><strong><a class="existingWikiWord" href="/nlab/show/computational+trinitarianism">computational trinitarianism</a></strong> = <br /> <strong><a class="existingWikiWord" href="/nlab/show/propositions+as+types">propositions as types</a></strong> +<strong><a class="existingWikiWord" href="/nlab/show/programs+as+proofs">programs as proofs</a></strong> +<strong><a class="existingWikiWord" href="/nlab/show/relation+between+type+theory+and+category+theory">relation type theory/category theory</a></strong></p> <table><thead><tr><th><a class="existingWikiWord" href="/nlab/show/logic">logic</a></th><th><a class="existingWikiWord" href="/nlab/show/set+theory">set theory</a> (<a class="existingWikiWord" href="/nlab/show/internal+logic+of+set+theory">internal logic</a> of)</th><th><a class="existingWikiWord" href="/nlab/show/category+theory">category theory</a></th><th><a class="existingWikiWord" href="/nlab/show/type+theory">type theory</a></th></tr></thead><tbody><tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/proposition">proposition</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/set">set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/object">object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/type">type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/predicate">predicate</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/family+of+sets">family of sets</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/display+morphism">display morphism</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/dependent+type">dependent type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/proof">proof</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/element">element</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/generalized+element">generalized element</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/term">term</a>/<a class="existingWikiWord" href="/nlab/show/program">program</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/cut+rule">cut rule</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/composition">composition</a> of <a class="existingWikiWord" href="/nlab/show/classifying+morphisms">classifying morphisms</a> / <a class="existingWikiWord" href="/nlab/show/pullback">pullback</a> of <a class="existingWikiWord" href="/nlab/show/display+maps">display maps</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/substitution">substitution</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/introduction+rule">introduction rule</a> for <a class="existingWikiWord" href="/nlab/show/implication">implication</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/counit">counit</a> for hom-tensor adjunction</td><td style="text-align: left;">lambda</td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/elimination+rule">elimination rule</a> for <a class="existingWikiWord" href="/nlab/show/implication">implication</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/unit">unit</a> for hom-tensor adjunction</td><td style="text-align: left;">application</td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/cut+elimination">cut elimination</a> for <a class="existingWikiWord" href="/nlab/show/implication">implication</a></td><td style="text-align: left;"></td><td style="text-align: left;">one of the <a class="existingWikiWord" href="/nlab/show/zigzag+identities">zigzag identities</a> for hom-tensor adjunction</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/beta+reduction">beta reduction</a></td></tr> <tr><td style="text-align: left;">identity elimination for <a class="existingWikiWord" href="/nlab/show/implication">implication</a></td><td style="text-align: left;"></td><td style="text-align: left;">the other <a class="existingWikiWord" href="/nlab/show/zigzag+identity">zigzag identity</a> for hom-tensor adjunction</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/eta+conversion">eta conversion</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/true">true</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/singleton">singleton</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/terminal+object">terminal object</a>/<a class="existingWikiWord" href="/nlab/show/%28-2%29-truncated+object">(-2)-truncated object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/h-level+0">h-level 0</a>-<a class="existingWikiWord" href="/nlab/show/type">type</a>/<a class="existingWikiWord" href="/nlab/show/unit+type">unit type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/false">false</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/empty+set">empty set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/initial+object">initial object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/empty+type">empty type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/proposition">proposition</a>, <a class="existingWikiWord" href="/nlab/show/truth+value">truth value</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/subsingleton">subsingleton</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/subterminal+object">subterminal object</a>/<a class="existingWikiWord" href="/nlab/show/%28-1%29-truncated+object">(-1)-truncated object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/h-proposition">h-proposition</a>, <a class="existingWikiWord" href="/nlab/show/mere+proposition">mere proposition</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/logical+conjunction">logical conjunction</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/cartesian+product">cartesian product</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/product">product</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/product+type">product type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/disjunction">disjunction</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/disjoint+union">disjoint union</a> (<a class="existingWikiWord" href="/nlab/show/support">support</a> of)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/coproduct">coproduct</a> (<a class="existingWikiWord" href="/nlab/show/%28-1%29-truncation">(-1)-truncation</a> of)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/sum+type">sum type</a> (<a class="existingWikiWord" href="/nlab/show/bracket+type">bracket type</a> of)</td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/implication">implication</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/function+set">function set</a> (into <a class="existingWikiWord" href="/nlab/show/subsingleton">subsingleton</a>)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/internal+hom">internal hom</a> (into <a class="existingWikiWord" href="/nlab/show/subterminal+object">subterminal object</a>)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/function+type">function type</a> (into <a class="existingWikiWord" href="/nlab/show/h-proposition">h-proposition</a>)</td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/negation">negation</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/function+set">function set</a> into <a class="existingWikiWord" href="/nlab/show/empty+set">empty set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/internal+hom">internal hom</a> into <a class="existingWikiWord" href="/nlab/show/initial+object">initial object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/function+type">function type</a> into <a class="existingWikiWord" href="/nlab/show/empty+type">empty type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/universal+quantification">universal quantification</a></td><td style="text-align: left;">indexed <a class="existingWikiWord" href="/nlab/show/cartesian+product">cartesian product</a> (of family of <a class="existingWikiWord" href="/nlab/show/subsingletons">subsingletons</a>)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/dependent+product">dependent product</a> (of family of <a class="existingWikiWord" href="/nlab/show/subterminal+objects">subterminal objects</a>)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/dependent+product+type">dependent product type</a> (of family of <a class="existingWikiWord" href="/nlab/show/h-propositions">h-propositions</a>)</td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/existential+quantification">existential quantification</a></td><td style="text-align: left;">indexed <a class="existingWikiWord" href="/nlab/show/disjoint+union">disjoint union</a> (<a class="existingWikiWord" href="/nlab/show/support">support</a> of)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/dependent+sum">dependent sum</a> (<a class="existingWikiWord" href="/nlab/show/%28-1%29-truncation">(-1)-truncation</a> of)</td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/dependent+sum+type">dependent sum type</a> (<a class="existingWikiWord" href="/nlab/show/bracket+type">bracket type</a> of)</td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/logical+equivalence">logical equivalence</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/bijection+set">bijection set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/object+of+isomorphisms">object of isomorphisms</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/equivalence+type">equivalence type</a></td></tr> <tr><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/support+set">support set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/support+object">support object</a>/<a class="existingWikiWord" href="/nlab/show/%28-1%29-truncation">(-1)-truncation</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/propositional+truncation">propositional truncation</a>/<a class="existingWikiWord" href="/nlab/show/bracket+type">bracket type</a></td></tr> <tr><td style="text-align: left;"></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/n-image">n-image</a> of <a class="existingWikiWord" href="/nlab/show/morphism">morphism</a> into <a class="existingWikiWord" href="/nlab/show/terminal+object">terminal object</a>/<a class="existingWikiWord" href="/nlab/show/n-truncation">n-truncation</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/n-truncation+modality">n-truncation modality</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/equality">equality</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/diagonal+function">diagonal function</a>/<a class="existingWikiWord" href="/nlab/show/diagonal+subset">diagonal subset</a>/<a class="existingWikiWord" href="/nlab/show/diagonal+relation">diagonal relation</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/path+space+object">path space object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/identity+type">identity type</a>/<a class="existingWikiWord" href="/nlab/show/path+type">path type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/completely+presented+set">completely presented set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/set">set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/discrete+object">discrete object</a>/<a class="existingWikiWord" href="/nlab/show/0-truncated+object">0-truncated object</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/h-level+2">h-level 2</a>-<a class="existingWikiWord" href="/nlab/show/type">type</a>/<a class="existingWikiWord" href="/nlab/show/set">set</a>/<a class="existingWikiWord" href="/nlab/show/h-set">h-set</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/set">set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/set">set</a> with <a class="existingWikiWord" href="/nlab/show/equivalence+relation">equivalence relation</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/groupoid+object+in+an+%28infinity%2C1%29-category">internal 0-groupoid</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/Bishop+set">Bishop set</a>/<a class="existingWikiWord" href="/nlab/show/setoid">setoid</a> with its <a class="existingWikiWord" href="/nlab/show/pseudo-equivalence+relation">pseudo-equivalence relation</a> an actual <a class="existingWikiWord" href="/nlab/show/equivalence+relation">equivalence relation</a></td></tr> <tr><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/equivalence+class">equivalence class</a>/<a class="existingWikiWord" href="/nlab/show/quotient+set">quotient set</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/quotient">quotient</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/quotient+type">quotient type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/induction">induction</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/colimit">colimit</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/inductive+type">inductive type</a>, <a class="existingWikiWord" href="/nlab/show/W-type">W-type</a>, <a class="existingWikiWord" href="/nlab/show/M-type">M-type</a></td></tr> <tr><td style="text-align: left;">higher <a class="existingWikiWord" href="/nlab/show/induction">induction</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/%28infinity%2C1%29-colimit">higher colimit</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/higher+inductive+type">higher inductive type</a></td></tr> <tr><td style="text-align: left;">-</td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/0-truncated">0-truncated</a> <a class="existingWikiWord" href="/nlab/show/%28infinity%2C1%29-colimit">higher colimit</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/quotient+inductive+type">quotient inductive type</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/coinduction">coinduction</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/limit">limit</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/coinductive+type">coinductive type</a></td></tr> <tr><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/preset">preset</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/type">type</a> without <a class="existingWikiWord" href="/nlab/show/identity+types">identity types</a></td></tr> <tr><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/set">set</a> of <a class="existingWikiWord" href="/nlab/show/truth+values">truth values</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/subobject+classifier">subobject classifier</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/type+of+propositions">type of propositions</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/domain+of+discourse">domain of discourse</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/universe">universe</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/object+classifier">object classifier</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/type+universe">type universe</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/modality">modality</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/closure+operator">closure operator</a>, (<a class="existingWikiWord" href="/nlab/show/idempotent+monad">idempotent</a>) <a class="existingWikiWord" href="/nlab/show/monad">monad</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/modal+type+theory">modal type theory</a>, <a class="existingWikiWord" href="/nlab/show/monad+%28in+computer+science%29">monad (in computer science)</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/linear+logic">linear logic</a></td><td style="text-align: left;"></td><td style="text-align: left;">(<a class="existingWikiWord" href="/nlab/show/symmetric+monoidal+category">symmetric</a>, <a class="existingWikiWord" href="/nlab/show/closed+monoidal+category">closed</a>) <a class="existingWikiWord" href="/nlab/show/monoidal+category">monoidal category</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/linear+type+theory">linear type theory</a>/<a class="existingWikiWord" href="/nlab/show/quantum+computation">quantum computation</a></td></tr> <tr><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/proof+net">proof net</a></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/string+diagram">string diagram</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/quantum+circuit">quantum circuit</a></td></tr> <tr><td style="text-align: left;">(absence of) <a class="existingWikiWord" href="/nlab/show/contraction+rule">contraction rule</a></td><td style="text-align: left;"></td><td style="text-align: left;">(absence of) <a class="existingWikiWord" href="/nlab/show/diagonal">diagonal</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/no-cloning+theorem">no-cloning theorem</a></td></tr> <tr><td style="text-align: left;"></td><td style="text-align: left;"></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/synthetic+mathematics">synthetic mathematics</a></td><td style="text-align: left;"><a class="existingWikiWord" href="/nlab/show/domain+specific+embedded+programming+language">domain specific embedded programming language</a></td></tr> </tbody></table> </div> <p><strong><a class="existingWikiWord" href="/nlab/show/homotopy+levels">homotopy levels</a></strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/type+theory">type theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/2-type+theory">2-type theory</a>, <a class="existingWikiWord" href="/michaelshulman/show/2-categorical+logic">2-categorical logic</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+type+theory">homotopy type theory</a>, <a class="existingWikiWord" href="/nlab/show/homotopy+type+theory+-+contents">homotopy type theory - contents</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+type">homotopy type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/univalence">univalence</a>, <a class="existingWikiWord" href="/nlab/show/function+extensionality">function extensionality</a>, <a class="existingWikiWord" href="/nlab/show/internal+logic+of+an+%28%E2%88%9E%2C1%29-topos">internal logic of an (∞,1)-topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/cohesive+homotopy+type+theory">cohesive homotopy type theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/directed+homotopy+type+theory">directed homotopy type theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/HoTT+methods+for+homotopy+theorists">HoTT methods for homotopy theorists</a></p> </li> </ul> </li> </ul> <p><strong><a class="existingWikiWord" href="/nlab/show/semantics">semantics</a></strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/internal+logic">internal logic</a>, <a class="existingWikiWord" href="/nlab/show/categorical+semantics">categorical semantics</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/display+map">display map</a></li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/internal+logic+of+a+topos">internal logic of a topos</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Mitchell-Benabou+language">Mitchell-Benabou language</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Kripke-Joyal+semantics">Kripke-Joyal semantics</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/internal+logic+of+an+%28%E2%88%9E%2C1%29-topos">internal logic of an (∞,1)-topos</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/type-theoretic+model+category">type-theoretic model category</a></li> </ul> </li> </ul> <div> <p> <a href="/nlab/edit/type+theory+-+contents">Edit this sidebar</a> </p> </div></div></div> <h4 id="induction">Induction</h4> <div class="hide"><div> <ul> <li><strong><a class="existingWikiWord" href="/nlab/show/inductive+type">inductive type</a></strong></li> <li><strong><a class="existingWikiWord" href="/nlab/show/higher+inductive+type">higher inductive type</a></strong></li> <li><strong><a class="existingWikiWord" href="/nlab/show/coinductive+type">coinductive type</a></strong></li> </ul> <h2 id="sidebar_rules">Rules</h2> <ul> <li><a class="existingWikiWord" href="/nlab/show/induction">induction</a>, <a class="existingWikiWord" href="/nlab/show/coinduction">coinduction</a></li> <li><a class="existingWikiWord" href="/nlab/show/recursion">recursion</a>, <a class="existingWikiWord" href="/nlab/show/corecursion">corecursion</a></li> </ul> <h2 id="sidebar_categorical_semantics">Categorical semantics</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/initial+algebra+of+an+endofunctor">initial algebra of an endofunctor</a>, <a class="existingWikiWord" href="/nlab/show/terminal+coalgebra+of+an+endofunctor">terminal coalgebra of an endofunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/initial+algebra+of+a+presentable+%E2%88%9E-monad">initial algebra of a presentable ∞-monad</a></p> </li> </ul> <h2 id="sidebar_examples">Examples</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/natural+numbers+object">natural numbers object</a>, <a class="existingWikiWord" href="/nlab/show/natural+numbers+type">natural numbers type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/list">list</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/identity+type">identity type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/W-type">W-type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/circle+type">circle type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/interval+type">interval type</a></p> </li> </ul> </div></div> <h4 id="homotopy_theory">Homotopy theory</h4> <div class="hide"><div> <p><strong><a class="existingWikiWord" href="/nlab/show/homotopy+theory">homotopy theory</a>, <a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-category+theory">(∞,1)-category theory</a>, <a class="existingWikiWord" href="/nlab/show/homotopy+type+theory">homotopy type theory</a></strong></p> <p>flavors: <a class="existingWikiWord" href="/nlab/show/stable+homotopy+theory">stable</a>, <a class="existingWikiWord" href="/nlab/show/equivariant+homotopy+theory">equivariant</a>, <a class="existingWikiWord" href="/nlab/show/rational+homotopy+theory">rational</a>, <a class="existingWikiWord" href="/nlab/show/p-adic+homotopy+theory">p-adic</a>, <a class="existingWikiWord" href="/nlab/show/proper+homotopy+theory">proper</a>, <a class="existingWikiWord" href="/nlab/show/geometric+homotopy+theory">geometric</a>, <a class="existingWikiWord" href="/nlab/show/cohesive+homotopy+theory">cohesive</a>, <a class="existingWikiWord" href="/nlab/show/directed+homotopy+theory">directed</a>…</p> <p>models: <a class="existingWikiWord" href="/nlab/show/topological+homotopy+theory">topological</a>, <a class="existingWikiWord" href="/nlab/show/simplicial+homotopy+theory">simplicial</a>, <a class="existingWikiWord" href="/nlab/show/localic+homotopy+theory">localic</a>, …</p> <p>see also <strong><a class="existingWikiWord" href="/nlab/show/algebraic+topology">algebraic topology</a></strong></p> <p><strong>Introductions</strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Introduction+to+Topology+--+2">Introduction to Basic Homotopy Theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Introduction+to+Homotopy+Theory">Introduction to Abstract Homotopy Theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/geometry+of+physics+--+homotopy+types">geometry of physics – homotopy types</a></p> </li> </ul> <p><strong>Definitions</strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy">homotopy</a>, <a class="existingWikiWord" href="/nlab/show/higher+homotopy">higher homotopy</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+type">homotopy type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Pi-algebra">Pi-algebra</a>, <a class="existingWikiWord" href="/nlab/show/spherical+object+and+Pi%28A%29-algebra">spherical object and Pi(A)-algebra</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+coherent+category+theory">homotopy coherent category theory</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopical+category">homotopical category</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/model+category">model category</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/category+of+fibrant+objects">category of fibrant objects</a>, <a class="existingWikiWord" href="/nlab/show/cofibration+category">cofibration category</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Waldhausen+category">Waldhausen category</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+category">homotopy category</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/Ho%28Top%29">Ho(Top)</a></li> </ul> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-category">(∞,1)-category</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/homotopy+category+of+an+%28%E2%88%9E%2C1%29-category">homotopy category of an (∞,1)-category</a></li> </ul> </li> </ul> <p><strong>Paths and cylinders</strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/left+homotopy">left homotopy</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/cylinder+object">cylinder object</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/mapping+cone">mapping cone</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/right+homotopy">right homotopy</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/path+object">path object</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/mapping+cocone">mapping cocone</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/generalized+universal+bundle">universal bundle</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/interval+object">interval object</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+localization">homotopy localization</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/infinitesimal+interval+object">infinitesimal interval object</a></p> </li> </ul> </li> </ul> <p><strong>Homotopy groups</strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+group">homotopy group</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+group">fundamental group</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/fundamental+group+of+a+topos">fundamental group of a topos</a></li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Brown-Grossman+homotopy+group">Brown-Grossman homotopy group</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/categorical+homotopy+groups+in+an+%28%E2%88%9E%2C1%29-topos">categorical homotopy groups in an (∞,1)-topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/geometric+homotopy+groups+in+an+%28%E2%88%9E%2C1%29-topos">geometric homotopy groups in an (∞,1)-topos</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+%E2%88%9E-groupoid">fundamental ∞-groupoid</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+groupoid">fundamental groupoid</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/path+groupoid">path groupoid</a></li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+%E2%88%9E-groupoid+in+a+locally+%E2%88%9E-connected+%28%E2%88%9E%2C1%29-topos">fundamental ∞-groupoid in a locally ∞-connected (∞,1)-topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+%E2%88%9E-groupoid+of+a+locally+%E2%88%9E-connected+%28%E2%88%9E%2C1%29-topos">fundamental ∞-groupoid of a locally ∞-connected (∞,1)-topos</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+%28%E2%88%9E%2C1%29-category">fundamental (∞,1)-category</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/fundamental+category">fundamental category</a></li> </ul> </li> </ul> <p><strong>Basic facts</strong></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/fundamental+group+of+the+circle+is+the+integers">fundamental group of the circle is the integers</a></li> </ul> <p><strong>Theorems</strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/fundamental+theorem+of+covering+spaces">fundamental theorem of covering spaces</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Freudenthal+suspension+theorem">Freudenthal suspension theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Blakers-Massey+theorem">Blakers-Massey theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/higher+homotopy+van+Kampen+theorem">higher homotopy van Kampen theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/nerve+theorem">nerve theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Whitehead%27s+theorem">Whitehead's theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Hurewicz+theorem">Hurewicz theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Galois+theory">Galois theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+hypothesis">homotopy hypothesis</a>-theorem</p> </li> </ul> </div></div> </div> </div> <h1 id="contents">Contents</h1> <div class='maruku_toc'> <ul> <li><a href='#idea'>Idea</a></li> <li><a href='#examples'>Examples</a></li> <ul> <li><a href='#ExamplesTheCircle'>The circle</a></li> <li><a href='#the_interval'>The interval</a></li> <li><a href='#the_2sphere'>The 2-sphere</a></li> <li><a href='#suspension'>Suspension</a></li> <li><a href='#MappingCylinders'>Mapping cylinders</a></li> <li><a href='#truncation'>Truncation</a></li> <li><a href='#QuotientsOfTypes'>Quotients of types</a></li> <li><a href='#disjunctions'>Disjunctions</a></li> <li><a href='#existential_quantifiers'>Existential quantifiers</a></li> <li><a href='#QuotientsOfSets'>Quotients of sets</a></li> <li><a href='#quotient_inductive_types'>Quotient inductive types</a></li> <li><a href='#finset'>FinSet</a></li> <li><a href='#integers'>Integers</a></li> <li><a href='#other'>Other</a></li> </ul> <li><a href='#semantics'>Semantics</a></li> <li><a href='#related_concepts'>Related concepts</a></li> <li><a href='#references'>References</a></li> </ul> </div> <h2 id="idea">Idea</h2> <p><em>Higher inductive types</em> (HITs) are a generalization of <a class="existingWikiWord" href="/nlab/show/inductive+types">inductive types</a> which allow the constructors to produce, not just points of the type being defined, but also elements of its iterated <a class="existingWikiWord" href="/nlab/show/identity+types">identity types</a>.</p> <p>While HITs are already useful in <a class="existingWikiWord" href="/nlab/show/extensional+type+theory">extensional type theory</a>, they are most useful and powerful in <a class="existingWikiWord" href="/nlab/show/homotopy+type+theory">homotopy type theory</a>, where they allow the construction of <a class="existingWikiWord" href="/nlab/show/cell+complexes">cell complexes</a>, <a class="existingWikiWord" href="/nlab/show/homotopy+colimits">homotopy colimits</a>, <a class="existingWikiWord" href="/nlab/show/n-truncated">truncations</a>, <a class="existingWikiWord" href="/nlab/show/Bousfield+localization+of+model+categories">localizations</a>, and many other objects from classical <a class="existingWikiWord" href="/nlab/show/homotopy+theory">homotopy theory</a>.</p> <p>Defining what a HIT is “in general” is an open research problem. One mostly precise proposal may be found in &lbrack;<a href="#ShulmanLumsdaine16">Shulman &amp; Lumsdaine (2016)</a>&rbrack;. A more syntactic description of a class of HITs may be found in &lbrack;<a href="#Brunerie16">Brunerie (2016)</a>, <a href="#VezzosiM&#xF6;rtbergAbel19">Vezzosi, Mörtberg &amp; Abel (2019)</a>&rbrack;. A solution to this problem should determine how to define the concept of an <a class="existingWikiWord" href="/nlab/show/elementary+%28%E2%88%9E%2C1%29-topos">elementary (∞,1)-topos</a>.</p> <h2 id="examples">Examples</h2> <p>All higher inductive types described below are given together with some pseudo-<a class="existingWikiWord" href="/nlab/show/Coq">Coq</a> code, which would implement that HIT if Coq supported HITs natively.</p> <h3 id="ExamplesTheCircle">The circle</h3> <p>The <a class="existingWikiWord" href="/nlab/show/circle+type">circle type</a> is:</p> <pre><code>Inductive circle : Type := | base : circle | loop : base == base.</code></pre> <p>Using the <a class="existingWikiWord" href="/nlab/show/univalence+axiom">univalence axiom</a>, one can prove that the <a class="existingWikiWord" href="/nlab/show/loop+space">loop space</a> <code>base == base</code> of the circle type is equivalent to the <a class="existingWikiWord" href="/nlab/show/integers">integers</a>.</p> <p>(<a href="circle#LicataShulman13">Licata &amp; Shulman 13</a>, <a href="circle#BezemBuchholtzGraysonShulman19">Bezem, Buchholtz, Grayson &amp; Shulman 19</a>).</p> <h3 id="the_interval">The interval</h3> <p>The <a class="existingWikiWord" href="/nlab/show/homotopy+type">homotopy type</a> of the <a class="existingWikiWord" href="/nlab/show/interval">interval</a> can be encoded as</p> <pre><code>Inductive interval : Type := | zero : interval | one : interval | segment : zero == one.</code></pre> <p>See <a class="existingWikiWord" href="/nlab/show/interval+type">interval type</a>. The interval can be proven to be <a class="existingWikiWord" href="/nlab/show/contractible+type">contractible</a>. On the other hand, if the constructors <code>zero</code> and <code>one</code> satisfy their elimination rules definitionally, then the existence of an interval type implies <a class="existingWikiWord" href="/nlab/show/function+extensionality">function extensionality</a>; see <a href="http://homotopytypetheory.org/2011/04/04/an-interval-type-implies-function-extensionality/">this blog post</a>. The interval can be defined as the -1-truncation of the booleans; see <a href="https://groups.google.com/d/msg/homotopytypetheory/-5mLEi_qMTo/gpNUsmI-ZT4J">here</a>:</p> <pre><code>Inductive interval : Type := | inj : boolean -&gt; interval | contr0 : forall (p q : interval) p == q</code></pre> <p>Or more directly:</p> <pre><code>Inductive interval : Type := | zero : interval | one : interval | contr0 : forall (p q : interval) p == q</code></pre> <h3 id="the_2sphere">The 2-sphere</h3> <p>Similarly the <a class="existingWikiWord" href="/nlab/show/homotopy+type">homotopy type</a> of the 2-<a class="existingWikiWord" href="/nlab/show/dimensional">dimensional</a> <a class="existingWikiWord" href="/nlab/show/sphere">sphere</a></p> <pre><code>Inductive sphere2 : Type := | base2 : sphere2 | surf2 : idpath base2 == idpath base2.</code></pre> <h3 id="suspension">Suspension</h3> <pre><code>Inductive susp (X : Type) : Type := | north : susp X | south : susp X | merid : X -&gt; north == south.</code></pre> <p>This is the unpointed <a class="existingWikiWord" href="/nlab/show/suspension">suspension</a>. It is also possible to define the pointed suspension. Using either one, we can define the <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math>-sphere by induction on <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math>, since <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>S</mi> <mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msup></mrow><annotation encoding="application/x-tex">S^{n+1}</annotation></semantics></math> is the suspension of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>S</mi> <mi>n</mi></msup></mrow><annotation encoding="application/x-tex">S^n</annotation></semantics></math>.</p> <h3 id="MappingCylinders">Mapping cylinders</h3> <p>The construction of <a class="existingWikiWord" href="/nlab/show/mapping+cylinders">mapping cylinders</a> is given by</p> <pre><code>Inductive cyl {X Y : Type} (f : X -&gt; Y) : Y -&gt; Type := | cyl_base : forall y:Y, cyl f y | cyl_top : forall x:X, cyl f (f x) | cyl_seg : forall x:X, cyl_top x == cyl_base (f x).</code></pre> <p>Using this construction, one can define a (cofibration, trivial fibration) <a class="existingWikiWord" href="/nlab/show/weak+factorization+system">weak factorization system</a> for types.</p> <h3 id="truncation">Truncation</h3> <pre><code>Inductive is_inhab (A : Type) : Type := | inhab : A -&gt; is_inhab A | inhab_path : forall (x y: is_inhab A), x == y.</code></pre> <p>This is the <a class="existingWikiWord" href="/nlab/show/%28-1%29-truncated">(-1)-truncation</a> into <a class="existingWikiWord" href="/nlab/show/h-propositions">h-propositions</a>. One can prove that <code>is_inhab A</code> is always a <a class="existingWikiWord" href="/nlab/show/proposition">proposition</a> (i.e. <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mo lspace="verythinmathspace" rspace="0em">−</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(-1)</annotation></semantics></math>-truncated) and that it is the reflection of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math> into propositions. More generally, one can construct the <a class="existingWikiWord" href="/nlab/show/%28effective+epi%2C+mono%29+factorization+system">(effective epi, mono) factorization system</a> by applying <code>is_inhab</code> fiberwise to a fibration.</p> <p>Similarly, we have the <a class="existingWikiWord" href="/nlab/show/0-truncated">0-truncation</a> into <a class="existingWikiWord" href="/nlab/show/h-sets">h-sets</a>:</p> <pre><code>Inductive pi0 (X:Type) : Type := | cpnt : X -&gt; pi0 X | pi0_axiomK : forall (l : Circle -&gt; pi0 X), refl (l base) == map l loop.</code></pre> <p>We can similarly define <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math>-truncation for any <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math>, and we should be able to define it inductively for all <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math> at once as well.</p> <p>See at <em><a class="existingWikiWord" href="/nlab/show/n-truncation+modality">n-truncation modality</a></em>.</p> <h3 id="QuotientsOfTypes">Quotients of types</h3> <p>The <a class="existingWikiWord" href="/nlab/show/quotient">quotient</a> of a pure or Type-valued <a class="existingWikiWord" href="/nlab/show/equivalence+relation">equivalence relation</a>:</p> <pre><code>Inductive quotient (A : Type) (R : A -&gt; A -&gt; Type) : Type := | proj : A -&gt; quotient A R | relate : forall (x y : A), R x y -&gt; proj x == proj y</code></pre> <p>This definition is translated into Coq from the Cubical Agda library.</p> <h3 id="disjunctions">Disjunctions</h3> <p>The <a class="existingWikiWord" href="/nlab/show/disjunction">disjunction</a> of two types <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>B</mi></mrow><annotation encoding="application/x-tex">B</annotation></semantics></math>, yielding an <a class="existingWikiWord" href="/nlab/show/hProp">hProp</a>:</p> <pre><code>Inductive disjunction (A B:Type) : Type := | inl : A -&gt; disjunction A B | inr : B -&gt; disjunction A B. | contr0 : forall (p q : disjunction A B) p == q</code></pre> <h3 id="existential_quantifiers">Existential quantifiers</h3> <p>The <a class="existingWikiWord" href="/nlab/show/existential+quantifier">existential quantifier</a> of a type <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math> and a type family <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>B</mi><mo>:</mo><mi>A</mi><mo>→</mo><mi>Type</mi></mrow><annotation encoding="application/x-tex">B:A \to Type</annotation></semantics></math>, yielding an <a class="existingWikiWord" href="/nlab/show/hProp">hProp</a>:</p> <pre><code>Inductive existquant (A:Type) (B:A-&gt;Type) : Type := | exist : forall (x:A), B x -&gt; existquant A B | contr0 : forall (p q : existquant A B) p == q</code></pre> <h3 id="QuotientsOfSets">Quotients of sets</h3> <p>The <a class="existingWikiWord" href="/nlab/show/quotient">quotient</a> of an <a class="existingWikiWord" href="/nlab/show/hProp">hProp</a>-value <a class="existingWikiWord" href="/nlab/show/equivalence+relation">equivalence relation</a>, yielding an <a class="existingWikiWord" href="/nlab/show/hSet">hSet</a> (a <a class="existingWikiWord" href="/nlab/show/0-truncated">0-truncated</a> type):</p> <pre><code>Inductive quotient (A : Type) (R : A -&gt; A -&gt; hProp) : Type := | proj : A -&gt; quotient A R | relate : forall (x y : A), R x y -&gt; proj x == proj y | contr1 : forall (x y : quotient A R) (p q : x == y), p == q.</code></pre> <p>This is already interesting in <a class="existingWikiWord" href="/nlab/show/extensional+type+theory">extensional type theory</a>, where <a class="existingWikiWord" href="/nlab/show/quotient+types">quotient types</a> are not always included. For more general homotopical quotients of “<a class="existingWikiWord" href="/nlab/show/internal+groupoids">internal groupoids</a>” as in the <a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-Giraud+theorem">(∞,1)-Giraud theorem</a>, we first need a good definition of what such an internal groupoid is.</p> <h3 id="quotient_inductive_types">Quotient inductive types</h3> <p>A <a class="existingWikiWord" href="/nlab/show/quotient+inductive+type">quotient inductive type</a> is a higher inductive type that includes a “0-truncation” constructor such as <code>contr1</code> for a set-quotient. Many of these are useful in set-based mathematics; in addition to colimits in <a class="existingWikiWord" href="/nlab/show/Set">Set</a>, they can be used to construct free algebras and colimits of algebras of various sorts. Quotient <a class="existingWikiWord" href="/nlab/show/inductive-inductive+types">inductive-inductive types</a> are used to construct sets with <a class="existingWikiWord" href="/nlab/show/proposition">propositional</a> <a class="existingWikiWord" href="/nlab/show/relations">relations</a> and various <a class="existingWikiWord" href="/nlab/show/countable">countable</a> <a class="existingWikiWord" href="/nlab/show/completions">completions</a> of structures. Examples can be found at <a class="existingWikiWord" href="/nlab/show/quotient+inductive+type">quotient inductive type</a>, including:</p> <ul> <li>multiple definitions of the <a class="existingWikiWord" href="/nlab/show/integers">integers</a></li> <li><a class="existingWikiWord" href="/nlab/show/polynomial+rings">polynomial rings</a></li> <li><a class="existingWikiWord" href="/nlab/show/Sierpinski+space">Sierpinski space</a></li> <li>the <a class="existingWikiWord" href="/nlab/show/cumulative+hierarchy">cumulative hierarchy</a></li> <li>the <a class="existingWikiWord" href="/nlab/show/Cauchy+real+numbers">Cauchy real numbers</a></li> <li><a class="existingWikiWord" href="/nlab/show/partial+map+classifiers">partial map classifiers</a></li> <li><a class="existingWikiWord" href="/nlab/show/internal+type+theory">internal type theory</a></li> </ul> <h3 id="finset">FinSet</h3> <p>Since <a class="existingWikiWord" href="/nlab/show/FinSet">FinSet</a> is the initial <a class="existingWikiWord" href="/nlab/show/2-rig">2-rig</a>, one should be able to construct it as a higher inductive type with a <a class="existingWikiWord" href="/nlab/show/1-truncation">1-truncation</a> constructor.</p> <h3 id="integers">Integers</h3> <p>A definition of the set of <a class="existingWikiWord" href="/nlab/show/integers">integers</a> as a higher inductive type.</p> <pre><code>Inductive int : Type := | zero : int | succ : int -&gt; int | pred1 : int -&gt; int | pred2 : int -&gt; int | sec : forall (x : int) pred1 succ x == x | ret : forall (x : int) succ pred2 x == x</code></pre> <h3 id="other">Other</h3> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/circle+type">circle type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/sphere+type">sphere type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/cone+type">cone type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/square+type">square type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/pushout+type">pushout type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/suspension+type">suspension type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/join+type">join type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/wedge+sum+type">wedge sum type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/smash+product+type">smash product type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/localization+of+a+type+at+a+family+of+functions">localization of a type at a family of functions</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Eilenberg-MacLane+space+type">Eilenberg-MacLane space type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/spectrification+of+a+sequential+spectrum+type">spectrification of a sequential spectrum type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/James+construction+type">James construction type</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Rezk+completion">Rezk completion</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/dependent+pushout+type">dependent pushout type</a></p> </li> </ul> <h2 id="semantics">Semantics</h2> <p>See (<a href="#LumsdaineShulman17">Lumsdaine-Shulman17</a>).</p> <h2 id="related_concepts">Related concepts</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/inductive+type">inductive type</a>, <a class="existingWikiWord" href="/nlab/show/initial+algebra+of+an+endofunctor">initial algebra of an endofunctor</a></p> </li> <li> <p><strong>higher inductive type</strong>, <a class="existingWikiWord" href="/nlab/show/initial+algebra+of+a+presentable+%E2%88%9E-monad">initial algebra of a presentable ∞-monad</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/quotient+inductive+type">quotient inductive type</a></p> </li> </ul> <h2 id="references">References</h2> <p>Textbook account:</p> <ul> <li><a class="existingWikiWord" href="/nlab/show/Univalent+Foundations+Project">Univalent Foundations Project</a>, §6 of: <em><a class="existingWikiWord" href="/nlab/show/Homotopy+Type+Theory+--+Univalent+Foundations+of+Mathematics">Homotopy Type Theory – Univalent Foundations of Mathematics</a></em> (2013) &lbrack;<a href="http://homotopytypetheory.org/book/">web</a>, <a href="http://hottheory.files.wordpress.com/2013/03/hott-online-323-g28e4374.pdf">pdf</a>&rbrack;</li> </ul> <p>Expositions:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Mike+Shulman">Mike Shulman</a>, <em>Homotopy type theory IV</em> (<a href="http://golem.ph.utexas.edu/category/2011/04/homotopy_type_theory_vi.html">blog entry</a>)</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Peter+LeFanu+Lumsdaine">Peter LeFanu Lumsdaine</a>, <em>Higher inductive types, a tour of the menagerie</em> (2011) &lbrack;<a href="http://homotopytypetheory.org/2011/04/24/higher-inductive-types-a-tour-of-the-menagerie/">blog post</a>&rbrack;</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Peter+LeFanu+Lumsdaine">Peter LeFanu Lumsdaine</a>, <em>Higher Inductive Types: The circle and friends, axiomatically</em> (2011) &lbrack;<a href="http://pages.cpsc.ucalgary.ca/~robin/FMCS/FMCS2011/Lumsdaine_slides.pdf">pdf</a>, <a class="existingWikiWord" href="/nlab/files/Lumsdaine-HITs.pdf" title="pdf">pdf</a>&rbrack;</p> </li> <li> <p>Kajetan Söhnen, <em>Higher Inductive Types in Homotopy Type Theory</em>, Munich (2018) &lbrack;<a href="https://www.math.lmu.de/~petrakis/Soehnen.pdf">pdf</a>, <a class="existingWikiWord" href="/nlab/files/Soehnen-HigherInductiveTypes.pdf" title="pdf">pdf</a>&rbrack;</p> </li> </ul> <p>Details on the <a class="existingWikiWord" href="/nlab/show/categorical+semantics">categorical semantics</a> of HITs:</p> <ul> <li id="LumsdaineShulman17"><a class="existingWikiWord" href="/nlab/show/Peter+LeFanu+Lumsdaine">Peter LeFanu Lumsdaine</a>, <a class="existingWikiWord" href="/nlab/show/Mike+Shulman">Mike Shulman</a>, <em>Semantics of higher inductive types</em>, Math. Proc. Camb. Phil. Soc. <strong>169</strong> (2020) 159-208 &lbrack;<a href="https://arxiv.org/abs/1705.07088">arXiv:1705.07088</a>, talk slides <a href="http://home.sandiego.edu/~shulman/papers/cellcxs.pdf">pdf</a>, <a href="https://doi.org/10.1017/S030500411900015X">doi:10.1017/S030500411900015X</a>&rbrack;</li> </ul> <p>with precursors in</p> <ul> <li id="ShulmanLumsdaine12"> <p><a class="existingWikiWord" href="/nlab/show/Mike+Shulman">Mike Shulman</a>, <a class="existingWikiWord" href="/nlab/show/Peter+LeFanu+Lumsdaine">Peter LeFanu Lumsdaine</a>, <em>Semantics of higher inductive types</em> (2012) &lbrack;<a class="existingWikiWord" href="/nlab/files/ShulmanLumsdaine-HITs2012.pdf" title="pdf">pdf</a>&rbrack;</p> </li> <li id="ShulmanLumsdaine16"> <p><a class="existingWikiWord" href="/nlab/show/Mike+Shulman">Mike Shulman</a>, <a class="existingWikiWord" href="/nlab/show/Peter+LeFanu+Lumsdaine">Peter LeFanu Lumsdaine</a>, <em>Semantics and syntax of higher inductive types</em> (2016) &lbrack;<a href="http://home.sandiego.edu/~shulman/papers/stthits.pdf">slides</a>&rbrack;</p> </li> </ul> <p>Discussion of HITs which arise as homotopy-<a class="existingWikiWord" href="/nlab/show/initial+algebras+of+an+endofunctor">initial algebras of an endofunctor</a>:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Kristina+Sojakova">Kristina Sojakova</a>, <em>Higher Inductive Types as Homotopy-Initial Algebras</em>, ACM SIGPLAN Notices <strong>50</strong> 1 (2015) 31–42 &lbrack;<a href="http://arxiv.org/abs/1402.0761">arXiv:1402.0761</a>, <a href="https://doi.org/10.1145/2775051.2676983">doi:10.1145/2775051.2676983</a>&rbrack;</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Steve+Awodey">Steve Awodey</a>, <a class="existingWikiWord" href="/nlab/show/Nicola+Gambino">Nicola Gambino</a>, <a class="existingWikiWord" href="/nlab/show/Kristina+Sojakova">Kristina Sojakova</a>, <em>Homotopy-initial algebras in type theory</em>, Journal of the ACM <strong>63</strong> 6 (2017) 1–45 &lbrack;<a href="http://arxiv.org/abs/1504.05531">arXiv:1504.05531</a>, <a href="https://doi.org/10.1145/3006383">doi:10.1145/3006383</a>&rbrack;</p> </li> </ul> <p>Further developments:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Henning+Basold">Henning Basold</a>, <a class="existingWikiWord" href="/nlab/show/Herman+Geuvers">Herman Geuvers</a>, <a class="existingWikiWord" href="/nlab/show/Niels+van+der+Weide">Niels van der Weide</a>, <em>Higher Inductive Types in Programming</em>, Journal of Universal Computer Science <strong>23</strong> 1 (2017) 63-88 &lbrack;<a href="https://www.jucs.org/jucs_23_1/higher_inductive_types_in/jucs_23_01_0063_0088_basold.pdf">pdf</a>, <a href="https://nmvdw.github.io/pubs/Agda25.pdf">slides pdf</a>&rbrack;</p> </li> <li id="vanDoorn18"> <p><a class="existingWikiWord" href="/nlab/show/Floris+van+Doorn">Floris van Doorn</a>, §3 in: <em>On the Formalization of Higher Inductive Types and Synthetic Homotopy Theory</em> (2018) &lbrack;<a href="https://arxiv.org/abs/1808.10690">arXiv:1808.10690</a>&rbrack;</p> <blockquote> <p>(formalization in <a class="existingWikiWord" href="/nlab/show/Lean">Lean</a>)</p> </blockquote> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Niccol%C3%B2+Veltri">Niccolò Veltri</a>, <a class="existingWikiWord" href="/nlab/show/Niels+van+der+Weide">Niels van der Weide</a>, <em>Constructing Higher Inductive Types as Groupoid Quotients</em>, Logical Methods in Computer Science <strong>17</strong> 2 (2021) &lbrack;<a href="https://arxiv.org/abs/2002.08150">arXiv:2002.08150</a>, <a href="https://doi.org/10.23638/LMCS-17(2:8)2021">doi:10.23638/LMCS-17(2:8)2021</a>&rbrack;</p> </li> </ul> <p>Implementation of HITs in <a class="existingWikiWord" href="/nlab/show/proof+assistants">proof assistants</a>:</p> <p>in <a class="existingWikiWord" href="/nlab/show/Agda">Agda</a>:</p> <ul> <li id="Brunerie16"> <p><a class="existingWikiWord" href="/nlab/show/Guillaume+Brunerie">Guillaume Brunerie</a>, <em>Implementation of higher inductive types in HoTT-Agda</em> (2016) &lbrack;<a href="https://github.com/HoTT/HoTT-Agda/blob/master/core/lib/types/HIT_README.txt">github</a>&rbrack;</p> <blockquote> <p>(deprecated)</p> </blockquote> </li> </ul> <p>in <a class="existingWikiWord" href="/nlab/show/Cubical+Agda">Cubical Agda</a>:</p> <ul> <li id="VezzosiM&#xF6;rtbergAbel19"> <p><a class="existingWikiWord" href="/nlab/show/Andrea+Vezzosi">Andrea Vezzosi</a>, <a class="existingWikiWord" href="/nlab/show/Anders+M%C3%B6rtberg">Anders Mörtberg</a>, <a class="existingWikiWord" href="/nlab/show/Andreas+Abel">Andreas Abel</a>, §4 in: <em>Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types</em>, Proceedings of the ACM on Programming Languages <strong>3</strong> ICFP 87 (2019) 1–29 &lbrack;<a href="https://doi.org/10.1145/3341691">doi:10.1145/3341691</a>, <a href="https://www.cse.chalmers.se/~abela/icfp19.pdf">pdf</a>&rbrack;</p> </li> <li> <p><a href="https://agda.readthedocs.io/en/v2.6.2.2.20221128/language/cubical.html">cubical Agda documentation</a>: <em><a href="https://agda.readthedocs.io/en/v2.6.1/language/cubical.html#higher-inductive-types">Higher Inductive Types</a></em></p> </li> </ul> <p>in <a class="existingWikiWord" href="/nlab/show/Coq">Coq</a>:</p> <ul> <li>Bruno Barras, <em>Native implementation of Higher Inductive Types (HITs) in Coq</em> <a href="http://www.crm.cat/en/activities/documents/barras-crm-2013.pdf">PDF</a></li> </ul> <p>in <a class="existingWikiWord" href="/nlab/show/Lean">Lean</a>: <a href="#vanDoorn18">van Doorn (2018)</a></p> <p>Discussion of <a class="existingWikiWord" href="/nlab/show/coinduction">coinduction</a> via HITs:</p> <ul> <li>Magnus Baunsgaard Kristensen, <a class="existingWikiWord" href="/nlab/show/Rasmus+Ejlers+M%C3%B8gelberg">Rasmus Ejlers Møgelberg</a>, <a class="existingWikiWord" href="/nlab/show/Andrea+Vezzosi">Andrea Vezzosi</a>, <em>Greatest HITs: Higher inductive types in coinductive definitions via induction under clocks</em> (<a href="https://arxiv.org/abs/2102.01969">arXiv:2102.01969</a>)</li> </ul> <p>Discussion of impredicative encodings of higher inductive types:</p> <ul> <li><a class="existingWikiWord" href="/nlab/show/Steve+Awodey">Steve Awodey</a>, <a class="existingWikiWord" href="/nlab/show/Jonas+Frey">Jonas Frey</a>, and <a class="existingWikiWord" href="/nlab/show/Sam+Speight">Sam Speight</a>. “Impredicative Encodings of (Higher) Inductive Types”. In: Proceedings of the 33rd Annual ACM/IEEE Symposium on Logic in Computer Science. LICS ’18. Oxford, United Kingdom: ACM, 2018, pp. 76–85. (ISBN:978-1-4503-5583-4, <a href="https://doi.org/10.1145/3209108.3209130">doi:10.1145/3209108.3209130</a>)</li> </ul> </body></html> </div> <div class="revisedby"> <p> Last revised on February 10, 2024 at 22:34:20. See the <a href="/nlab/history/higher+inductive+type" style="color: #005c19">history</a> of this page for a list of all contributions to it. </p> </div> <div class="navigation navfoot"> <a href="/nlab/edit/higher+inductive+type" accesskey="E" class="navlink" id="edit" rel="nofollow">Edit</a><a href="https://nforum.ncatlab.org/discussion/6691/#Item_87">Discuss</a><span class="backintime"><a href="/nlab/revision/higher+inductive+type/73" accesskey="B" class="navlinkbackintime" id="to_previous_revision" rel="nofollow">Previous revision</a></span><a href="/nlab/show/diff/higher+inductive+type" accesskey="C" class="navlink" id="see_changes" rel="nofollow">Changes from previous revision</a><a href="/nlab/history/higher+inductive+type" accesskey="S" class="navlink" id="history" rel="nofollow">History (73 revisions)</a> <a href="/nlab/show/higher+inductive+type/cite" style="color: black">Cite</a> <a href="/nlab/print/higher+inductive+type" accesskey="p" id="view_print" rel="nofollow">Print</a> <a href="/nlab/source/higher+inductive+type" id="view_source" rel="nofollow">Source</a> </div> </div> <!-- Content --> </div> <!-- Container --> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10