CINXE.COM
functor 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> functor 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> functor </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/332/#Item_221" 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="category_theory">Category theory</h4> <div class="hide"><div> <p><strong><a class="existingWikiWord" href="/nlab/show/category+theory">category theory</a></strong></p> <h2 id="sidebar_concepts">Concepts</h2> <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> <li> <p><a class="existingWikiWord" href="/nlab/show/natural+transformation">natural transformation</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Cat">Cat</a></p> </li> </ul> <h2 id="sidebar_universal_constructions">Universal constructions</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/universal+construction">universal construction</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/representable+functor">representable functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/adjoint+functor">adjoint functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/limit">limit</a>/<a class="existingWikiWord" href="/nlab/show/colimit">colimit</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/weighted+limit">weighted limit</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/end">end</a>/<a class="existingWikiWord" href="/nlab/show/coend">coend</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Kan+extension">Kan extension</a></p> </li> </ul> </li> </ul> <h2 id="sidebar_theorems">Theorems</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Yoneda+lemma">Yoneda lemma</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Isbell+duality">Isbell duality</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Grothendieck+construction">Grothendieck construction</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/adjoint+functor+theorem">adjoint functor theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/monadicity+theorem">monadicity theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/adjoint+lifting+theorem">adjoint lifting theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Tannaka+duality">Tannaka duality</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Gabriel-Ulmer+duality">Gabriel-Ulmer duality</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/small+object+argument">small object argument</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Freyd-Mitchell+embedding+theorem">Freyd-Mitchell embedding theorem</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/relation+between+type+theory+and+category+theory">relation between type theory and category theory</a></p> </li> </ul> <h2 id="sidebar_extensions">Extensions</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/sheaf+and+topos+theory">sheaf and topos theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/enriched+category+theory">enriched category theory</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/higher+category+theory">higher category theory</a></p> </li> </ul> <h2 id="sidebar_applications">Applications</h2> <ul> <li><a class="existingWikiWord" href="/nlab/show/applications+of+%28higher%29+category+theory">applications of (higher) category theory</a></li> </ul> <div> <p> <a href="/nlab/edit/category+theory+-+contents">Edit this sidebar</a> </p> </div></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> <ul> <li><a href='#external_definition'>External definition</a></li> <li><a href='#InternalDefinition'>Internal definition</a></li> <li><a href='#enriched_definition'>Enriched definition</a></li> <li><a href='#profunctors'>Profunctors</a></li> <li><a href='#higher_categorical_functors'>Higher categorical functors</a></li> <li><a href='#in_homotopy_type_theory'>In homotopy type theory</a></li> </ul> <li><a href='#properties'>Properties</a></li> <ul> <li><a href='#composition_of_functors'>Composition of functors</a></li> <li><a href='#lemma_929_in_hott_book'>Lemma 9.2.9 in HoTT book</a></li> <li><a href='#lemma_9210_in_hott_book'>Lemma 9.2.10 in HoTT book</a></li> </ul> <li><a href='#types_of_functors'>Types of functors</a></li> <li><a href='#examples'>Examples</a></li> <ul> <li><a href='#morphisms_of_monoids_and_groups'>Morphisms of monoids and groups</a></li> <li><a href='#representations'>Representations</a></li> <li><a href='#linear_maps'>Linear Maps</a></li> <ul> <li><a href='#left_inverses'>Left Inverses</a></li> <li><a href='#right_inverses'>Right Inverses</a></li> </ul> <li><a href='#presheaves'>Presheaves</a></li> <li><a href='#OnGeneralizedElements'>Functors and generalized elements</a></li> </ul> <li><a href='#related_concepts'>Related concepts</a></li> <li><a href='#references'>References</a></li> </ul> </div> <h2 id="idea">Idea</h2> <ul> <li> <p>A <em>functor</em> is a <a class="existingWikiWord" href="/nlab/show/homomorphism">homomorphism</a> of <a class="existingWikiWord" href="/nlab/show/categories">categories</a>.</p> </li> <li> <p>A functor between <a class="existingWikiWord" href="/nlab/show/small+categories">small categories</a> is a <a class="existingWikiWord" href="/nlab/show/homomorphism">homomorphism</a> of the <a class="existingWikiWord" href="/nlab/show/underlying">underlying</a> <a class="existingWikiWord" href="/nlab/show/graphs">graphs</a> that respects the <a class="existingWikiWord" href="/nlab/show/composition">composition</a> of <a class="existingWikiWord" href="/nlab/show/edges">edges</a>.</p> </li> </ul> <p>So, for <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> two <a class="existingWikiWord" href="/nlab/show/categories">categories</a>, a functor <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo lspace="verythinmathspace">:</mo><mi>C</mi><mo>→</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F \colon C \to D</annotation></semantics></math> consists of</p> <ol> <li> <p>a component-<a class="existingWikiWord" href="/nlab/show/function">function</a> of the <a class="existingWikiWord" href="/nlab/show/classes">classes</a> of <a class="existingWikiWord" href="/nlab/show/objects">objects</a>;</p> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>0</mn></msub><mo lspace="verythinmathspace">:</mo><mi>Obj</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo><mo>→</mo><mi>Obj</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F_0 \colon Obj(C) \to Obj(D)</annotation></semantics></math></p> </li> </ol> <ul> <li> <p>a component-<a class="existingWikiWord" href="/nlab/show/function">function</a> of <a class="existingWikiWord" href="/nlab/show/sets">sets</a> of <a class="existingWikiWord" href="/nlab/show/morphisms">morphisms</a></p> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>1</mn></msub><mo lspace="verythinmathspace">:</mo><mi>Mor</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo><mo>→</mo><mi>Mor</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F_1 \colon Mor(C) \to Mor(D)</annotation></semantics></math></p> <p>or equivalently:</p> <p>for each <a class="existingWikiWord" href="/nlab/show/pair">pair</a> <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>Obj</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">x,y \in Obj(C)</annotation></semantics></math> of <a class="existingWikiWord" href="/nlab/show/objects">objects</a>, a component-<a class="existingWikiWord" href="/nlab/show/function">function</a></p> <div class="maruku-equation" id="eq:ComponentFunctionOnHomSets"><span class="maruku-eq-number">(1)</span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow></msub><mspace width="thickmathspace"></mspace><mo lspace="verythinmathspace">:</mo><mspace width="thickmathspace"></mspace><mi>C</mi><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo stretchy="false">)</mo><mover><mo>→</mo><mrow><mspace width="thickmathspace"></mspace><mspace width="thickmathspace"></mspace></mrow></mover><mi>D</mi><mo stretchy="false">(</mo><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>,</mo><mi>F</mi><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> F_{x,y} \;\colon\; C(x,y) \xrightarrow{\;\;} D(F(x), F(y)) </annotation></semantics></math></div> <p>between <a class="existingWikiWord" href="/nlab/show/hom-sets">hom-sets</a>;</p> </li> </ul> <p>such that:</p> <ul> <li> <p>it respects <a class="existingWikiWord" href="/nlab/show/source">source</a> and <a class="existingWikiWord" href="/nlab/show/target">target</a> of <a class="existingWikiWord" href="/nlab/show/morphisms">morphisms</a>: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>1</mn></msub></mrow><annotation encoding="application/x-tex">F_1</annotation></semantics></math> coincides with <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>0</mn></msub></mrow><annotation encoding="application/x-tex">F_0</annotation></semantics></math> on source and target objects;</p> </li> <li> <p>it respects <a class="existingWikiWord" href="/nlab/show/identity+morphisms">identity morphisms</a>: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><msub><mi>id</mi> <mi>X</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mi>id</mi> <mrow><mi>F</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo></mrow></msub></mrow><annotation encoding="application/x-tex">F(id_X) = id_{F(X)}</annotation></semantics></math>;</p> </li> <li> <p>it respects <a class="existingWikiWord" href="/nlab/show/composition">composition</a>: the image of the composite of two morphisms under <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> is the composite of their images.</p> </li> </ul> <p>These last two properties are the decisive ones of a functor; they are called the <strong>functoriality conditions</strong>. These are a direct generalization of the notion of <a class="existingWikiWord" href="/nlab/show/homomorphism">homomorphism</a> (of <a class="existingWikiWord" href="/nlab/show/monoids">monoids</a>, <a class="existingWikiWord" href="/nlab/show/groups">groups</a>, <a class="existingWikiWord" href="/nlab/show/algebras">algebras</a>, etc.) to the case that there are more objects. As a slogan:</p> <p>The notion of functor is a <a class="existingWikiWord" href="/nlab/show/horizontal+categorification">horizontal categorification</a> of that of <a class="existingWikiWord" href="/nlab/show/homomorphism">homomorphism</a>.</p> <h2 id="definition">Definition</h2> <h3 id="external_definition">External definition</h3> <p>A <strong>functor</strong> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> from a <a class="existingWikiWord" href="/nlab/show/category">category</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> to a category <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> is a map sending each <a class="existingWikiWord" href="/nlab/show/object">object</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">x \in C</annotation></semantics></math> to an object <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>∈</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F(x) \in D</annotation></semantics></math> and each <a class="existingWikiWord" href="/nlab/show/morphism">morphism</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>f</mi><mo>:</mo><mi>x</mi><mo>→</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">f : x \to y</annotation></semantics></math> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> to morphism <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo><mo>:</mo><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>→</mo><mi>F</mi><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F(f) : F(x) \to F(y)</annotation></semantics></math> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math>, such that</p> <ul> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> preserves <a class="existingWikiWord" href="/nlab/show/composition">composition</a>: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo>∘</mo><mi>f</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo stretchy="false">)</mo><mo>∘</mo><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F(g\circ f) = F(g)\circ F(f)</annotation></semantics></math> whenever the left-hand side is well-defined,</p> </li> <li> <p><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> preserves <a class="existingWikiWord" href="/nlab/show/identity+morphisms">identity morphisms</a>: for each object <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">x \in C</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>x</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mn>1</mn> <mrow><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></msub></mrow><annotation encoding="application/x-tex">F(1_x) = 1_{F(x)}</annotation></semantics></math>.</p> </li> </ul> <p>Or equivalently, since compositions <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>g</mi><mi>f</mi><mo>=</mo><mi>g</mi><mo>∘</mo><mi>f</mi></mrow><annotation encoding="application/x-tex">g f = g\circ f</annotation></semantics></math> (commuting triangles) and identities <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mn>1</mn> <mi>x</mi></msub></mrow><annotation encoding="application/x-tex">1_x</annotation></semantics></math> (commuting loops) are both simple commuting diagrams, we can combine the above conditions to the single statement</p> <ul> <li><math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> preserves <a class="existingWikiWord" href="/nlab/show/commuting+diagrams">commuting diagrams</a>.</li> </ul> <p>Given <a class="existingWikiWord" href="/nlab/show/morphisms">morphisms</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>f</mi><mo lspace="verythinmathspace">:</mo><mi>X</mi><mo>→</mo><mi>Y</mi></mrow><annotation encoding="application/x-tex">f \colon X\to Y</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>g</mi><mo lspace="verythinmathspace">:</mo><mi>Y</mi><mo>→</mo><mi>Z</mi></mrow><annotation encoding="application/x-tex">g \colon Y\to Z</annotation></semantics></math>, and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>h</mi><mo lspace="verythinmathspace">:</mo><mi>X</mi><mo>→</mo><mi>Z</mi></mrow><annotation encoding="application/x-tex">h \colon X\to Z</annotation></semantics></math>, declaring the triangle commutes amounts to declaring</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>h</mi><mo>=</mo><mi>g</mi><mo>∘</mo><mi>f</mi><mo>.</mo></mrow><annotation encoding="application/x-tex">h = g\circ f.</annotation></semantics></math></div> <p>In this case, for <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>C</mi><mo>→</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F:C\to D</annotation></semantics></math> to preserve the commutative triangle means</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 stretchy="false">(</mo><mi>h</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo stretchy="false">)</mo><mo>∘</mo><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F(h) = F(g)\circ F(f)</annotation></semantics></math></div> <p>as depicted below</p> <p><img src="http://ncatlab.org/nlab/files/functor.jpg" width="300" /></p> <p>Preserving commuting triangles means <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> preserves compositions.</p> <p>Given morphisms <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>f</mi><mo>:</mo><mi>X</mi><mo>→</mo><mi>Y</mi></mrow><annotation encoding="application/x-tex">f:X\to Y</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>g</mi><mo>:</mo><mi>Y</mi><mo>→</mo><mi>Z</mi></mrow><annotation encoding="application/x-tex">g:Y\to Z</annotation></semantics></math>, and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>h</mi><mo>:</mo><mi>Z</mi><mo>→</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">h:Z\to X</annotation></semantics></math>, declaring the loop commutes amounts to declaring</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mn>1</mn> <mi>X</mi></msub><mo>=</mo><mi>h</mi><mo>∘</mo><mi>g</mi><mo>∘</mo><mi>f</mi><mo>.</mo></mrow><annotation encoding="application/x-tex">1_X = h\circ g\circ f.</annotation></semantics></math></div> <p>In this case, for <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>C</mi><mo>→</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F:C\to D</annotation></semantics></math> to preserve the commutative loop means</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 stretchy="false">(</mo><msub><mn>1</mn> <mi>X</mi></msub><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mo stretchy="false">(</mo><mi>h</mi><mo stretchy="false">)</mo><mo>∘</mo><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo stretchy="false">)</mo><mo>∘</mo><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F(1_X) = F(h)\circ F(g)\circ F(f)</annotation></semantics></math></div> <p>as depicted below</p> <p><img src="http://ncatlab.org/nlab/files/commuteloop.jpg" width="300" /></p> <p>However, it means more than that. Since any commutative loop is equal to the identity morphism, we must also have</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mn>1</mn> <mrow><mi>F</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo></mrow></msub><mo>=</mo><mi>F</mi><mo stretchy="false">(</mo><mi>h</mi><mo stretchy="false">)</mo><mo>∘</mo><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo stretchy="false">)</mo><mo>∘</mo><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">1_{F(X)} = F(h)\circ F(g)\circ F(f)</annotation></semantics></math></div> <p>implying</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 stretchy="false">(</mo><msub><mn>1</mn> <mi>X</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mn>1</mn> <mrow><mi>F</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo></mrow></msub><mo>.</mo></mrow><annotation encoding="application/x-tex">F(1_X) = 1_{F(X)}.</annotation></semantics></math></div> <p>Preserving commuting loops means <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> preserves identity morphisms.</p> <p>Another equivalent way to say this is that a functor <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>C</mi><mo>→</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F : C \to D</annotation></semantics></math> is precisely a morphism of <a class="existingWikiWord" href="/nlab/show/simplicial+sets">simplicial sets</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><mo stretchy="false">)</mo><mo>:</mo><mi>N</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo><mo>→</mo><mi>N</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(F) : N(C) \to N(D)</annotation></semantics></math> between the <a class="existingWikiWord" href="/nlab/show/nerves">nerves</a> of these categories</p> <ul> <li> <p>the <a class="existingWikiWord" href="/nlab/show/objects">objects</a> of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> are the 0-cells of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(C)</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(D)</annotation></semantics></math>, so <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><msub><mo stretchy="false">)</mo> <mn>0</mn></msub><mo>:</mo><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><msub><mo stretchy="false">)</mo> <mn>0</mn></msub><mo>→</mo><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><msub><mo stretchy="false">)</mo> <mn>0</mn></msub></mrow><annotation encoding="application/x-tex">N(F)_0 : N(F)_0 \to N(F)_0</annotation></semantics></math> maps objects of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> to objects of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math>;</p> </li> <li> <p>the <a class="existingWikiWord" href="/nlab/show/morphisms">morphisms</a> of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> are the 1-cells of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(C)</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(D)</annotation></semantics></math>, so <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><msub><mo stretchy="false">)</mo> <mn>1</mn></msub><mo>:</mo><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><msub><mo stretchy="false">)</mo> <mn>1</mn></msub><mo>→</mo><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><msub><mo stretchy="false">)</mo> <mn>1</mn></msub></mrow><annotation encoding="application/x-tex">N(F)_1 : N(F)_1 \to N(F)_1</annotation></semantics></math> maps morphisms of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> to objects of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math>;</p> </li> <li> <p>the identity morphisms of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> are the degenerate 1-cells of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(C)</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(D)</annotation></semantics></math>, so the fact that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(F)</annotation></semantics></math> respects degeneracy maps means that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math> respects identities;</p> </li> <li> <p>the commuting triangles of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> are the 2-cells of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>C</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(C)</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>D</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(D)</annotation></semantics></math>, so the fact that <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>N</mi><mo stretchy="false">(</mo><mi>F</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">N(F)</annotation></semantics></math> maps 2-cells to 2-cells means that it respects commuting triangles, hence that it respects composition.</p> </li> </ul> <p>See <a class="existingWikiWord" href="/nlab/show/nerve">nerve</a> for more details on this.</p> <p>The functors between two categories <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> form themselves a category, the <a class="existingWikiWord" href="/nlab/show/functor+category">functor category</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">[</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false">]</mo></mrow><annotation encoding="application/x-tex">[C,D]</annotation></semantics></math>, whose morphisms are <a class="existingWikiWord" href="/nlab/show/natural+transformations">natural transformations</a>. Equipped with these functor categories as <a class="existingWikiWord" href="/nlab/show/hom-objects">hom-objects</a>, we have a <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mn>2</mn></mrow><annotation encoding="application/x-tex">2</annotation></semantics></math>-<a class="existingWikiWord" href="/nlab/show/2-category">category</a> <a class="existingWikiWord" href="/nlab/show/Cat">Cat</a> of categories, functors and natural transformations. In other words, functors are <a class="existingWikiWord" href="/nlab/show/morphisms">morphisms</a> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Cat</mi></mrow><annotation encoding="application/x-tex">Cat</annotation></semantics></math>.</p> <h3 id="InternalDefinition">Internal definition</h3> <p>If <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math> are <a class="existingWikiWord" href="/nlab/show/internal+categories">internal categories</a> in some ambient category <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math>, then an <strong>internal functor</strong> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>C</mi><mo>→</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F : C \to D</annotation></semantics></math> is</p> <ul> <li> <p>a morphism of objects <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>0</mn></msub><mo>:</mo><msub><mi>C</mi> <mn>0</mn></msub><mo>→</mo><msub><mi>D</mi> <mn>0</mn></msub></mrow><annotation encoding="application/x-tex">F_0 : C_0 \to D_0</annotation></semantics></math> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math>;</p> </li> <li> <p>a morphisms of morphisms <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>1</mn></msub><mo>:</mo><msub><mi>C</mi> <mn>1</mn></msub><mo>→</mo><msub><mi>D</mi> <mn>1</mn></msub></mrow><annotation encoding="application/x-tex">F_1 : C_1 \to D_1</annotation></semantics></math> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math>;</p> </li> <li> <p>such that the following diagrams commute</p> <ul> <li> <p>respect for the source map: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mrow><mtable><mtr><mtd><msub><mi>C</mi> <mn>1</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>1</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>1</mn></msub></mtd></mtr> <mtr><mtd><msup><mo stretchy="false">↓</mo> <mi>s</mi></msup></mtd> <mtd></mtd> <mtd><msup><mo stretchy="false">↓</mo> <mi>s</mi></msup></mtd></mtr> <mtr><mtd><msub><mi>C</mi> <mn>0</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>0</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>0</mn></msub></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \array{ C_1 &\stackrel{f_1}{\to}& D_1 \\ \downarrow^s && \downarrow^s \\ C_0 &\stackrel{f_0}{\to}& D_0 } </annotation></semantics></math>;</p> </li> <li> <p>respect for the target map: <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mrow><mtable><mtr><mtd><msub><mi>C</mi> <mn>1</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>1</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>1</mn></msub></mtd></mtr> <mtr><mtd><msup><mo stretchy="false">↓</mo> <mi>t</mi></msup></mtd> <mtd></mtd> <mtd><msup><mo stretchy="false">↓</mo> <mi>t</mi></msup></mtd></mtr> <mtr><mtd><msub><mi>C</mi> <mn>0</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>0</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>0</mn></msub></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \array{ C_1 &\stackrel{f_1}{\to}& D_1 \\ \downarrow^t && \downarrow^t \\ C_0 &\stackrel{f_0}{\to}& D_0 } </annotation></semantics></math>;</p> </li> <li> <p>respect for identities <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mrow><mtable><mtr><mtd><msub><mi>C</mi> <mn>0</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>0</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>0</mn></msub></mtd></mtr> <mtr><mtd><msup><mo stretchy="false">↓</mo> <mi>i</mi></msup></mtd> <mtd></mtd> <mtd><msup><mo stretchy="false">↓</mo> <mi>i</mi></msup></mtd></mtr> <mtr><mtd><msub><mi>C</mi> <mn>1</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>1</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>1</mn></msub></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \array{ C_0 &\stackrel{f_0}{\to}& D_0 \\ \downarrow^i && \downarrow^i \\ C_1 &\stackrel{f_1}{\to}& D_1 } </annotation></semantics></math>;</p> </li> <li> <p>respect for composition <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mrow><mtable><mtr><mtd><msub><mi>C</mi> <mn>1</mn></msub><msub><mo>×</mo> <mrow><mi>t</mi><mo>,</mo><mi>s</mi></mrow></msub><msub><mi>C</mi> <mn>1</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>1</mn></msub><msub><mo>×</mo> <mrow><mi>t</mi><mo>,</mo><mi>s</mi></mrow></msub><msub><mi>f</mi> <mn>1</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>1</mn></msub><msub><mo>×</mo> <mrow><mi>t</mi><mo>,</mo><mi>s</mi></mrow></msub><msub><mi>D</mi> <mn>1</mn></msub></mtd></mtr> <mtr><mtd><msup><mo stretchy="false">↓</mo> <mo>∘</mo></msup></mtd> <mtd></mtd> <mtd><msup><mo stretchy="false">↓</mo> <mo>∘</mo></msup></mtd></mtr> <mtr><mtd><msub><mi>C</mi> <mn>1</mn></msub></mtd> <mtd><mover><mo>→</mo><mrow><msub><mi>f</mi> <mn>1</mn></msub></mrow></mover></mtd> <mtd><msub><mi>D</mi> <mn>1</mn></msub></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \array{ C_1 \times_{t,s} C_1 &\stackrel{f_1\times_{t,s} f_1}{\to}& D_1 \times_{t,s} D_1 \\ \downarrow^{\circ} && \downarrow^{\circ} \\ C_1 &\stackrel{f_1}{\to}& D_1 } </annotation></semantics></math>.</p> </li> </ul> </li> </ul> <p>This reproduces the external definition of functors above for <a class="existingWikiWord" href="/nlab/show/small+categories">small categories</a>, which are categories <a class="existingWikiWord" href="/nlab/show/internalization">internal to</a> <a class="existingWikiWord" href="/nlab/show/Set">Set</a></p> <p>In many cases, this notion is too restrictive, and we should use internal <a class="existingWikiWord" href="/nlab/show/anafunctors">anafunctors</a> instead.</p> <h3 id="enriched_definition">Enriched definition</h3> <p>In <a class="existingWikiWord" href="/nlab/show/enriched+category+theory">enriched category theory</a> a functor maps not <a class="existingWikiWord" href="/nlab/show/hom-sets">hom-sets</a> but the given <a class="existingWikiWord" href="/nlab/show/hom-objects">hom-objects</a> to each other, in a way that respects their composition. This is described at</p> <ul> <li><a class="existingWikiWord" href="/nlab/show/enriched+functor">enriched functor</a>.</li> </ul> <h3 id="profunctors">Profunctors</h3> <p>A generalization of the notion of <a class="existingWikiWord" href="/nlab/show/enriched+functor">enriched functor</a> is the notion of <a class="existingWikiWord" href="/nlab/show/profunctor">profunctor</a>.</p> <h3 id="higher_categorical_functors">Higher categorical functors</h3> <p>In <a class="existingWikiWord" href="/nlab/show/higher+category+theory">higher category theory</a> there are corresponding higher notions of functor, such as</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/2-functor">2-functor</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/strict+2-functor">strict 2-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/pseudofunctor">pseudofunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/lax+functor">lax functor</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-functor">(∞,1)-functor</a></p> </li> <li> <p>See also an informal discussion about an <a class="existingWikiWord" href="/nlab/show/experimental+alternative+definition+of+functor">experimental alternative definition of functor</a>.</p> </li> </ul> <h3 id="in_homotopy_type_theory">In homotopy type theory</h3> <p>Note: the <a class="existingWikiWord" href="/nlab/show/HoTT+book">HoTT book</a> calls a <a class="existingWikiWord" href="/nlab/show/category">category</a> a “precategory” and a <a class="existingWikiWord" href="/nlab/show/univalent+category">univalent category</a> a “category”, but here we shall refer to the standard terminology of “category” and “univalent category” respectively.</p> <p>The definition of functor in homotopy type theory is a straightforward translation of the ordinary one. However, the notion of <a class="existingWikiWord" href="/nlab/show/univalent+category">univalent category</a> allows us to construct some such functors that in classical mathematics would require either the <a class="existingWikiWord" href="/nlab/show/axiom+of+choice">axiom of choice</a> or the use of <a class="existingWikiWord" href="/nlab/show/anafunctors">anafunctors</a>.</p> <p>Let <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>B</mi></mrow><annotation encoding="application/x-tex">B</annotation></semantics></math> be <a class="existingWikiWord" href="/nlab/show/categories">categories</a>. Informally, a <strong>functor</strong> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>A</mi><mo>→</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">F : A \to B</annotation></semantics></math> consists of</p> <ul> <li>A function <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mn>0</mn></msub><mo>:</mo><msub><mi>A</mi> <mn>0</mn></msub><mo>→</mo><msub><mi>B</mi> <mn>0</mn></msub></mrow><annotation encoding="application/x-tex">F_0 : A_0 \to B_0</annotation></semantics></math></li> <li>For each <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></mrow><annotation encoding="application/x-tex">a,b:A</annotation></semantics></math>, a function <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mrow><mi>a</mi><mo>,</mo><mi>b</mi></mrow></msub><mo>:</mo><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo stretchy="false">)</mo><mo>→</mo><msub><mi>hom</mi> <mi>B</mi></msub><mo stretchy="false">(</mo><mi>F</mi><mi>a</mi><mo>,</mo><mi>F</mi><mi>b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F_{a,b}:hom_A(a,b) \to hom_B(F a,F b)</annotation></semantics></math>, generally also denoted <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi></mrow><annotation encoding="application/x-tex">F</annotation></semantics></math>.</li> <li>For each <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>a</mi><mo>:</mo><mi>A</mi></mrow><annotation encoding="application/x-tex">a:A</annotation></semantics></math>, we have <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>a</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mn>1</mn> <mrow><mi>F</mi><mi>a</mi></mrow></msub></mrow><annotation encoding="application/x-tex">F(1_a)=1_{F a}</annotation></semantics></math>.</li> <li>For each <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></mrow><annotation encoding="application/x-tex">a,b,c: A</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>f</mi><mo>:</mo><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">f:hom_A(a,b)</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>g</mi><mo>:</mo><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">g:hom_A(b,c)</annotation></semantics></math>, we have</li> </ul> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo>∘</mo><mi>f</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mi>g</mi><mo>∘</mo><mi>F</mi><mi>f</mi></mrow><annotation encoding="application/x-tex">F(g \circ f) = F g \circ F f</annotation></semantics></math></div> <p>Formally, the type of functors from <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>A</mi></mrow><annotation encoding="application/x-tex">A</annotation></semantics></math> to <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</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>Func</mi><mo stretchy="false">(</mo><mi>A</mi><mo>,</mo><mi>B</mi><mo stretchy="false">)</mo><mo>≔</mo><munder><mo lspace="thinmathspace" rspace="thinmathspace">∑</mo> <mrow><msub><mi>F</mi> <mn>0</mn></msub><mo>:</mo><msub><mi>A</mi> <mn>0</mn></msub><mo>→</mo><msub><mi>B</mi> <mn>0</mn></msub></mrow></munder><munder><mo lspace="thinmathspace" rspace="thinmathspace">∑</mo> <mrow><mi>F</mi><mo>:</mo><munder><mo lspace="thinmathspace" rspace="thinmathspace">∏</mo> <mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>:</mo><mi>A</mi></mrow></munder><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo stretchy="false">)</mo><mo>→</mo><msub><mi>hom</mi> <mi>B</mi></msub><mo stretchy="false">(</mo><mi>F</mi><mi>a</mi><mo>,</mo><mi>F</mi><mi>b</mi><mo stretchy="false">)</mo></mrow></munder><mo maxsize="1.8em" minsize="1.8em">(</mo><munder><mo lspace="thinmathspace" rspace="thinmathspace">∏</mo> <mrow><mi>a</mi><mo>:</mo><mi>A</mi></mrow></munder><mi>F</mi><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>a</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mn>1</mn> <mrow><mi>F</mi><mi>a</mi></mrow></msub><mo maxsize="1.8em" minsize="1.8em">)</mo><mo>×</mo><mo maxsize="1.8em" minsize="1.8em">(</mo><munder><mo lspace="thinmathspace" rspace="thinmathspace">∏</mo> <mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>:</mo><mi>A</mi></mrow></munder><munder><mo lspace="thinmathspace" rspace="thinmathspace">∏</mo> <mrow><mi>f</mi><mo>:</mo><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo stretchy="false">)</mo></mrow></munder><munder><mo lspace="thinmathspace" rspace="thinmathspace">∏</mo> <mrow><mi>g</mi><mo>:</mo><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo stretchy="false">)</mo></mrow></munder><mi>F</mi><mo stretchy="false">(</mo><mi>g</mi><mo>∘</mo><mi>f</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mi>g</mi><mo>∘</mo><mi>F</mi><mi>f</mi><mo maxsize="1.8em" minsize="1.8em">)</mo></mrow><annotation encoding="application/x-tex"> Func(A,B) \coloneqq \sum_{F_0:A_0\to B_0} \sum_{F:\prod_{a,b:A} hom_A(a,b) \to \hom_B(F a,F b)} \Big(\prod_{a:A} F(1_a) = 1_{F a}\Big) \times \Big( \prod_{a,b,c:A} \prod_{f:\hom_A(a,b)} \prod_{g:\hom_A(b,c)} F(g \circ f) = F g \circ F f\Big) </annotation></semantics></math></div> <p>A formal definition in <a class="existingWikiWord" href="/nlab/show/Coq">Coq</a> can be found in <a href="#AhrensKapulkinShulman13">Ahrens-Kapulkin-Shulman 13</a>.</p> <h2 id="properties">Properties</h2> <p>These properties come from the <a class="existingWikiWord" href="/nlab/show/HoTT+book">HoTT book</a>.</p> <p>By induction on <a class="existingWikiWord" href="/nlab/show/identity">identity</a>, a functor also preserves <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>idtoiso</mi></mrow><annotation encoding="application/x-tex">idtoiso</annotation></semantics></math> (See <a class="existingWikiWord" href="/nlab/show/category">category</a>).</p> <h3 id="composition_of_functors">Composition of functors</h3> <p>For functors <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>A</mi><mo>→</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">F:A\to B</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>G</mi><mo>:</mo><mi>B</mi><mo>→</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">G:B \to C</annotation></semantics></math>, their composite <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>G</mi><mo>∘</mo><mi>F</mi><mo>:</mo><mi>A</mi><mo>→</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">G \circ F : A \to C</annotation></semantics></math> is given by</p> <ul> <li>The composite <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><msub><mi>G</mi> <mn>0</mn></msub><mo>∘</mo><msub><mi>F</mi> <mn>0</mn></msub><mo stretchy="false">)</mo><mo>:</mo><msub><mi>A</mi> <mn>0</mn></msub><mo>→</mo><msub><mi>C</mi> <mn>0</mn></msub></mrow><annotation encoding="application/x-tex">(G_0 \circ F_0): A_0 \to C_0</annotation></semantics></math></li> <li>For each <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></mrow><annotation encoding="application/x-tex">a,b:A</annotation></semantics></math>, the composite<div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mo stretchy="false">(</mo><msub><mi>G</mi> <mrow><mi>F</mi><mi>a</mi><mo>,</mo><mi>F</mi><mi>b</mi></mrow></msub><mo>∘</mo><msub><mi>F</mi> <mrow><mi>a</mi><mo>,</mo><mi>b</mi></mrow></msub><mo stretchy="false">)</mo><mo>:</mo><msub><mi>hom</mi> <mi>A</mi></msub><mo stretchy="false">(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo stretchy="false">)</mo><mo>→</mo><msub><mi>hom</mi> <mi>C</mi></msub><mo stretchy="false">(</mo><mi>G</mi><mi>F</mi><mi>a</mi><mo>,</mo><mi>G</mi><mi>F</mi><mi>b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(G_{F a, F b} \circ F_{a,b}):hom_A(a,b)\to hom_C(G F a, G F b)</annotation></semantics></math></div></li> </ul> <h3 id="lemma_929_in_hott_book">Lemma 9.2.9 in HoTT book</h3> <p>Composition of functors is associative <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>H</mi><mo stretchy="false">(</mo><mi>G</mi><mi>F</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mi>H</mi><mi>G</mi><mo stretchy="false">)</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">H(G F)=(H G)F</annotation></semantics></math>.</p> <p><strong>Proof:</strong> Since composition of functions is associative, this follows immediately for the actions on objects and on homs. And since hom-sets are sets, the rest of the data is automatic. <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mo>□</mo></mrow><annotation encoding="application/x-tex">\square</annotation></semantics></math></p> <h3 id="lemma_9210_in_hott_book">Lemma 9.2.10 in HoTT book</h3> <p>Lemma 9.2.9 is coherent, i.e. the following pentagon of equalities commutes:</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mrow><mtable><mtr><mtd></mtd> <mtd></mtd> <mtd><mo stretchy="false">(</mo><mi>K</mi><mi>H</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>G</mi><mi>F</mi><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd></mtd> <mtd><mo>↗</mo></mtd> <mtd></mtd> <mtd><mo>↘</mo></mtd></mtr> <mtr><mtd><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mi>K</mi><mi>H</mi><mo stretchy="false">)</mo><mi>G</mi><mo stretchy="false">)</mo><mi>F</mi></mtd> <mtd></mtd> <mtd></mtd> <mtd></mtd> <mtd><mi>K</mi><mo stretchy="false">(</mo><mi>H</mi><mo stretchy="false">(</mo><mi>G</mi><mi>F</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd><mo stretchy="false">↓</mo></mtd> <mtd></mtd> <mtd></mtd> <mtd></mtd> <mtd><mo stretchy="false">↑</mo></mtd></mtr> <mtr><mtd><mo stretchy="false">(</mo><mi>K</mi><mo stretchy="false">(</mo><mi>H</mi><mi>G</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mi>F</mi></mtd> <mtd></mtd> <mtd><mo>⟶</mo></mtd> <mtd></mtd> <mtd><mi>K</mi><mo stretchy="false">(</mo><mo stretchy="false">(</mo><mi>H</mi><mi>G</mi><mo stretchy="false">)</mo><mi>F</mi><mo stretchy="false">)</mo></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex"> \array{ && (K H)(G F) \\ & \nearrow && \searrow \\ ((K H) G) F && && K (H (G F)) \\ \downarrow && && \uparrow \\ (K(H G)) F && \longrightarrow && K( (H G) F) } </annotation></semantics></math></div> <h2 id="types_of_functors">Types of functors</h2> <p>Specific types of functors are important in applications. See for instance</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/essentially+surjective+functor">essentially surjective functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/full+functor">full functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/faithful+functor">faithful functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/full+and+faithful+functor">full and faithful functor</a></p> </li> </ul> <p>And for more background on this see <a class="existingWikiWord" href="/nlab/show/stuff%2C+structure%2C+property">stuff, structure, property</a>.</p> <h2 id="examples">Examples</h2> <h3 id="morphisms_of_monoids_and_groups">Morphisms of monoids and groups</h3> <p>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></mrow><annotation encoding="application/x-tex">A,B</annotation></semantics></math> <a class="existingWikiWord" href="/nlab/show/monoids">monoids</a> or <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>G</mi><mo>,</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">G, H</annotation></semantics></math> <a class="existingWikiWord" href="/nlab/show/groups">groups</a>, let <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>A</mi><mo>,</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>B</mi></mrow><annotation encoding="application/x-tex">\mathbf{B}A, \mathbf{B}B</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>G</mi></mrow><annotation encoding="application/x-tex">\mathbf{B}G</annotation></semantics></math>, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>H</mi></mrow><annotation encoding="application/x-tex">\mathbf{B}H</annotation></semantics></math> be the corresponding one-object <a class="existingWikiWord" href="/nlab/show/category">categories</a> (as described at <a class="existingWikiWord" href="/nlab/show/delooping">delooping</a>). Then functors</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>A</mi><mo>→</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>B</mi></mrow><annotation encoding="application/x-tex"> \mathbf{B}A \to \mathbf{B}B </annotation></semantics></math></div> <p>are canonically in bijection with monoid homomorphisms <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 \to B</annotation></semantics></math> and accordingly functors</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>G</mi><mo>→</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>H</mi></mrow><annotation encoding="application/x-tex"> \mathbf{B}G \to \mathbf{B}H </annotation></semantics></math></div> <p>are canonically in bijection with group homomorphisms <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>G</mi><mo>→</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">G \to H</annotation></semantics></math>.</p> <h3 id="representations">Representations</h3> <p>With <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>G</mi></mrow><annotation encoding="application/x-tex">\mathbf{B}G</annotation></semantics></math> as above, functors on <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>G</mi></mrow><annotation encoding="application/x-tex">\mathbf{B}G</annotation></semantics></math> with values in <a class="existingWikiWord" href="/nlab/show/Vect">Vect</a> are the same as linear <a class="existingWikiWord" href="/nlab/show/representations">representations</a> of the <a class="existingWikiWord" href="/nlab/show/group">group</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>G</mi></mrow><annotation encoding="application/x-tex">G</annotation></semantics></math>. In fact, we have a canonical isomorphism of categories</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>Funct</mi><mo stretchy="false">(</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>G</mi><mo>,</mo><mi>Vect</mi><mo stretchy="false">)</mo><mo>≃</mo><mi>Rep</mi><mo stretchy="false">(</mo><mi>G</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> Funct(\mathbf{B}G, Vect) \simeq Rep(G) </annotation></semantics></math></div> <p>of the <a class="existingWikiWord" href="/nlab/show/functor+category">functor category</a> with the representation category.</p> <h3 id="linear_maps">Linear Maps</h3> <p>Let <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>End</mi><mo stretchy="false">(</mo><mi>U</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\mathbf{B} End(U)</annotation></semantics></math> and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>End</mi><mo stretchy="false">(</mo><mi>V</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\mathbf{B} End(V)</annotation></semantics></math> be one-object categories whose objects are each finite-dimensional vector space and whose morphisms are all of the linear <a class="existingWikiWord" href="/nlab/show/endomorphisms">endomorphisms</a> on that space, i.e. one-object <a class="existingWikiWord" href="/nlab/show/full+subcategory">full subcategories</a> of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>Fin</mi><mi>Vect</mi></mrow><annotation encoding="application/x-tex">Fin Vect</annotation></semantics></math>.</p> <h4 id="left_inverses">Left Inverses</h4> <p>If the linear map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>U</mi><mo>→</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">F:U\to V</annotation></semantics></math> has a left inverse, i.e.</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo>∘</mo><mi>F</mi><mo>=</mo><msub><mn>1</mn> <mi>U</mi></msub><mo>,</mo></mrow><annotation encoding="application/x-tex">F^*\circ F = 1_U,</annotation></semantics></math></div> <p>where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup></mrow><annotation encoding="application/x-tex">F^*</annotation></semantics></math> is the <a class="existingWikiWord" href="/nlab/show/preimage">preimage</a>, then we can construct a functor</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mo>:</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>End</mi><mo stretchy="false">(</mo><mi>U</mi><mo stretchy="false">)</mo><mo>→</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>End</mi><mo stretchy="false">(</mo><mi>V</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F_*:\mathbf{B} End(U)\to\mathbf{B} End(V)</annotation></semantics></math></div> <p>by defining its action on objects by</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><mi>U</mi><mo stretchy="false">)</mo><mo>=</mo><msub><mi>F</mi> <mo>*</mo></msub><mi>U</mi></mrow><annotation encoding="application/x-tex">F_*(U) = F_* U</annotation></semantics></math></div> <p>where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub></mrow><annotation encoding="application/x-tex">F_*</annotation></semantics></math> on the right-hand side is the <a class="existingWikiWord" href="/nlab/show/image">image</a> and its action on endomorphisms by</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mi>f</mi><msup><mi>F</mi> <mo>*</mo></msup><mo>.</mo></mrow><annotation encoding="application/x-tex">F_*(f) = F f F^*.</annotation></semantics></math></div> <p>Composition follows immediately</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><mi>f</mi><mi>g</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mi>f</mi><mi>g</mi><msup><mi>F</mi> <mo>*</mo></msup><mo>=</mo><mi>F</mi><mi>f</mi><msup><mi>F</mi> <mo>*</mo></msup><mi>F</mi><mi>g</mi><msup><mi>F</mi> <mo>*</mo></msup><mo>=</mo><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><mi>g</mi><mo stretchy="false">)</mo><mo>.</mo></mrow><annotation encoding="application/x-tex">F_*(f g) = F f g F^* = F f F^* F g F^* = F_*(f) F_*(g).</annotation></semantics></math></div> <p>Identity morphisms are preserved since for any vector <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> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mi>U</mi><mo>⊂</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">F_*U\subset V</annotation></semantics></math>, then</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>y</mi><mo>=</mo><mi>F</mi><mi>x</mi></mrow><annotation encoding="application/x-tex">y = F x</annotation></semantics></math></div> <p>for some vector <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 <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 we have</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>U</mi></msub><mo stretchy="false">)</mo><mi>y</mi><mo>=</mo><mi>F</mi><mo>∘</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>y</mi><mo>=</mo><mi>F</mi><mo>∘</mo><msup><mi>F</mi> <mo>*</mo></msup><mo>∘</mo><mi>F</mi><mi>x</mi><mo>=</mo><mi>F</mi><mi>x</mi><mo>=</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">F_*(1_U)y = F\circ F^* y = F\circ F^*\circ F x = F x = y</annotation></semantics></math></div> <p>so that</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>U</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mn>1</mn> <mrow><msub><mi>F</mi> <mo>*</mo></msub><mo stretchy="false">(</mo><mi>U</mi><mo stretchy="false">)</mo></mrow></msub></mrow><annotation encoding="application/x-tex">F_*(1_U) = 1_{F_*(U)}</annotation></semantics></math></div> <p>as required. Hence, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mi>F</mi> <mo>*</mo></msub></mrow><annotation encoding="application/x-tex">F_*</annotation></semantics></math> is a functor.</p> <h4 id="right_inverses">Right Inverses</h4> <p>If the linear map <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>U</mi><mo>→</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">F:U\to V</annotation></semantics></math> has a right inverse, i.e.</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>∘</mo><msup><mi>F</mi> <mo>*</mo></msup><mo>=</mo><msub><mn>1</mn> <mi>V</mi></msub><mo>,</mo></mrow><annotation encoding="application/x-tex">F\circ F^* = 1_V,</annotation></semantics></math></div> <p>where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup></mrow><annotation encoding="application/x-tex">F^*</annotation></semantics></math> is the preimage, then we can construct a functor</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo>:</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>End</mi><mo stretchy="false">(</mo><mi>V</mi><mo stretchy="false">)</mo><mo>→</mo><mstyle mathvariant="bold"><mi>B</mi></mstyle><mi>End</mi><mo stretchy="false">(</mo><mi>U</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F^*:\mathbf{B} End(V)\to\mathbf{B} End(U)</annotation></semantics></math></div> <p>by defining its action on objects by</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><mi>V</mi><mo stretchy="false">)</mo><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>V</mi></mrow><annotation encoding="application/x-tex">F^*(V) = F^*V</annotation></semantics></math></div> <p>where <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup></mrow><annotation encoding="application/x-tex">F^*</annotation></semantics></math> on the right-hand side is preimage, and its action on endomorphisms by</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>f</mi><mi>F</mi><mo>.</mo></mrow><annotation encoding="application/x-tex">F^*(f) = F^* f F.</annotation></semantics></math></div> <p>Composition follows immediately</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><mi>f</mi><mi>g</mi><mo stretchy="false">)</mo><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>f</mi><mi>g</mi><mi>F</mi><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>f</mi><mi>F</mi><msup><mi>F</mi> <mo>*</mo></msup><mi>g</mi><mi>F</mi><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><mi>g</mi><mo stretchy="false">)</mo><mo>.</mo></mrow><annotation encoding="application/x-tex">F^*(f g) = F^* f g F = F^* f F F^* g F = F^*(f) F^*(g).</annotation></semantics></math></div> <p>Identity morphisms are preserved since for any vector <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 <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mi>V</mi><mo>⊂</mo><mi>U</mi></mrow><annotation encoding="application/x-tex">F^*V\subset U</annotation></semantics></math>, then</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>y</mi></mrow><annotation encoding="application/x-tex">x = F^*y</annotation></semantics></math></div> <p>for some vector <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> in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>V</mi></mrow><annotation encoding="application/x-tex">V</annotation></semantics></math> and we have</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>V</mi></msub><mo stretchy="false">)</mo><mi>x</mi><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mo>∘</mo><mi>F</mi><mi>x</mi><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mo>∘</mo><mi>F</mi><mo>∘</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>y</mi><mo>=</mo><msup><mi>F</mi> <mo>*</mo></msup><mi>y</mi><mo>=</mo><mi>x</mi></mrow><annotation encoding="application/x-tex">F^*(1_V)x = F^*\circ F x = F^*\circ F \circ F^* y = F^* y = x</annotation></semantics></math></div> <p>so that</p> <div class="maruku-equation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><msub><mn>1</mn> <mi>V</mi></msub><mo stretchy="false">)</mo><mo>=</mo><msub><mn>1</mn> <mrow><msup><mi>F</mi> <mo>*</mo></msup><mo stretchy="false">(</mo><mi>V</mi><mo stretchy="false">)</mo></mrow></msub></mrow><annotation encoding="application/x-tex">F^*(1_V) = 1_{F^*(V)}</annotation></semantics></math></div> <p>as required. Hence, <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>F</mi> <mo>*</mo></msup></mrow><annotation encoding="application/x-tex">F^*</annotation></semantics></math> is a functor.</p> <h3 id="presheaves">Presheaves</h3> <p>Functors <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>C</mi><mo>→</mo><mi>Set</mi></mrow><annotation encoding="application/x-tex">F : C \to Set</annotation></semantics></math> with values in <a class="existingWikiWord" href="/nlab/show/Set">Set</a> are also called <a class="existingWikiWord" href="/nlab/show/presheaf">presheaves</a>. As such one calls them presheaves on the <a class="existingWikiWord" href="/nlab/show/opposite+category">opposite category</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msup><mi>C</mi> <mi>op</mi></msup></mrow><annotation encoding="application/x-tex">C^{op}</annotation></semantics></math> of <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math>. See <a class="existingWikiWord" href="/nlab/show/presheaf">presheaf</a> for more on this.</p> <h3 id="OnGeneralizedElements">Functors and generalized elements</h3> <p>For <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> a <a class="existingWikiWord" href="/nlab/show/category">category</a>, and <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi><mo>∈</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">X \in C</annotation></semantics></math> an <a class="existingWikiWord" href="/nlab/show/object">object</a>, 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> any other object, a <a class="existingWikiWord" href="/nlab/show/morphism">morphism</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>:</mo><mi>U</mi><mo>→</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">x : U \to X</annotation></semantics></math> may be regarded as a <a class="existingWikiWord" href="/nlab/show/generalized+element">generalized element</a> 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>, written <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">x \in X</annotation></semantics></math> (For this language applied to the category <a class="existingWikiWord" href="/nlab/show/Set">Set</a> of sets see <a class="existingWikiWord" href="/nlab/show/ETCS">ETCS</a>. For the general case see <a class="existingWikiWord" href="/nlab/show/type+theory">type theory</a>).</p> <p>The <em><a class="existingWikiWord" href="/nlab/show/set">set</a></em> of generalized elements of an object <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>X</mi><mo>∈</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">X \in C</annotation></semantics></math> is thus the union of <a class="existingWikiWord" href="/nlab/show/hom-sets">hom-sets</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><msub><mo lspace="thinmathspace" rspace="thinmathspace">∐</mo> <mrow><mi>U</mi><mo>∈</mo><mi>C</mi></mrow></msub><msub><mi>Hom</mi> <mi>C</mi></msub><mo stretchy="false">(</mo><mi>U</mi><mo>,</mo><mi>X</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\coprod_{U \in C} Hom_C(U,X)</annotation></semantics></math>.</p> <p>While a <a class="existingWikiWord" href="/nlab/show/morphism">morphism</a> <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>f</mi><mo>:</mo><mi>X</mi><mo>→</mo><mi>Y</mi></mrow><annotation encoding="application/x-tex">f : X \to Y</annotation></semantics></math> in an arbitrary category <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> need not at all come to us as a function of sets, it always induces a function of sets of <em>generalized elements</em> : it sends the generalized element <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>x</mi><mo>:</mo><mi>U</mi><mo>→</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">x : U \to X</annotation></semantics></math> 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> to the generalized element</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 stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>:</mo><mi>U</mi><mover><mo>→</mo><mi>x</mi></mover><mi>X</mi><mover><mo>→</mo><mi>f</mi></mover><mi>Y</mi></mrow><annotation encoding="application/x-tex"> f(x) : U \stackrel{x}{\to} X \stackrel{f}{\to} Y </annotation></semantics></math></div> <p>of <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>, using the composition of the morphism <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>f</mi></mrow><annotation encoding="application/x-tex">f</annotation></semantics></math> with the morphism <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 <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math>.</p> <p>In terms of this notation, the functoriality condition on a functor <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>F</mi><mo>:</mo><mi>C</mi><mo>→</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">F : C \to D</annotation></semantics></math>, which is</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 stretchy="false">(</mo><mi>U</mi><mover><mo>→</mo><mi>x</mi></mover><mi>X</mi><mover><mo>→</mo><mi>f</mi></mover><mi>Y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mo stretchy="false">(</mo><mi>U</mi><mo stretchy="false">)</mo><mover><mo>→</mo><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mover><mi>F</mi><mo stretchy="false">(</mo><mi>X</mi><mo stretchy="false">)</mo><mover><mo>→</mo><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo></mrow></mover><mi>F</mi><mo stretchy="false">(</mo><mi>Y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex"> F(U \stackrel{x}{\to} X \stackrel{f}{\to} Y) = F(U) \stackrel{F(x)}{\to} F(X) \stackrel{F(f)}{\to} F(Y) </annotation></semantics></math></div> <p>appears as</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 stretchy="false">(</mo><mi>f</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>=</mo><mi>F</mi><mo stretchy="false">(</mo><mi>f</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mspace width="thinmathspace"></mspace><mo>.</mo></mrow><annotation encoding="application/x-tex"> F(f(x)) = F(f)(F(x)) \,. </annotation></semantics></math></div> <p>This can be illustrated in the following diagram</p> <p><img src="http://ncatlab.org/nlab/files/altfunctor.jpg" width="300" /></p> <p>which provides an alternative expression of the functoriality condition as simply a statement that commuting diagrams in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>C</mi></mrow><annotation encoding="application/x-tex">C</annotation></semantics></math> map to commuting diagrams in <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" class="maruku-mathml"><semantics><mrow><mi>D</mi></mrow><annotation encoding="application/x-tex">D</annotation></semantics></math>.</p> <h2 id="related_concepts">Related concepts</h2> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/endofunctor">endofunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/bifunctor">bifunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/profunctor">profunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/multifunctor">multifunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/function">function</a></p> </li> <li> <p><strong>functor</strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/endofunctor">endofunctor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/polynomial+functor">polynomial functor</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/2-functor">2-functor</a> / <a class="existingWikiWord" href="/nlab/show/pseudofunctor">pseudofunctor</a></p> <ul> <li><a class="existingWikiWord" href="/nlab/show/monoidal+functor">monoidal functor</a></li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/n-functor">n-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-functor">(∞,1)-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2Cn%29-functor">(∞,n)-functor</a></p> </li> </ul> <div> <p><strong>basic properties of…</strong></p> <ul> <li> <p><strong><a class="existingWikiWord" href="/nlab/show/functors">functors</a></strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/faithful+functor">faithful functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/full+functor">full functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/full+and+faithful+functor">full and faithful functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/injective-on-objects+functor">injective-on-objects functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/essentially+injective+functor">essentially injective functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/embedding+of+categories">embedding of categories</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/essentially+surjective+functor">essentially surjective functor</a></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/surjective-on-objects+functor">surjective-on-objects functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/bijective-on-objects+functor">bijective-on-objects functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/dominant+functor">dominant functor</a></p> </li> </ul> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/split+essentially+surjective+functor">split essentially surjective functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/essentially+surjective+and+full+functor">essentially surjective and full functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/equivalence+of+categories">equivalence of categories</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/conservative+functor">conservative functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/localization+functor">localization functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/pseudomonic+functor">pseudomonic functor</a></p> </li> <li> <p>(<a class="existingWikiWord" href="/nlab/show/cocontinuous+functor">co</a>)<a class="existingWikiWord" href="/nlab/show/continuous+functor">continuous functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/final+functor">final functor</a>, <a class="existingWikiWord" href="/nlab/show/dense+functor">dense functor</a></p> </li> </ul> </li> <li> <p><strong><a class="existingWikiWord" href="/nlab/show/2-functors">2-functors</a></strong></p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/full+and+faithful+2-functor">full and faithful 2-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/locally+fully+faithful+2-functor">locally fully faithful 2-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/equivalence+of+2-categories">equivalence of 2-categories</a></p> </li> </ul> </li> <li> <p><strong><a class="existingWikiWord" href="/nlab/show/%28%E2%88%9E%2C1%29-functors">(∞,1)-functors</a></strong>:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/fully+faithful+%28%E2%88%9E%2C1%29-functor">fully faithful (∞,1)-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/essentially+surjective+%28%E2%88%9E%2C1%29-functor">essentially surjective (∞,1)-functor</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/equivalence+of+%28%E2%88%9E%2C1%29-categories">equivalence of (∞,1)-categories</a></p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/homotopy+final+functor">homotopy final functor</a>, <a class="existingWikiWord" href="/nlab/show/final+%28%E2%88%9E%2C1%29-functor">final (∞,1)-functor</a></p> </li> </ul> </li> </ul> </div> <h2 id="references">References</h2> <p>Textbook accounts:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/Saunders+MacLane">Saunders MacLane</a>, §I.3 of: <em><a class="existingWikiWord" href="/nlab/show/Categories+for+the+Working+Mathematician">Categories for the Working Mathematician</a></em>, Graduate Texts in Mathematics <strong>5</strong> Springer (1971, second ed. 1997) [<a href="https://link.springer.com/book/10.1007/978-1-4757-4721-8">doi:10.1007/978-1-4757-4721-8</a>]</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Francis+Borceux">Francis Borceux</a>, Section 1.2 in: <em><a class="existingWikiWord" href="/nlab/show/Handbook+of+Categorical+Algebra">Handbook of Categorical Algebra</a></em> Vol. 1: <em>Basic Category Theory</em> [<a href="https://doi.org/10.1017/CBO9780511525858">doi:10.1017/CBO9780511525858</a>]</p> </li> </ul> <p>See also the references at:</p> <ul> <li> <p><a class="existingWikiWord" href="/nlab/show/category+theory#references">category theory - references</a>.</p> </li> <li> <p><a class="existingWikiWord" href="/nlab/show/Andr%C3%A9+Joyal">André Joyal</a>‘s CatLab: <em><a class="existingWikiWord" href="/joyalscatlab/published/Functors">Functors</a></em></p> </li> </ul> <p>For functors in homotopy type theory</p> <ul> <li id="AhrensKapulkinShulman13"> <p><a class="existingWikiWord" href="/nlab/show/Benedikt+Ahrens">Benedikt Ahrens</a>, <a class="existingWikiWord" href="/nlab/show/Chris+Kapulkin">Chris Kapulkin</a>, <a class="existingWikiWord" href="/nlab/show/Michael+Shulman">Michael Shulman</a>, section 4 of <em>Univalent categories and the Rezk completion</em>, Mathematical Structures in Computer Science 25.5 (2015): 1010-1039 (<a href="http://arxiv.org/abs/1303.0584">arXiv:1303.0584</a>)</p> </li> <li id="HoTTBook"> <p><a class="existingWikiWord" href="/nlab/show/UF-IAS-2012">Univalent Foundations Project</a>, section 9.2 of <em><a class="existingWikiWord" href="/nlab/show/HoTT+Book">Homotopy Type Theory – Univalent Foundations of Mathematics</a></em>, IAS 2013</p> </li> </ul> <p><a class="existingWikiWord" href="/nlab/show/Coq">Coq</a> code formalizing the concept of functors includes the following:</p> <ul> <li><em><a href="https://github.com/benediktahrens/rezk_completion/blob/master/functors_transformations.v">functors_transformations.v</a></em></li> </ul> <p>Formalization in <a class="existingWikiWord" href="/nlab/show/cubical+Agda">cubical Agda</a>:</p> <ul> <li><a class="existingWikiWord" href="/nlab/show/1lab">1lab</a>, <em><a href="https://1lab.dev/Cat.Functor.Base.html#functors">Functors</a></em></li> </ul> </body></html> </div> <div class="revisedby"> <p> Last revised on February 24, 2024 at 07:26:58. See the <a href="/nlab/history/functor" 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/functor" accesskey="E" class="navlink" id="edit" rel="nofollow">Edit</a><a href="https://nforum.ncatlab.org/discussion/332/#Item_221">Discuss</a><span class="backintime"><a href="/nlab/revision/functor/69" accesskey="B" class="navlinkbackintime" id="to_previous_revision" rel="nofollow">Previous revision</a></span><a href="/nlab/show/diff/functor" accesskey="C" class="navlink" id="see_changes" rel="nofollow">Changes from previous revision</a><a href="/nlab/history/functor" accesskey="S" class="navlink" id="history" rel="nofollow">History (69 revisions)</a> <a href="/nlab/show/functor/cite" style="color: black">Cite</a> <a href="/nlab/print/functor" accesskey="p" id="view_print" rel="nofollow">Print</a> <a href="/nlab/source/functor" id="view_source" rel="nofollow">Source</a> </div> </div> <!-- Content --> </div> <!-- Container --> </body> </html>