{"id":1753,"date":"2012-04-02T20:07:32","date_gmt":"2012-04-03T00:07:32","guid":{"rendered":"http:\/\/scientopia.org\/blogs\/goodmath\/?p=1753"},"modified":"2020-08-04T09:16:38","modified_gmt":"2020-08-04T13:16:38","slug":"categorical-equalizers","status":"publish","type":"post","link":"http:\/\/www.goodmath.org\/blog\/2012\/04\/02\/categorical-equalizers\/","title":{"rendered":"Categorical Equalizers"},"content":{"rendered":"<p>Category theory is really all about building math using composition. Everything we do, we do it by defining things completely in terms of composition. We&#8217;ve seen a lot of that. For example, we defined subclasses (and other sub-things) in terms of composition. It sounds strange, but it took me an amazingly long time to really grasp that. (I learned category theory from some not-very-good textbooks, which were so concerned with the formalisms that they never bothered to explain why any of it mattered, or to build any intuition.)<\/p>\n<p>One thing that&#8217;s really important that we haven&#8217;t talked about yet is <em>equality<\/em>. In category theory, we define equality on arrows using something called a <em>pullback<\/em>. We&#8217;ll use that notion of equality for a lot of other things &#8211; like natural transformations. But before we can do pullbacks, we need to look at a weaker notion of arrow equality &#8211; something called the <em>equalizer<\/em> of a pair of arrows.<\/p>\n<p>As part of my attempt to be better than those books that I complained about, we&#8217;ll start with intuition, by looking at what an equalizer is in terms of sets. Suppose we have two functions <img src='http:\/\/l.wordpress.com\/latex.php?latex=f%2C%20g%20%3A%20A%20%5Crightarrow%20B&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f, g : A \\rightarrow B' style='vertical-align:1%' class='tex' alt='f, g : A \\rightarrow B' \/>.<\/p>\n<p>Now, in addition, suppose that they have a not-empty intersection: that is, that there&#8217;s some set of values <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%20%5Cin%20A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x \\in A' style='vertical-align:1%' class='tex' alt='x \\in A' \/> for which <img src='http:\/\/l.wordpress.com\/latex.php?latex=f%28x%29%20%3D%3D%20g%28x%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f(x) == g(x)' style='vertical-align:1%' class='tex' alt='f(x) == g(x)' \/>. We can take that set of values, and call it <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>. <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> is the <em>equalizer<\/em> of the functions <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=g&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g' style='vertical-align:1%' class='tex' alt='g' \/>. It&#8217;s the largest set <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/> where if you restrict the inputs to the functions<br \/>\nto members of <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>, then <img src='http:\/\/l.wordpress.com\/latex.php?latex=f&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f' style='vertical-align:1%' class='tex' alt='f' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=g&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g' style='vertical-align:1%' class='tex' alt='g' \/> are equal.<\/p>\n<p>Now, let&#8217;s look at the category theoretic version of that. We have <em>objects<\/em> <img src='http:\/\/l.wordpress.com\/latex.php?latex=A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='A' style='vertical-align:1%' class='tex' alt='A' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=B&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='B' style='vertical-align:1%' class='tex' alt='B' \/>. We have two arrows <img src='http:\/\/l.wordpress.com\/latex.php?latex=f%2C%20g%20%3A%20A%20%5Crightarrow%20B&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f, g : A \\rightarrow B' style='vertical-align:1%' class='tex' alt='f, g : A \\rightarrow B' \/>. This is the category analogue of the setup of sets and functions from above.<\/p>\n<p>To get to the equalizer, we need to add an object C which is a <em>subobject<\/em> of A (which corresponds to the subset of A on which f and g agree in the set model).<\/p>\n<p>The equalizer of <img src='http:\/\/l.wordpress.com\/latex.php?latex=A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='A' style='vertical-align:1%' class='tex' alt='A' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=B&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='B' style='vertical-align:1%' class='tex' alt='B' \/> is the pair of the object <img src='http:\/\/l.wordpress.com\/latex.php?latex=C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='C' style='vertical-align:1%' class='tex' alt='C' \/>, and an arrow <img src='http:\/\/l.wordpress.com\/latex.php?latex=i%20%3A%20C%20%5Crightarrow%20A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='i : C \\rightarrow A' style='vertical-align:1%' class='tex' alt='i : C \\rightarrow A' \/>. (That is, the object and arrow that define C as a subobject of A.) This object and arrow must satisfy the following conditions:<\/p>\n<ol>\n<li><img src='http:\/\/l.wordpress.com\/latex.php?latex=%20f%20%5Ccirc%20i%20%3D%20g%20%5Ccirc%20i&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title=' f \\circ i = g \\circ i' style='vertical-align:1%' class='tex' alt=' f \\circ i = g \\circ i' \/><\/li>\n<li><img src='http:\/\/l.wordpress.com\/latex.php?latex=%28%5Cforall%20j%3A%20D%20%5Crightarrow%20A%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='(\\forall j: D \\rightarrow A)' style='vertical-align:1%' class='tex' alt='(\\forall j: D \\rightarrow A)' \/> if <img src='http:\/\/l.wordpress.com\/latex.php?latex=f%20%5Ccirc%20j%20%3D%20g%20%5Ccirc%20j&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f \\circ j = g \\circ j' style='vertical-align:1%' class='tex' alt='f \\circ j = g \\circ j' \/> then <img src='http:\/\/l.wordpress.com\/latex.php?latex=%28%5Cexists%201%20k%20%3A%20D%20%5Crightarrow%20C%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='(\\exists 1 k : D \\rightarrow C)' style='vertical-align:1%' class='tex' alt='(\\exists 1 k : D \\rightarrow C)' \/> such that <img src='http:\/\/l.wordpress.com\/latex.php?latex=i%20%5Ccirc%20k%20%3D%20j&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='i \\circ k = j' style='vertical-align:1%' class='tex' alt='i \\circ k = j' \/><\/li>\n<\/ol>\n<p>That second one is the mouthful. What it says is:<\/p>\n<ul>\n<li>Suppose that I have any arrow j from some other object D to A:<\/li>\n<li>if f and g agree on composition about j, then there can only be <em>one<\/em> <em>unique<\/em> arrow from C to D which composes with j to get to A.<\/li>\n<\/ul>\n<p>In other words, (C, i) is a <em>selector<\/em> for the arrows on which A and B agree; you can only compose an arrow to A in a way that will compose equivalently with f and g to B if you go through (C, i).<\/p>\n<p>Or in diagram form, k in the following diagram is necessarily unique:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/scientopia.org\/img-archive\/goodmath\/img_10.jpg?resize=182%2C90\" alt=\"equalizer.jpg\" width=\"182\" height=\"90\" \/><\/p>\n<p>There are a couple of interesting properties of equalizers that are worth mentioning. The morphism in an equalizer is a <em>always<\/em> monic arrow (monomorphism); and if it&#8217;s epic (an epimorphism), then it must also be iso (an isomorphism).<\/p>\n<p>The pullback is very nearly the same construction as the equalizer we just looked at; except it&#8217;s abstracting one step further.<\/p>\n<p>Suppose we have two arrows pointing to the same target: <img src='http:\/\/l.wordpress.com\/latex.php?latex=f%20%3A%20B%20%5Crightarrow%20A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f : B \\rightarrow A' style='vertical-align:1%' class='tex' alt='f : B \\rightarrow A' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=g%20%3A%20C%20%5Crightarrow%20A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='g : C \\rightarrow A' style='vertical-align:1%' class='tex' alt='g : C \\rightarrow A' \/>. Then the pullback of of f and g is the triple of an object and two arrows <img src='http:\/\/l.wordpress.com\/latex.php?latex=%28B%20%5Ctimes_A%20C%2C%20p%20%3A%20B%20%5Ctimes_A%20C%20%5Crightarrow%20B%2C%20q%20%3A%20B%5Ctimes_A%20C%20%5Crightarrow%20C%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='(B \\times_A C, p : B \\times_A C \\rightarrow B, q : B\\times_A C \\rightarrow C)' style='vertical-align:1%' class='tex' alt='(B \\times_A C, p : B \\times_A C \\rightarrow B, q : B\\times_A C \\rightarrow C)' \/>. The elements of this triple must meet the following requirements:<\/p>\n<ol>\n<li><img src='http:\/\/l.wordpress.com\/latex.php?latex=f%20%5Ccirc%20p%20%3D%20g%20%5Ccirc%20q&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='f \\circ p = g \\circ q' style='vertical-align:1%' class='tex' alt='f \\circ p = g \\circ q' \/><\/li>\n<li><img src='http:\/\/l.wordpress.com\/latex.php?latex=%28f%20%5Ccirc%20p%29%20%3A%20B%5Ctimes_A%20C%20%5Crightarrow%20A&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='(f \\circ p) : B\\times_A C \\rightarrow A' style='vertical-align:1%' class='tex' alt='(f \\circ p) : B\\times_A C \\rightarrow A' \/><\/li>\n<li>for every triple <img src='http:\/\/l.wordpress.com\/latex.php?latex=%28D%2C%20h%20%3A%20D%20%5Crightarrow%20B%20%2C%20k%20%3A%20D%20%5Crightarrow%20C%29&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='(D, h : D \\rightarrow B , k : D \\rightarrow C)' style='vertical-align:1%' class='tex' alt='(D, h : D \\rightarrow B , k : D \\rightarrow C)' \/>, there is exactly one unique arrow <img src='http:\/\/l.wordpress.com\/latex.php?latex=%5Clangle%20h%2Ck%20%5Crangle_A%20%3A%20D%20%5Crightarrow%20B%20%5Ctimes_A%20C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='\\langle h,k \\rangle_A : D \\rightarrow B \\times_A C' style='vertical-align:1%' class='tex' alt='\\langle h,k \\rangle_A : D \\rightarrow B \\times_A C' \/> where <img src='http:\/\/l.wordpress.com\/latex.php?latex=p%20%5Ccirc%20%5Clangle%20h%2Ck%20%5Crangle_A%20%3D%20h&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='p \\circ \\langle h,k \\rangle_A = h' style='vertical-align:1%' class='tex' alt='p \\circ \\langle h,k \\rangle_A = h' \/>, and <img src='http:\/\/l.wordpress.com\/latex.php?latex=q%20%5Ccirc%20%5Clangle%20h%2Ck%20%5Crangle_A%20%3D%20k&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='q \\circ \\langle h,k \\rangle_A = k' style='vertical-align:1%' class='tex' alt='q \\circ \\langle h,k \\rangle_A = k' \/>.As happens so frequently in category theory, this is clearer using a diagram.\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/scientopia.org\/img-archive\/goodmath\/img_11.jpg?resize=248%2C232\" alt=\"pullback.jpg\" width=\"248\" height=\"232\" \/><\/p>\n<p>If you look at this, you should definitely be able to see how this corresponds to the categorical equalizer. If you&#8217;re careful and clever, you can also see the resemblance to categorical product (which is why we use the \u00d7<sub>A<\/sub> syntax). It&#8217;s a general construction that says that f and g are equivalent with respect to the product-like object B\u00d7<sub>A<\/sub>C.<\/p>\n<p>Here&#8217;s the neat thing. Work backwards through this abstraction process to figure out what this construction means if objects are sets and arrows are functions, and what&#8217;s the pullback of the sets A and B?<\/p>\n<p><img src='http:\/\/l.wordpress.com\/latex.php?latex=%7B%20%28x%2Cy%29%20%5Cin%20A%20%5Ctimes%20B%20%3A%20f%28x%29%20%3D%20g%28y%29%20%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='{ (x,y) \\in A \\times B : f(x) = g(y) }' style='vertical-align:1%' class='tex' alt='{ (x,y) \\in A \\times B : f(x) = g(y) }' \/><\/p>\n<p>Right back where we started, almost. The pullback is an equalizer; working it back shows that.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Category theory is really all about building math using composition. Everything we do, we do it by defining things completely in terms of composition. We&#8217;ve seen a lot of that. For example, we defined subclasses (and other sub-things) in terms of composition. It sounds strange, but it took me an amazingly long time to really [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[76],"tags":[],"class_list":["post-1753","post","type-post","status-publish","format-standard","hentry","category-category-theory"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4lzZS-sh","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/comments?post=1753"}],"version-history":[{"count":3,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1753\/revisions"}],"predecessor-version":[{"id":3868,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1753\/revisions\/3868"}],"wp:attachment":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/media?parent=1753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/categories?post=1753"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/tags?post=1753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}