CINXE.COM
Heyting algebra 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> Heyting algebra 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> Heyting algebra </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/2281/#Item_39" 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="topos_theory">Topos Theory</h4> <div class="hide"><div> <p><strong><a class="existingWikiWord" href="/nlab/show/topos+theory">topos theory</a></strong></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/Toposes">Toposes</a></li> </ul> <h2 id="background">Background</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/category+theory">category theory</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/category">category</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/functor">functor</a></p> </li> </ul> </li> </ul> <h2 id="toposes">Toposes</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/%280%2C1%29-topos">(0,1)-topos</a>, <a class="existingWikiWord" href="/nlab/show/Heyting+algebra">Heyting algebra</a>, <a class="existingWikiWord" href="/nlab/show/locale">locale</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/pretopos">pretopos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/topos">topos</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Grothendieck+topos">Grothendieck topos</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/category+of+presheaves">category of presheaves</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/presheaf">presheaf</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/representable+functor">representable presheaf</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/category+of+sheaves">category of sheaves</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/site">site</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/sieve">sieve</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/coverage">coverage</a>, <a class="existingWikiWord" href="/nlab/show/Grothendieck+pretopology">pretopology</a>, <a class="existingWikiWord" href="/nlab/show/Grothendieck+topology">topology</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/sheaf">sheaf</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/sheafification">sheafification</a></p> </li> </ul> </li> </ul> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/quasitopos">quasitopos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/base+topos">base topos</a>, <a class="existingWikiWord" href="/nlab/show/indexed+topos">indexed topos</a></p> </li> </ul> <h2 id="internal_logic">Internal Logic</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/categorical+semantics">categorical semantics</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/internal+logic">internal logic</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/subobject+classifier">subobject classifier</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/natural+numbers+object">natural numbers object</a></p> </li> </ul> </li> </ul> <h2 id="topos_morphisms">Topos morphisms</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/logical+morphism">logical morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/geometric+morphism">geometric morphism</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/direct+image">direct image</a>/<a class="existingWikiWord" href="/nlab/show/inverse+image">inverse image</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/global+section">global sections</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/geometric+embedding">geometric embedding</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/surjective+geometric+morphism">surjective geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/essential+geometric+morphism">essential geometric morphism</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/locally+connected+geometric+morphism">locally connected geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/connected+geometric+morphism">connected geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/totally+connected+geometric+morphism">totally connected geometric morphism</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%C3%A9tale+geometric+morphism">étale geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/open+geometric+morphism">open geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/proper+geometric+morphism">proper geometric morphism</a>, <a class="existingWikiWord" href="/nlab/show/compact+topos">compact topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/separated+geometric+morphism">separated geometric morphism</a>, <a class="existingWikiWord" href="/nlab/show/Hausdorff+topos">Hausdorff topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/local+geometric+morphism">local geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/bounded+geometric+morphism">bounded geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/base+change">base change</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/localic+geometric+morphism">localic geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/hyperconnected+geometric+morphism">hyperconnected geometric morphism</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/atomic+geometric+morphism">atomic geometric morphism</a></p> </li> </ul> </li> </ul> <h2 id="extra_stuff_structure_properties">Extra stuff, structure, properties</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/topological+locale">topological locale</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/localic+topos">localic topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/petit+topos">petit topos/gros topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/locally+connected+topos">locally connected topos</a>, <a class="existingWikiWord" href="/nlab/show/connected+topos">connected topos</a>, <a class="existingWikiWord" href="/nlab/show/totally+connected+topos">totally connected topos</a>, <a class="existingWikiWord" href="/nlab/show/strongly+connected+topos">strongly connected topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/local+topos">local topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/cohesive+topos">cohesive topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/classifying+topos">classifying topos</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/smooth+topos">smooth topos</a></p> </li> </ul> <h2 id="cohomology_and_homotopy">Cohomology and homotopy</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/cohomology">cohomology</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+groups+in+an+%28infinity%2C1%29-topos">homotopy</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/abelian+sheaf+cohomology">abelian sheaf cohomology</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/model+structure+on+simplicial+presheaves">model structure on simplicial presheaves</a></p> </li> </ul> <h2 id="in_higher_category_theory">In higher category theory</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/higher+topos+theory">higher topos theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%280%2C1%29-topos">(0,1)-topos</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/%280%2C1%29-site">(0,1)-site</a></li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/2-topos">2-topos</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/2-site">2-site</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/2-sheaf">2-sheaf</a>, <a class="existingWikiWord" href="/nlab/show/stack">stack</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-topos">(∞,1)-topos</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-site">(∞,1)-site</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-sheaf">(∞,1)-sheaf</a>, <a class="existingWikiWord" href="/nlab/show/%E2%88%9E-stack">∞-stack</a>, <a class="existingWikiWord" href="/nlab/show/derived+stack">derived stack</a></p> </li> </ul> </li> </ul> <h2 id="theorems">Theorems</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Diaconescu%27s+theorem">Diaconescu's theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Barr%27s+theorem">Barr's theorem</a></p> </li> </ul> <div> <p> <a href="/nlab/edit/topos+theory+-+contents">Edit this sidebar</a> </p> </div></div></div> <h4 id="category_theory"><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0,1)</annotation></semantics></math>-Category theory</h4> <div class="hide"><div> <p><strong><a class="existingWikiWord" href="/nlab/show/%280%2C1%29-category+theory">(0,1)-category theory</a></strong>: <a class="existingWikiWord" href="/nlab/show/logic">logic</a>, <a class="existingWikiWord" href="/nlab/show/order+theory">order theory</a></p> <p><strong><a class="existingWikiWord" href="/nlab/show/%280%2C1%29-category">(0,1)-category</a></strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/relation+between+preorders+and+%280%2C1%29-categories">relation between preorders and (0,1)-categories</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/proset">proset</a>, <a class="existingWikiWord" href="/nlab/show/partially+ordered+set">partially ordered set</a> (<a class="existingWikiWord" href="/nlab/show/directed+set">directed set</a>, <a class="existingWikiWord" href="/nlab/show/total+order">total order</a>, <a class="existingWikiWord" href="/nlab/show/linear+order">linear order</a>)</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/top">top</a>, <a class="existingWikiWord" href="/nlab/show/true">true</a>,</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/bottom">bottom</a>, <a class="existingWikiWord" href="/nlab/show/false">false</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/monotone+function">monotone function</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/implication">implication</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/filter">filter</a>, <a class="existingWikiWord" href="/nlab/show/interval">interval</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/lattice">lattice</a>, <a class="existingWikiWord" href="/nlab/show/semilattice">semilattice</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/meet">meet</a>, <a class="existingWikiWord" href="/nlab/show/logical+conjunction">logical conjunction</a>, <a class="existingWikiWord" href="/nlab/show/and">and</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/join">join</a>, <a class="existingWikiWord" href="/nlab/show/logical+disjunction">logical disjunction</a>, <a class="existingWikiWord" href="/nlab/show/or">or</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/compact+element">compact element</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/lattice+of+subobjects">lattice of subobjects</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/complete+lattice">complete lattice</a>, <a class="existingWikiWord" href="/nlab/show/algebraic+lattice">algebraic lattice</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/distributive+lattice">distributive lattice</a>, <a class="existingWikiWord" href="/nlab/show/completely+distributive+lattice">completely distributive lattice</a>, <a class="existingWikiWord" href="/nlab/show/canonical+extension">canonical extension</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/hyperdoctrine">hyperdoctrine</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/first-order+hyperdoctrine">first-order</a>, <a class="existingWikiWord" href="/nlab/show/Boolean+hyperdoctrine">Boolean</a>, <a class="existingWikiWord" href="/nlab/show/coherent+hyperdoctrine">coherent</a>, <a class="existingWikiWord" href="/nlab/show/tripos">tripos</a></li> </ul> </li> </ul> <p><strong><a class="existingWikiWord" href="/nlab/show/%280%2C1%29-topos">(0,1)-topos</a></strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Heyting+algebra">Heyting algebra</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/regular+element">regular element</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Boolean+algebra">Boolean algebra</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/frame">frame</a>, <a class="existingWikiWord" href="/nlab/show/locale">locale</a></p> </li> </ul> <h2 id="theorems">Theorems</h2> <ul> <li><a class="existingWikiWord" href="/nlab/show/Stone+duality">Stone duality</a></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='#definition'>Definition</a></li> <li><a href='#properties'>Properties</a></li> <ul> <li><a href='#negation'>Negation</a></li> <li><a href='#double_negation'>Double negation</a></li> </ul> <li><a href='#relation_to_other_concepts'>Relation to other concepts</a></li> <ul> <li><a href='#to_toposes'>To toposes</a></li> <li><a href='#to_topology'>To topology</a></li> </ul> <li><a href='#ToBooleanAlgebras'>Adjunctions with Boolean algebras</a></li> <li><a href='#examples'>Examples</a></li> <li><a href='#see_also'>See also</a></li> <li><a href='#references'>References</a></li> </ul> </div> <h2 id="Idea">Idea</h2> <p>Generally, the <a class="existingWikiWord" href="/nlab/show/propositions">propositions</a> in a <a class="existingWikiWord" href="/nlab/show/formal+logic">formal logic</a> may be thought of as having an <a class="existingWikiWord" href="/nlab/show/algebra">algebraic</a> structure with respect to logical operators like “<a class="existingWikiWord" href="/nlab/show/logical+conjunction">and</a>” and “<a class="existingWikiWord" href="/nlab/show/logical+disjunction">or</a>”. Under this identification, different systems of logic correspond to different sets of operators and axioms.</p> <p>For the <a class="existingWikiWord" href="/nlab/show/intuitionistic+logic">intuitionistic</a> <a class="existingWikiWord" href="/nlab/show/propositional+calculus">propositional calculus</a>, the operators (including nullary operators, i.e. constants) are “<a class="existingWikiWord" href="/nlab/show/logical+conjunction">and</a>”, “<a class="existingWikiWord" href="/nlab/show/logical+disjunction">or</a>”, “<a class="existingWikiWord" href="/nlab/show/true">true</a>”, “<a class="existingWikiWord" href="/nlab/show/false">false</a>”, and “<a class="existingWikiWord" href="/nlab/show/implication">implies</a>”. The concept of a <strong>Heyting algebra</strong> captures these operators and their axioms, so that a Heyting algebra is precisely a <a class="existingWikiWord" href="/nlab/show/model">model</a> of the intuitionistic propositional calculus.</p> <p>A Heyting algebra where <a class="existingWikiWord" href="/nlab/show/excluded+middle">excluded middle</a> holds is a <a class="existingWikiWord" href="/nlab/show/Boolean+algebra">Boolean algebra</a>, a model of <a class="existingWikiWord" href="/nlab/show/classical+logic">classical</a> propositional calculus.</p> <p>To model <a class="existingWikiWord" href="/nlab/show/quantifiers">quantifiers</a> and variables, i.e. to extend from <a class="existingWikiWord" href="/nlab/show/propositional+calculus">propositional calculus</a> to <a class="existingWikiWord" href="/nlab/show/first-order+logic">first-order</a> aka <a class="existingWikiWord" href="/nlab/show/predicate+logic">predicate logic</a>, one forms a <a class="existingWikiWord" href="/nlab/show/hyperdoctrine">hyperdoctrine</a> on Heyting algebras, called a <a class="existingWikiWord" href="/nlab/show/first-order+hyperdoctrine">first-order hyperdoctrine</a>.</p> <h2 id="definition">Definition</h2> <p> <div class='num_defn'> <h6>Definition</h6> <p>A <strong>Heyting algebra</strong> is a <a class="existingWikiWord" href="/nlab/show/lattice">lattice</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math> which as a <a class="existingWikiWord" href="/nlab/show/poset">poset</a> admits an operation of <a class="existingWikiWord" href="/nlab/show/implication">implication</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>⇒</mo><mo>:</mo><msup><mi>L</mi> <mi>op</mi></msup><mo>×</mo><mi>L</mi><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">\Rightarrow: L^{op} \times L \to L</annotation></semantics></math> satisfying the condition (really a <a class="existingWikiWord" href="/nlab/show/universal+property">universal property</a>)</p> <div class="maruku-equation" id="eq:UniversalProperty"><span class="maruku-eq-number">(1)</span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>a</mi><mo stretchy="false">)</mo><mo>≤</mo><mi>b</mi><mspace width="2em"></mspace><mtext>if and only if</mtext><mspace width="2em"></mspace><mi>x</mi><mo>≤</mo><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> (x \wedge a) \leq b \qquad \text{if and only if} \qquad x \leq (a \Rightarrow b) </annotation></semantics></math></div> <p>In other words, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">a \Rightarrow {-}</annotation></semantics></math> must be <a class="existingWikiWord" href="/nlab/show/right+adjoint">right adjoint</a> to <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo lspace="verythinmathspace" rspace="0em">−</mo><mo>∧</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">{-} \wedge a</annotation></semantics></math>.</p> <p></p> </div> </p> <p>This is equivalent to the following definition.</p> <p> <div class='num_defn'> <h6>Definition</h6> <p>A <strong>Heyting algebra</strong> is a <a class="existingWikiWord" href="/nlab/show/bicartesian+closed+category">bicartesian closed</a> <a class="existingWikiWord" href="/nlab/show/poset">poset</a>, that is a poset which (when thought of as a <a class="existingWikiWord" href="/nlab/show/thin+category">thin category</a>) is</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/finitely+complete+category">finitely complete</a>,</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/finitely+cocomplete+category">finitely cocomplete</a>,</p> </li> <li> <p>and <a class="existingWikiWord" href="/nlab/show/cartesian+closed+category">cartesian closed</a>.</p> </li> </ul> <p>The implication <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a\Rightarrow b</annotation></semantics></math> is the <a class="existingWikiWord" href="/nlab/show/exponential+object">exponential object</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>b</mi> <mi>a</mi></msup></mrow><annotation encoding="application/x-tex">b^a</annotation></semantics></math>.</p> <p></p> </div> </p> <p>Often (for instance, when doing forcing categorically) one is interested in <em>complete</em> Heyting algebras, which are Heyting algebras that admit <em>arbitrary</em> meets and joins (that is, not necessarily finite).</p> <p> <div class='num_remark'> <h6>Remark</h6> <p>Insofar as all these properties of a poset are described by <a class="existingWikiWord" href="/nlab/show/universal+properties">universal properties</a>, being a Heyting algebra is a <a class="existingWikiWord" href="/nlab/show/property-like+structure">property-like structure</a> on a poset; a poset can be a Heyting algebra in at most one way.</p> <p></p> </div> </p> <p>The definition of Heyting algebra may be recast into purely <a class="existingWikiWord" href="/nlab/show/algebraic+theory">equational form</a>: add to the equational theory of lattices the inequalities <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∧</mo><mi>x</mi><mo>≤</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">(x \Rightarrow y) \wedge x \leq y</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>y</mi><mo>≤</mo><mi>x</mi><mo>⇒</mo><mo stretchy="false">(</mo><mi>y</mi><mo>∧</mo><mi>x</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y \leq x \Rightarrow (y \wedge x)</annotation></semantics></math>, writing these inequalities in equational form via the equivalence <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>≤</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a \leq b</annotation></semantics></math> iff <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>=</mo><mi>a</mi><mo>∧</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a = a \wedge b</annotation></semantics></math>. Hence we can speak of an <strong><a class="existingWikiWord" href="/nlab/show/internalization">internal</a> Heyting algebra</strong> in any <a class="existingWikiWord" href="/nlab/show/cartesian+monoidal+category">category with products</a>.</p> <p> <div class='num_defn'> <h6>Definition</h6> <p>A Heyting algebra <a class="existingWikiWord" href="/nlab/show/homomorphism">homomorphism</a> is a homomorphism of the underlying <a class="existingWikiWord" href="/nlab/show/lattice">lattice</a>s that preserve <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>⇒</mo></mrow><annotation encoding="application/x-tex">\Rightarrow</annotation></semantics></math>. Heyting algebras and their homomorphisms form a <a class="existingWikiWord" href="/nlab/show/concrete+category">concrete category</a> <a class="existingWikiWord" href="/nlab/show/HeytAlg">HeytAlg</a>.</p> </div> </p> <p>If one relaxes the requirement that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>≤</mo></mrow><annotation encoding="application/x-tex">\leq</annotation></semantics></math> be antisymmetric, so that instead of a <a class="existingWikiWord" href="/nlab/show/poset">poset</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math> is only a <a class="existingWikiWord" href="/nlab/show/preorder">preorder</a>, the result is a <a class="existingWikiWord" href="/nlab/show/Heyting+prealgebra">Heyting prealgebra</a>.</p> <h2 id="properties">Properties</h2> <p> <div class='num_prop' id='prop:distributive'> <h6>Proposition</h6> <p>Any Heyting algebra is a <a class="existingWikiWord" href="/nlab/show/distributive+lattice">distributive lattice</a>. That is, finite meets distribute over finite joins and vice versa.</p> </div> </p> <p> <div class='proof'> <h6>Proof</h6> <p>As discussed at <a class="existingWikiWord" href="/nlab/show/distributive+lattice">distributive lattice</a>, it suffices to prove the nontrivial direction of either of the two (dual) binary distributivity laws, e.g. <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mo stretchy="false">(</mo><mi>y</mi><mo>∨</mo><mi>z</mi><mo stretchy="false">)</mo><mo>≤</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∨</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>z</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> x \wedge (y \vee z) \leq (x \wedge y) \vee (x \wedge z) </annotation></semantics></math>. This is a straightforward <a class="existingWikiWord" href="/nlab/show/exercise">exercise</a> applying the universal property <a class="maruku-eqref" href="#eq:UniversalProperty">(1)</a>.</p> <p>More abstractly: the distributivity law <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mo stretchy="false">(</mo><mi>y</mi><mo>∨</mo><mi>z</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∨</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>z</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">x \wedge (y \vee z) = (x \wedge y) \vee (x \wedge z)</annotation></semantics></math> says precisely that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">x \wedge {-}</annotation></semantics></math> preserves binary joins, which it does because it has a <a class="existingWikiWord" href="/nlab/show/right+adjoint">right adjoint</a> (namely <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">x \Rightarrow {-}</annotation></semantics></math>) and therefore <a class="existingWikiWord" href="/nlab/show/left+adjoints+preserve+colimits">preserves all colimits</a>.</p> </div> </p> <p>The relation of <strong>modus ponens</strong> is immediate from <a class="maruku-eqref" href="#eq:UniversalProperty">(1)</a>: for any <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a, b</annotation></semantics></math> in a Heyting algebra,</p> <div class="maruku-equation" id="eq:ModusPonens"><span class="maruku-eq-number">(2)</span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>∧</mo><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo><mo>≤</mo><mi>b</mi></mrow><annotation encoding="application/x-tex"> a \wedge (a \Rightarrow b) \leq b </annotation></semantics></math></div> <p>We list some further basic facts which are frequently useful, including in the proofs below:</p> <p> <div class='num_prop' id='BasicProperties'> <h6>Proposition</h6> <p>The following hold for any <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">a, b, c</annotation></semantics></math> in any Heyting algebra:</p> <ol> <li> <p>Composition law: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>c</mi><mo stretchy="false">)</mo><mo>≤</mo><mi>a</mi><mo>⇒</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">(a \Rightarrow b) \wedge (b \Rightarrow c) \leq a \Rightarrow c</annotation></semantics></math>.</p> </li> <li> <p>Currying: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>∧</mo><mi>b</mi><mo>⇒</mo><mi>c</mi><mo>=</mo><mi>a</mi><mo>⇒</mo><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>c</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a \wedge b \Rightarrow c = a \Rightarrow (b \Rightarrow c)</annotation></semantics></math>.</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">a \Rightarrow {-}</annotation></semantics></math> is monotone: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mi>b</mi><mo>≤</mo><mi>a</mi><mo>⇒</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">a \Rightarrow b \leq a \Rightarrow c</annotation></semantics></math> if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>b</mi><mo>≤</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">b \leq c</annotation></semantics></math>.</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">a \Rightarrow {-}</annotation></semantics></math> is increasing: <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>b</mi></mrow><annotation encoding="application/x-tex">b \leq a \Rightarrow b</annotation></semantics></math>.</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">a \Rightarrow {-}</annotation></semantics></math> is idempotent: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo><mo>=</mo><mi>a</mi><mo>⇒</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a \Rightarrow (a \Rightarrow b) = a \Rightarrow b</annotation></semantics></math>.</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo lspace="verythinmathspace" rspace="0em">−</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">{-} \Rightarrow a</annotation></semantics></math> is antimonotone: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>c</mi><mo>⇒</mo><mi>a</mi><mo>≤</mo><mi>b</mi><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">c \Rightarrow a \leq b \Rightarrow a</annotation></semantics></math> if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>b</mi><mo>≤</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">b \leq c</annotation></semantics></math>.</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo lspace="verythinmathspace" rspace="0em">−</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">{-} \Rightarrow a</annotation></semantics></math> is self-adjoint: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo lspace="verythinmathspace" rspace="0em">−</mo><mo>⇒</mo><mi>a</mi><mo>:</mo><mi>L</mi><mo>→</mo><msup><mi>L</mi> <mi mathvariant="normal">op</mi></msup></mrow><annotation encoding="application/x-tex">{-} \Rightarrow a: L \rightarrow L^{\mathrm{op}}</annotation></semantics></math> is left adjoint to <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo lspace="verythinmathspace" rspace="0em">−</mo><mo>⇒</mo><mi>a</mi><mo>:</mo><msup><mi>L</mi> <mi mathvariant="normal">op</mi></msup><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">{-} \Rightarrow a: L^{\mathrm{op}} \rightarrow L</annotation></semantics></math>.</p> <p>Explicitly, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>b</mi><mo>≤</mo><mo stretchy="false">(</mo><mi>c</mi><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">b \leq (c \Rightarrow a)</annotation></semantics></math> just if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><msup><mo>≤</mo> <mi mathvariant="normal">op</mi></msup><mi>c</mi></mrow><annotation encoding="application/x-tex">(b \Rightarrow a) \leq^{\mathrm{op}} c</annotation></semantics></math>, i.e. just if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>c</mi><mo>≤</mo><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">c \leq (b \Rightarrow a)</annotation></semantics></math>.</p> </li> <li> <p><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><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">({-} \Rightarrow a) \Rightarrow a</annotation></semantics></math> is increasing: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>b</mi><mo>≤</mo><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex"> b \leq (b \Rightarrow a) \Rightarrow a </annotation></semantics></math>.</p> </li> <li> <p><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><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">({-} \Rightarrow a) \Rightarrow a</annotation></semantics></math> is idempotent: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi><mo>=</mo><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mi>b</mi><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex"> (b \Rightarrow a) \Rightarrow a = (((b \Rightarrow a) \Rightarrow a) \Rightarrow a) \Rightarrow a </annotation></semantics></math>.</p> </li> </ol> <p></p> </div> <div class='proof'> <h6>Proof</h6> <p>Each of these is a short exercise using the universal property <a class="maruku-eqref" href="#eq:UniversalProperty">(1)</a> and modus ponens <a class="maruku-eqref" href="#eq:ModusPonens">(2)</a>.</p> </div> </p> <p>Most of these facts can be packaged up more abstractly like so:</p> <p> <div class='num_prop' id='Monads'> <h6>Proposition</h6> <p>In any Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math>, for any element <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>∈</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">a \in H</annotation></semantics></math>:</p> <ul> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">a \Rightarrow {-}</annotation></semantics></math> is a <a class="existingWikiWord" href="/nlab/show/monad">monad</a>.</p> </li> <li> <p><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><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">({-} \Rightarrow a) \Rightarrow a</annotation></semantics></math> is a monad.</p> </li> </ul> <p></p> </div> <div class='proof'> <h6>Proof</h6> <p>A monad in a poset (or a <a class="existingWikiWord" href="/nlab/show/preorder">preorder</a>, aka <a class="existingWikiWord" href="/nlab/show/%280%2C1%29-category">(0,1)-category</a>) like <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math> is just a monotone, increasing, idempotent function.</p> <p>From Proposition <a class="maruku-ref" href="#BasicProperties"></a> it is immediate that this describes both <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">a \Rightarrow {-}</annotation></semantics></math> and <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><mo>⇒</mo><mi>a</mi><mo stretchy="false">)</mo><mo>⇒</mo><mi>a</mi></mrow><annotation encoding="application/x-tex">({-} \Rightarrow a) \Rightarrow a</annotation></semantics></math>.</p> </div> </p> <h3 id="negation">Negation</h3> <p>In any Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math>, we may define a <a class="existingWikiWord" href="/nlab/show/negation">negation</a> operator:</p> <p> <div class='num_defn' id='Negation'> <h6>Definition</h6> <p>The <strong>negation</strong> operator <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo lspace="verythinmathspace">:</mo><msup><mi>H</mi> <mi>op</mi></msup><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">\neg\colon H^{op} \to H</annotation></semantics></math> is <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mi>x</mi><mo>=</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mn>0</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\neg x = (x \Rightarrow 0)</annotation></semantics></math>, where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math> is the bottom element of the lattice.</p> </div> </p> <p> <div class='num_cor' id='DoubleNegationMonad'> <h6>Corollary</h6> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>H</mi><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">\neg\neg\colon H \to H</annotation></semantics></math> is a <a class="existingWikiWord" href="/nlab/show/monad">monad</a>.</p> </div> <div class='proof'> <h6>Proof</h6> <p>Immediate from <a class="maruku-ref" href="#Monads"></a>.</p> </div> </p> <p>We collect some further frequently-useful facts:</p> <p> <div class='num_prop' id='NegationFacts'> <h6>Proposition</h6> <p>In any Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math>, we have the following for all <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>∈</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">x, y \in H</annotation></semantics></math>:</p> <ol> <li> <p>Negation is antimonotone: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mi>y</mi><mo>≤</mo><mo>¬</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">\neg y \leq \neg x</annotation></semantics></math> if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>≤</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">x \leq y</annotation></semantics></math>.</p> </li> <li> <p>Currying: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\neg (x \wedge y) = (x \Rightarrow \neg y)</annotation></semantics></math>.</p> </li> <li> <p>Triple negation is just negation: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo>=</mo><mo>¬</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">\neg \neg \neg x = \neg x</annotation></semantics></math>.</p> </li> <li> <p>Proof by contradiction: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>≤</mo><mo>¬</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">x \leq \neg y</annotation></semantics></math> just if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mi>y</mi><mo>≤</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x \wedge y \leq 0</annotation></semantics></math>.</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/De+Morgan%27s+law">De Morgan's law</a> for negation over disjunction:</p> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∨</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mo>¬</mo><mi>x</mi><mo>∧</mo><mo>¬</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">\neg (x \vee y) = \neg x \wedge \neg y</annotation></semantics></math>.</p> </li> <li> <p>One-way De Morgan’s law for negation over conjunction: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mi>x</mi><mo>∨</mo><mo>¬</mo><mi>y</mi><mo>≤</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\neg x \vee \neg y \leq \neg (x \wedge y)</annotation></semantics></math>.</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mo>¬</mo><mi>x</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x \wedge \neg x = 0</annotation></semantics></math></p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∨</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\neg \neg (x \vee \neg x) = 1</annotation></semantics></math> (equivalently, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∨</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\neg (x \vee \neg x) = 0</annotation></semantics></math>)</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mi>x</mi><mo>∨</mo><mi>y</mi><mo>≤</mo><mi>x</mi><mo>⇒</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">\neg x \vee y \leq x \Rightarrow y</annotation></semantics></math></p> </li> <li><div class="maruku-equation" id="eq:NegIfEq"><span class="maruku-eq-number">(3)</span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo>∧</mo><mo>¬</mo><mi>y</mi></mrow><annotation encoding="application/x-tex"> \neg (x \Rightarrow y) = \neg\neg x \wedge \neg y </annotation></semantics></math></div></li> </ol> <p></p> </div> <div class='proof'> <h6>Proof</h6> <p>Each of these is a short <a class="existingWikiWord" href="/nlab/show/exercise">exercise</a> using the universal property <a class="maruku-eqref" href="#eq:UniversalProperty">(1)</a>, Proposition <a class="maruku-ref" href="#BasicProperties"></a>, and the preceding properties in the list.</p> </div> </p> <p>Several of the facts in <a class="maruku-ref" href="#NegationFacts"></a> are weakenings of familiar propositional identities from <a class="existingWikiWord" href="/nlab/show/classical+logic">classical logic</a>:</p> <ul> <li> <p>A Heyting algebra where the remaining <a class="existingWikiWord" href="/nlab/show/De+Morgan+law">De Morgan law</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mo>¬</mo><mi>x</mi><mo>∨</mo><mo>¬</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">\neg (x \wedge y) = \neg x \vee \neg y</annotation></semantics></math> holds is precisely a <a class="existingWikiWord" href="/nlab/show/De+Morgan+Heyting+algebra">De Morgan Heyting algebra</a>.</p> </li> <li> <p>A Heyting algebra satisfying any of the following (equivalent) conditions is precisely a <a class="existingWikiWord" href="/nlab/show/Boolean+algebra">Boolean algebra</a>:</p> <ul> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>.</mo><mspace width="thickmathspace"></mspace><mo>¬</mo><mo>¬</mo><mi>x</mi><mo>=</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">\forall x.\; \neg\neg x = x</annotation></semantics></math></p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>.</mo><mspace width="thickmathspace"></mspace><mi>x</mi><mo>∨</mo><mo>¬</mo><mi>x</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\forall x.\; x \vee \neg x = 1</annotation></semantics></math></p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>.</mo><mspace width="thickmathspace"></mspace><mi>x</mi><mo>⇒</mo><mi>y</mi><mo>=</mo><mo>¬</mo><mi>x</mi><mo>∨</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">\forall x, y.\; x \Rightarrow y = \neg x \vee y</annotation></semantics></math></p> </li> </ul> <p>These also imply the De Morgan law.</p> </li> </ul> <h3 id="double_negation">Double negation</h3> <p>The double-negation map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>H</mi><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">\neg\neg \colon H \to H</annotation></semantics></math> on a Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math> is often relevant, particularly in the relationship <a href="#ToBooleanAlgebras">with Boolean algebras</a>. We saw in <a class="maruku-ref" href="#DoubleNegationMonad"></a> that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo></mrow><annotation encoding="application/x-tex">\neg\neg</annotation></semantics></math> is a <a class="existingWikiWord" href="/nlab/show/monad">monad</a>. Further:</p> <p> <div class='num_lemma' id='lem:NegnegMeets'> <h6>Lemma</h6> <p><a class="existingWikiWord" href="/nlab/show/double+negation">Double negation</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">\neg \neg\colon L \to L</annotation></semantics></math> <a class="existingWikiWord" href="/nlab/show/preserved+limit">preserves</a> <a class="existingWikiWord" href="/nlab/show/finite+limit">finite</a> <a class="existingWikiWord" href="/nlab/show/meets">meets</a>.</p> </div> </p> <p> <div class='proof'> <h6>Proof</h6> <p>Nullary meets are trivial: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mn>1</mn><mo>=</mo><mo>¬</mo><mn>0</mn><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\neg \neg 1 = \neg 0 = 1</annotation></semantics></math>. For binary meets, the direction <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo><mo>≤</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\neg \neg (x \wedge y) \leq (\neg \neg x) \wedge (\neg \neg y)</annotation></semantics></math> holds simply because <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo></mrow><annotation encoding="application/x-tex">\neg \neg</annotation></semantics></math> is monotone.</p> <p>In the other direction, we show <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo><mo>≤</mo><mo>¬</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> (\neg \neg x) \wedge (\neg \neg y) \leq \neg \neg (x \wedge y) </annotation></semantics></math> by currying (per <a class="maruku-ref" href="#NegationFacts"></a>) <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\neg (x \wedge y)</annotation></semantics></math> to calculate:</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mrow><mtable displaystyle="true" columnalign="right left right left right left right left right left" columnspacing="0em"><mtr><mtd><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∧</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>∧</mo><mi>y</mi><mo stretchy="false">)</mo></mtd> <mtd><mo>=</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mo>¬</mo><mi>y</mi><mo>⇒</mo><mn>0</mn><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>≤</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mn>0</mn><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>=</mo><mo stretchy="false">(</mo><mo>¬</mo><mi>x</mi><mo>⇒</mo><mn>0</mn><mo stretchy="false">)</mo><mo>∧</mo><mo>¬</mo><mi>x</mi></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>≤</mo><mn>0</mn></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \begin{aligned} (\neg \neg x) \wedge (\neg \neg y) \wedge \neg (x \wedge y) & = (\neg \neg x) \wedge (\neg y \Rightarrow 0) \wedge (x \Rightarrow \neg y) \\ & \leq (\neg \neg x) \wedge (x \Rightarrow 0) \\ & = (\neg x \Rightarrow 0) \wedge \neg x \\ & \leq 0 \end{aligned} </annotation></semantics></math></div> <p>where the two inequalities follow from composition (Proposition <a class="maruku-ref" href="#BasicProperties"></a>) and modus ponens <a class="maruku-eqref" href="#eq:ModusPonens">(2)</a>.</p> </div> </p> <p>The following Lemma <a class="maruku-ref" href="#lem:NegnegImplication"></a> is important for the <a class="existingWikiWord" href="/nlab/show/double+negation+translation">double negation translation</a>.</p> <p> <div class='num_lemma' id='lem:NegnegImplication'> <h6>Lemma</h6> <p><a class="existingWikiWord" href="/nlab/show/double+negation">Double negation</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">\neg \neg\colon L \to L</annotation></semantics></math> preserves <a class="existingWikiWord" href="/nlab/show/implication">implication</a>: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>a</mi><mo>⇒</mo><mo>¬</mo><mo>¬</mo><mi>b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> \neg\neg( a \Rightarrow b ) = (\neg\neg a \Rightarrow \neg\neg b) </annotation></semantics></math>.</p> </div> <div class='proof'> <h6>Proof</h6> <p>Applying <a class="maruku-eqref" href="#eq:NegIfEq">(3)</a> and currying (by <a class="maruku-ref" href="#NegationFacts"></a>), we have</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo><mo>=</mo><mo>¬</mo><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>a</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mo>¬</mo><mi>b</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>a</mi><mo>⇒</mo><mo stretchy="false">(</mo><mo>¬</mo><mi>b</mi><mo>⇒</mo><mn>0</mn><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>a</mi><mo>⇒</mo><mo>¬</mo><mo>¬</mo><mi>b</mi><mo stretchy="false">)</mo><mspace width="thickmathspace"></mspace><mo>.</mo></mrow><annotation encoding="application/x-tex"> \neg\neg (a \Rightarrow b) = \neg ((\neg\neg a) \wedge (\neg b)) = (\neg\neg a \Rightarrow (\neg b \Rightarrow 0)) = (\neg \neg a \Rightarrow \neg \neg b) \; . </annotation></semantics></math></div> <p></p> </div> </p> <h2 id="relation_to_other_concepts">Relation to other concepts</h2> <h3 id="to_toposes">To toposes</h3> <p>An <a class="existingWikiWord" href="/nlab/show/elementary+topos">elementary topos</a> is a <a class="existingWikiWord" href="/nlab/show/vertical+categorification">vertical categorification</a> of a Heyting algebra: the notion of Heyting algebra is essentially equivalent to that of <a class="existingWikiWord" href="/nlab/show/%280%2C1%29-topos">(0,1)-topos</a>. Note that a <a class="existingWikiWord" href="/nlab/show/Grothendieck+topos">Grothendieck</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0,1)</annotation></semantics></math>-topos is a <a class="existingWikiWord" href="/nlab/show/frame">frame</a> or <a class="existingWikiWord" href="/nlab/show/locale">locale</a>.</p> <p>In a <a class="existingWikiWord" href="/nlab/show/Heyting+category">Heyting category</a>, every <a class="existingWikiWord" href="/nlab/show/subobject+poset">subobject poset</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Sub</mi><mo stretchy="false">(</mo><mi>A</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Sub(A)</annotation></semantics></math> is a Heyting algebra. In particular, this holds for every <a class="existingWikiWord" href="/nlab/show/topos">topos</a>. Furthermore, in a topos, the <a class="existingWikiWord" href="/nlab/show/power+object">power object</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>𝒫</mi><mo stretchy="false">(</mo><mi>A</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\mathcal{P}(A)</annotation></semantics></math> is an <a class="existingWikiWord" href="/nlab/show/internalisation">internal</a> Heyting algebra that corresponds to the external Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Sub</mi><mo stretchy="false">(</mo><mi>A</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Sub(A)</annotation></semantics></math>. In a <a class="existingWikiWord" href="/nlab/show/boolean+topos">boolean topos</a>, the internal Heyting algebras are all internal <a class="existingWikiWord" href="/nlab/show/boolean+algebras">boolean algebras</a>. In general, however, the <a class="existingWikiWord" href="/nlab/show/internal+logic">internal logic</a> of a topos (or other Heyting category) is intuitionistic.</p> <p>The proof of Lemma <a class="maruku-ref" href="#lem:NegnegMeets"></a> can be made purely equational, and is therefore internally valid in any category with products. Applied to the internal Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi><mo>=</mo><mi>Ω</mi></mrow><annotation encoding="application/x-tex">L = \Omega</annotation></semantics></math> of a <a class="existingWikiWord" href="/nlab/show/topos">topos</a>, that is the <a class="existingWikiWord" href="/nlab/show/subobject+classifier">subobject classifier</a>, this lemma says exactly that the double negation operator <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>Ω</mi><mo>→</mo><mi>Ω</mi></mrow><annotation encoding="application/x-tex">\neg \neg\colon \Omega \to \Omega</annotation></semantics></math> defines a <a class="existingWikiWord" href="/nlab/show/Lawvere%E2%80%93Tierney+topology">Lawvere–Tierney topology</a>. Similarly, we get the <a class="existingWikiWord" href="/nlab/show/double+negation+sublocale">double negation sublocale</a> of any <a class="existingWikiWord" href="/nlab/show/locale">locale</a>.</p> <h3 id="to_topology">To topology</h3> <p>One of the chief sources of Heyting algebras is given by <a class="existingWikiWord" href="/nlab/show/topology">topologies</a>. As a poset, the topology of a topological space <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi></mrow><annotation encoding="application/x-tex">X</annotation></semantics></math> is a <a class="existingWikiWord" href="/nlab/show/complete+lattice">complete lattice</a> (it has arbitrary <a class="existingWikiWord" href="/nlab/show/joins">joins</a> and <a class="existingWikiWord" href="/nlab/show/meets">meets</a>, although the infinitary meets are not in general given by <a class="existingWikiWord" href="/nlab/show/intersection">intersection</a>), and the implication operator is given by</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>U</mi><mo>⇒</mo><mi>V</mi><mo stretchy="false">)</mo><mo>=</mo><mi>int</mi><mo stretchy="false">(</mo><msup><mi>U</mi> <mi>c</mi></msup><mo>∨</mo><mi>V</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(U \Rightarrow V) = int(U^c \vee V)</annotation></semantics></math></div> <p>where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi><mo>,</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">U, V</annotation></semantics></math> are open sets, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>U</mi> <mi>c</mi></msup></mrow><annotation encoding="application/x-tex">U^c</annotation></semantics></math> is the set-theoretic complement of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math>, and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>int</mi><mo stretchy="false">(</mo><mi>S</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">int(S)</annotation></semantics></math> denotes the interior of a subset <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>S</mi><mo>⊆</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">S \subseteq X</annotation></semantics></math>.</p> <p>Somewhat more generally, a <a class="existingWikiWord" href="/nlab/show/frame">frame</a> (a <a class="existingWikiWord" href="/nlab/show/sup-lattice">sup-lattice</a> in which finite meets distribute over arbitrary sups) also carries a Heyting algebra structure. In a frame, we may define</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mi>u</mi><mo>⇒</mo><mi>v</mi><mo stretchy="false">)</mo><mo>=</mo><munder><mo lspace="thinmathspace" rspace="thinmathspace">⋁</mo> <mrow><mi>x</mi><mo>∧</mo><mi>u</mi><mo>≤</mo><mi>v</mi></mrow></munder><mi>x</mi></mrow><annotation encoding="application/x-tex">(u \Rightarrow v) = \bigvee_{x \wedge u \leq v} x</annotation></semantics></math></div> <p>and the distributivity property guarantees that the universal property <a class="maruku-eqref" href="#eq:UniversalProperty">(1)</a> holds. (The detailed proof is a “baby” application of an <a class="existingWikiWord" href="/nlab/show/adjoint+functor+theorem">adjoint functor theorem</a>.)</p> <p>Thus frames are extensionally the same thing as <em><a class="existingWikiWord" href="/nlab/show/complete+lattice">complete</a> Heyting algebras</em>. However, <em>intensionally</em> they are quite different; that is, a morphism of frames is not usually a morphism of complete Heyting algebras: they do not preserve the implication operator.</p> <p>A <a class="existingWikiWord" href="/nlab/show/locale">locale</a> is the same thing as a frame, but again the morphisms are different; they are reversed.</p> <p>Topologies that are <a class="existingWikiWord" href="/nlab/show/Boolean+algebras">Boolean algebras</a> are the exception rather than the rule; basic examples include topologies of <a class="existingWikiWord" href="/nlab/show/Stone+spaces">Stone spaces</a>; see <a class="existingWikiWord" href="/nlab/show/Stone+duality">Stone duality</a>. Another example is the topology of a <a class="existingWikiWord" href="/nlab/show/discrete+space">discrete space</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi></mrow><annotation encoding="application/x-tex">X</annotation></semantics></math>.</p> <h2 id="ToBooleanAlgebras">Adjunctions with Boolean algebras</h2> <p>There are several ways of passing back and forth between Boolean algebras and Heyting algebras, having to do with the <a class="existingWikiWord" href="/nlab/show/double+negation">double negation</a> operator. By <a class="maruku-ref" href="#DoubleNegationMonad"></a>, double negation <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">\neg \neg\colon L \to L</annotation></semantics></math> is a <a class="existingWikiWord" href="/nlab/show/monad">monad</a>. Further, by <a class="maruku-ref" href="#lem:NegnegMeets"></a>, it <a class="existingWikiWord" href="/nlab/show/preserved+limit">preserves</a> <a class="existingWikiWord" href="/nlab/show/finite+limit">finite</a> <a class="existingWikiWord" href="/nlab/show/meets">meets</a>.</p> <p>Now let <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L_{\neg\neg}</annotation></semantics></math> denote the poset of <em><a class="existingWikiWord" href="/nlab/show/regular+element">regular element</a>s</em> of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math>, that is, those elements <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math> such that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mi>x</mi><mo>=</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">\neg\neg x = x</annotation></semantics></math>. (When <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math> is the topology of a space, an open set <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math> is <a class="existingWikiWord" href="/nlab/show/regular+open+subspace">regular</a> if and only if it is the interior of its closure, that is if it is a regular element of the Heyting algebra of open sets described above.) With the help of Lemma <a class="maruku-ref" href="#lem:NegnegMeets"></a>, we may prove</p> <p> <div class='num_theorem' id='thm:NegnegAdjoint'> <h6>Theorem</h6> <p>The poset <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L_{\neg\neg}</annotation></semantics></math> is a Boolean algebra. Moreover, the assignment <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi><mo>↦</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L \mapsto L_{\neg\neg}</annotation></semantics></math> is the object part of a functor</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo lspace="verythinmathspace">:</mo><mi>Heyt</mi><mo>→</mo><mi>Bool</mi></mrow><annotation encoding="application/x-tex">F\colon Heyt \to Bool</annotation></semantics></math></div> <p>called <em>Booleanization</em>, which is left adjoint to the full and faithful inclusion</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>i</mi><mo lspace="verythinmathspace">:</mo><mi>Bool</mi><mo>↪</mo><mi>Heyt</mi><mo>.</mo></mrow><annotation encoding="application/x-tex">i\colon Bool \hookrightarrow Heyt.</annotation></semantics></math></div> <p>The unit of the <a class="existingWikiWord" href="/nlab/show/adjoint+functor">adjunction</a>, applied to a Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math>, is the map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi><mo>→</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L \to L_{\neg\neg}</annotation></semantics></math> which maps each element <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math> to its <em><a class="existingWikiWord" href="/nlab/show/regular+element">regularization</a></em> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">\neg\neg x</annotation></semantics></math>.</p> </div> </p> <p> <div class='proof'> <h6>Proof</h6> <p>To avoid confusion from two different maps called <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo></mrow><annotation encoding="application/x-tex">\neg\neg</annotation></semantics></math> that differ only in their codomain, write <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>M</mi><mo>:</mo><mi>L</mi><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">M: L \rightarrow L</annotation></semantics></math> for the monad and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi><mo>:</mo><mi>L</mi><mo>→</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">U: L \rightarrow L_{\neg\neg}</annotation></semantics></math> for the left adjoint. Write <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>ι</mi><mo>:</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">\iota: L_{\neg\neg} \rightarrow L</annotation></semantics></math> for the right adjoint, so that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>M</mi><mo>=</mo><mi>ι</mi><mo>∘</mo><mi>U</mi></mrow><annotation encoding="application/x-tex">M = \iota \circ U</annotation></semantics></math>.</p> <p>We first show that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L_{\neg\neg}</annotation></semantics></math> is a Heyting algebra and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math> is a Heyting-algebra map. Because <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math> is surjective (and monotone), it suffices to show that it preserves the Heyting-algebra operators: finite meets, finite joins, and implication.</p> <p>Because <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>ι</mi></mrow><annotation encoding="application/x-tex">\iota</annotation></semantics></math> is full, it reflects meets. Therefore because by Lemma <a class="maruku-ref" href="#lem:NegnegMeets"></a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>M</mi><mo>=</mo><mi>ι</mi><mo>∘</mo><mi>U</mi></mrow><annotation encoding="application/x-tex">M = \iota \circ U</annotation></semantics></math> preserves finite meets, so too does <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math>, and as a left adjoint it preserves joins.</p> <p>Finally, for <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>∈</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">a, b \in L</annotation></semantics></math>, we show that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>a</mi><mo>⇒</mo><mi>b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\neg\neg (a \Rightarrow b)</annotation></semantics></math>, which by Lemma <a class="maruku-ref" href="#lem:NegnegImplication"></a> is the <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math>-implication <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mi>a</mi><mo>⇒</mo><mo>¬</mo><mo>¬</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">\neg\neg a \Rightarrow \neg\neg b</annotation></semantics></math>, satisfies the universal property <a class="maruku-eqref" href="#eq:UniversalProperty">(1)</a> also in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L_{\neg\neg}</annotation></semantics></math>. For any <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∈</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">x \in L_{\neg\neg}</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>ι</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>≤</mo><mo>¬</mo><mo>¬</mo><mi>a</mi><msub><mo>⇒</mo> <mi>L</mi></msub><mo>¬</mo><mo>¬</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">\iota(x) \leq \neg\neg a \Rightarrow_L \neg\neg b</annotation></semantics></math> just if <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>ι</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><msub><mo>∧</mo> <mi>L</mi></msub><mo>¬</mo><mo>¬</mo><mi>a</mi><mo>≤</mo><mo>¬</mo><mo>¬</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">\iota(x) \wedge_L \neg\neg a \leq \neg\neg b</annotation></semantics></math> by the universal property in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math>; but because <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>ι</mi></mrow><annotation encoding="application/x-tex">\iota</annotation></semantics></math> reflects meets this is equivalent to <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><msub><mo>∧</mo> <mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow></msub><mo>¬</mo><mo>¬</mo><mi>a</mi><mo>≤</mo><mo>¬</mo><mo>¬</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">x \wedge_{L_{\neg\neg}} \neg\neg a \leq \neg\neg b</annotation></semantics></math>, completing the universal property.</p> <p>Now because <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi></mrow><annotation encoding="application/x-tex">U</annotation></semantics></math> preserves implication and (the empty join) <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math>, it preserves negation. Therefore <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo></mrow><annotation encoding="application/x-tex">\neg\neg</annotation></semantics></math> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">L_{\neg\neg}</annotation></semantics></math> is the identity, so the latter is a Boolean algebra.</p> <p>Therefore <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>U</mi><mo>=</mo><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mo>→</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">U = \neg\neg \colon L \to L_{\neg\neg}</annotation></semantics></math> is a Heyting algebra quotient which is the coequalizer of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>1</mn><mo>,</mo><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mover><mo>→</mo><mo>→</mo></mover><mi>L</mi></mrow><annotation encoding="application/x-tex">1, \neg\neg \colon L \stackrel{\to}{\to} L</annotation></semantics></math>. It follows that a Heyting algebra map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi><mo>→</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">L \to B</annotation></semantics></math> to any Boolean algebra <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>, i.e. any Heyting algebra where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo></mrow><annotation encoding="application/x-tex">\neg\neg</annotation></semantics></math> coincide, factors uniquely through this coequalizer, and the induced map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub><mo>→</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">L_{\neg \neg} \to B</annotation></semantics></math> is a Boolean algebra map. In other words, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mo>→</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">\neg\neg \colon L \to L_{\neg\neg}</annotation></semantics></math> is the universal Heyting algebra map to a Boolean algebra, which establishes the adjunction.</p> </div> </p> <p>Thus <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>¬</mo><mo>¬</mo><mo lspace="verythinmathspace">:</mo><mi>L</mi><mo>→</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub></mrow><annotation encoding="application/x-tex">\neg\neg\colon L \to L_{\neg\neg}</annotation></semantics></math> preserves finite joins and finite meets and implication. In the other direction, we have an inclusion <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>i</mi><mo lspace="verythinmathspace">:</mo><msub><mi>L</mi> <mrow><mo>¬</mo><mo>¬</mo></mrow></msub><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">i\colon L_{\neg\neg} \to L</annotation></semantics></math>, and this preserves meets but not joins. It also preserves negations; more generally and perhaps surprisingly, it preserves implications as well.</p> <p>Regular elements are not to be confused with <em><span class="newWikiWord">complemented element<a href="/nlab/new/complemented+element">?</a></span>s</em>, i.e., elements <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math> in a Heyting algebra such that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∨</mo><mo>¬</mo><mi>x</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x \vee \neg x = 1</annotation></semantics></math>, although it is true that every complemented element is regular. An example of a regular element which is not complemented is given by the unit interval <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0, 1)</annotation></semantics></math> as an element of the topology of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>ℝ</mi></mrow><annotation encoding="application/x-tex">\mathbb{R}</annotation></semantics></math>; a complemented element in a Heyting algebra given by a topology is the same as a <a class="existingWikiWord" href="/nlab/show/clopen+subset">clopen subset</a>.</p> <p>Complemented elements furnish another universal relation between Boolean algebras and Heyting algebras: the set of complemented elements in a Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math> is a Boolean algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Comp</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Comp(H)</annotation></semantics></math>, and the inclusion <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Comp</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">)</mo><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">Comp(H) \to H</annotation></semantics></math> is a Heyting algebra map which is universal among Heyting algebra maps <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>B</mi><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">B \to H</annotation></semantics></math> out of Boolean algebras <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>. In other words, we have the following result.</p> <p> <div class='num_theorem' id='thm:CompAdjoint'> <h6>Theorem</h6> <p>The assignment <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi><mo>↦</mo><mi>Comp</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">H \mapsto Comp(H)</annotation></semantics></math> is the object part of a right adjoint to the forgetful functor <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Bool</mi><mo>→</mo><mi>Heyt</mi></mrow><annotation encoding="application/x-tex">Bool \to Heyt</annotation></semantics></math>.</p> </div> </p> <p> <div class='proof'> <h6>Proof</h6> <p>In a Heyting algebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi></mrow><annotation encoding="application/x-tex">H</annotation></semantics></math>, the elements <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math> are clearly complemented. If <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>y</mi></mrow><annotation encoding="application/x-tex">y</annotation></semantics></math> are complemented, then so are <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">x \wedge y</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∨</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">x \vee y</annotation></semantics></math>, and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>⇒</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">x \Rightarrow y</annotation></semantics></math>; we leave meet and join as an <a class="existingWikiWord" href="/nlab/show/exercise">exercise</a> applying <a class="maruku-ref" href="#NegationFacts"></a>, and demonstrate implication (using <a class="maruku-eqref" href="#eq:NegIfEq">(3)</a>):</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mrow><mtable displaystyle="true" columnalign="right left right left right left right left right left" columnspacing="0em"><mtr><mtd><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∨</mo><mo>¬</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo></mtd> <mtd><mo>=</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∨</mo><mo stretchy="false">(</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo>∧</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>=</mo><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∨</mo><mo>¬</mo><mo>¬</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mi>x</mi><mo>⇒</mo><mi>y</mi><mo stretchy="false">)</mo><mo>∨</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>≥</mo><mo stretchy="false">(</mo><mo>¬</mo><mi>x</mi><mo>∨</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∧</mo><mo stretchy="false">(</mo><mi>y</mi><mo>∨</mo><mo>¬</mo><mi>y</mi><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>=</mo><mn>1</mn><mspace width="thickmathspace"></mspace><mo>.</mo></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \begin{aligned} (x \Rightarrow y) \vee \neg(x \Rightarrow y) &= (x \Rightarrow y) \vee (\neg\neg x \wedge \neg y) \\ &= ((x \Rightarrow y) \vee \neg\neg x) \wedge ((x \Rightarrow y) \vee \neg y) \\ &\geq (\neg x \vee x) \wedge (y \vee \neg y) \\ &= 1 \; . \end{aligned} </annotation></semantics></math></div> <p>Thus the complemented elements form a Heyting subalgebra <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Comp</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">)</mo><mo>↪</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">Comp(H) \hookrightarrow H</annotation></semantics></math>. Clearly <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Comp</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Comp(H)</annotation></semantics></math> is a Boolean algebra, and clearly if <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> is Boolean, then any Heyting algebra map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>B</mi><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">B \to H</annotation></semantics></math> factors uniquely through <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Comp</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">)</mo><mo>↪</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">Comp(H) \hookrightarrow H</annotation></semantics></math>. This proves the theorem.</p> </div> </p> <h2 id="examples">Examples</h2> <div class="num_prop"> <h6 id="proposition">Proposition</h6> <p>For <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>𝒯</mi></mrow><annotation encoding="application/x-tex">\mathcal{T}</annotation></semantics></math> a <a class="existingWikiWord" href="/nlab/show/topos">topos</a> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi><mo>∈</mo><mi>𝒯</mi></mrow><annotation encoding="application/x-tex">X \in \mathcal{T}</annotation></semantics></math> any <a class="existingWikiWord" href="/nlab/show/object">object</a>, the poset <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Sub</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Sub(X)</annotation></semantics></math> of <a class="existingWikiWord" href="/nlab/show/subobject">subobject</a>s of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi></mrow><annotation encoding="application/x-tex">X</annotation></semantics></math> is a Heyting algebra.</p> <p>In other words, every topos is a <a class="existingWikiWord" href="/nlab/show/Heyting+category">Heyting category</a>.</p> </div> <p>In particular for <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi><mo>=</mo><mi>Ω</mi></mrow><annotation encoding="application/x-tex">X = \Omega</annotation></semantics></math> the <a class="existingWikiWord" href="/nlab/show/subobject+classifier">subobject classifier</a>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Sub</mi><mo stretchy="false">(</mo><mi>Ω</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Sub(\Omega)</annotation></semantics></math> is a Heyting algebra.</p> <p>In <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>𝒯</mi><mo>=</mo></mrow><annotation encoding="application/x-tex">\mathcal{T} =</annotation></semantics></math> <a class="existingWikiWord" href="/nlab/show/Set">Set</a> for every set <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>S</mi></mrow><annotation encoding="application/x-tex">S</annotation></semantics></math> we have that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Sub</mi><mo stretchy="false">(</mo><mi>S</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">Sub(S)</annotation></semantics></math> is the <a class="existingWikiWord" href="/nlab/show/Boolean+algebra">Boolean algebra</a> of subset of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>S</mi></mrow><annotation encoding="application/x-tex">S</annotation></semantics></math>.</p> <p>More details and examples are spelled out at <a class="existingWikiWord" href="/nlab/show/internal+logic#examples">internal logic#examples</a>.</p> <div class="num_prop"> <h6 id="proposition_2">Proposition</h6> <p>A <a class="existingWikiWord" href="/nlab/show/frame">frame</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>L</mi></mrow><annotation encoding="application/x-tex">L</annotation></semantics></math> is a Heyting algebra.</p> </div> <div class="proof"> <h6 id="proof">Proof</h6> <p>By the <a class="existingWikiWord" href="/nlab/show/adjoint+functor+theorem">adjoint functor theorem</a>, a right adjoint <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>⇒</mo><mo lspace="verythinmathspace" rspace="0em">−</mo></mrow><annotation encoding="application/x-tex">x \Rightarrow -</annotation></semantics></math> to the map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∧</mo><mo lspace="verythinmathspace" rspace="0em">−</mo><mo>:</mo><mi>L</mi><mo>→</mo><mi>L</mi></mrow><annotation encoding="application/x-tex">x \wedge -: L \to L</annotation></semantics></math> exists since this map preserves arbitrary joins.</p> </div> <h2 id="see_also">See also</h2> <ul> <li><a class="existingWikiWord" href="/nlab/show/Heyting+algebra+object">Heyting algebra object</a></li> <li><a class="existingWikiWord" href="/nlab/show/locally+Heyting-algebraic+2-poset">locally Heyting-algebraic 2-poset</a></li> <li><a class="existingWikiWord" href="/nlab/show/implicative+structure">implicative structure</a></li> </ul> <h2 id="references">References</h2> <p>The original reference:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Arend+Heyting">Arend Heyting</a>, <em>Die formalen Regeln der intuitionistischen Logik. I, II, III.</em> Sitzungsberichte der Preußischen Akademie der Wissenschaften, Physikalisch-Mathematische Klasse (1930) 42-56, 57-71, 158-169</p> <p>abridged reprint in:</p> <p>Karel Berka, Lothar Kreiser (eds.), <em>Logik-Texte</em>, De Gruyter (1986) 188-192 [<a href="https://doi.org/10.1515/9783112645826">doi:10.1515/9783112645826</a>]</p> </li> </ul> <p>A quick introduction can be found in §1.2 of</p> <ul> <li><a class="existingWikiWord" href="/nlab/show/Francis+Borceux">Francis Borceux</a>, <p><em><a class="existingWikiWord" href="/nlab/show/Handbook+of+Categorical+Algebra">Handbook of Categorical Algebra</a> 3. Categories of sheaves</em>, Cambridge University Press 1994. ISBN: 0521441803.</p> </li> </ul> </body></html> </div> <div class="revisedby"> <p> Last revised on May 13, 2024 at 08:33:19. See the <a href="/nlab/history/Heyting+algebra" 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/Heyting+algebra" accesskey="E" class="navlink" id="edit" rel="nofollow">Edit</a><a href="https://nforum.ncatlab.org/discussion/2281/#Item_39">Discuss</a><span class="backintime"><a href="/nlab/revision/Heyting+algebra/60" accesskey="B" class="navlinkbackintime" id="to_previous_revision" rel="nofollow">Previous revision</a></span><a href="/nlab/show/diff/Heyting+algebra" accesskey="C" class="navlink" id="see_changes" rel="nofollow">Changes from previous revision</a><a href="/nlab/history/Heyting+algebra" accesskey="S" class="navlink" id="history" rel="nofollow">History (60 revisions)</a> <a href="/nlab/show/Heyting+algebra/cite" style="color: black">Cite</a> <a href="/nlab/print/Heyting+algebra" accesskey="p" id="view_print" rel="nofollow">Print</a> <a href="/nlab/source/Heyting+algebra" id="view_source" rel="nofollow">Source</a> </div> </div> <!-- Content --> </div> <!-- Container --> </body> </html>