<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michi's blog &#187; Algebra</title>
	<atom:link href="http://blog.mikael.johanssons.org/archive/category/mathematics/algebra/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikael.johanssons.org</link>
	<description>Because my LiveJournal is too silly</description>
	<lastBuildDate>Sat, 12 Nov 2011 15:09:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Geometric realization of simplicial sets</title>
		<link>http://blog.mikael.johanssons.org/archive/2011/03/geometric-realization-of-simplicial-sets/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2011/03/geometric-realization-of-simplicial-sets/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 20:27:04 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=298</guid>
		<description><![CDATA[This post is an expansion of all the details I did not have a good feeling for when I started with for page 7 of Goerss-Jardine, where the geometric realization of simplicial sets is introduced. The construction works by constructing a few helpful categories, and using their properties along the way. Especially after unpacking the [...]]]></description>
			<content:encoded><![CDATA[<p><em>This post is an expansion of all the details I did not have a good feeling for when I started with for page 7 of Goerss-Jardine, where the geometric realization of simplicial sets is introduced.<br />
</em></p>
<p>The construction works by constructing a few helpful categories, and using their properties along the way. Especially after unpacking the categorical results G-J rely on, there are quite a few categories floating around. I shall try to be very explicit about which category is which, and how they work.</p>
<p>As we recall, simplicial sets are contravariant functors from the category <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' /> of ordinal numbers to the category of sets. We introduce the <em>simplex category</em> <img src='/latexrender/pictures/83c474f75b71de68010f0603c4b3a065.png' title='\mathbf{\Delta}\downarrow X' alt='\mathbf{\Delta}\downarrow X' align='middle' /> of a simplicial set <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> with objects (simplices) given by maps <img src='/latexrender/pictures/0402abb08238a375674c55268fd26941.png' title='\sigma:\Delta^n\to X' alt='\sigma:\Delta^n\to X' align='middle' /> and a map from <img src='/latexrender/pictures/a2ab7d71a0f07f388ff823293c147d21.png' title='\sigma' alt='\sigma' align='middle' /> to <img src='/latexrender/pictures/a6f317b268ae825d94f832f970af607c.png' title='\tau' alt='\tau' align='middle' /> being given by a map <img src='/latexrender/pictures/8fa14cdd754f91cc6554c9e71929cce7.png' title='f' alt='f' align='middle' /> in <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' /> such that <img src='/latexrender/pictures/febaa2fd3b6dd148bc0c2b0a6b8dbea9.png' title='\sigma = \tau f' alt='\sigma = \tau f' align='middle' />.</p>
<p>Interpreting each simplicial simplex as a simplicial set, this can be thought of as the subcategory of the <em>slice category</em> over <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> spanned by maps from the simplicial simplices. Any map between simplicial simplices is determined completely by a unique ordinal number map that induces it.</p>
<h2>Lemma 2.1</h2>
<p>The proof of the isomorphism<br />
<img src='/latexrender/pictures/2c9ffa62929cb659819abf236fa69909.png' title='X \equiv \colim_{\Delta^n\to X} \Delta^n' alt='X \equiv \colim_{\Delta^n\to X} \Delta^n' align='middle' /><br />
taken over all simplices in the simplex category of <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> proceeds using the theorem that every functor from a small category to sets is a colimit of representable functors.</p>
<p>To unpack this statement, we turn to, say, Awodey, where this is Proposition 8.10.</p>
<p><strong>Proposition 8.10</strong> (Steve Awodey, Category Theory)<br />
For any small category <img src='/latexrender/pictures/05d05e751a80db7375eae13c25f0ca13.png' title='\mathbf{C}' alt='\mathbf{C}' align='middle' />, every object P in the functor category <img src='/latexrender/pictures/ae74b938502fb3236115bd67f8f115b9.png' title='Sets^{\mathbf{C}^{op}}' alt='Sets^{\mathbf{C}^{op}}' align='middle' /> is a colimit of representable functors <img src='/latexrender/pictures/98510d1fa4d8df7e49cfc691aaa494d7.png' title='\colim_{j\in J} yA_j' alt='\colim_{j\in J} yA_j' align='middle' /> using the Yoneda embedding <img src='/latexrender/pictures/5af14068a037460854dafb5d1e26562c.png' title='y:\mathbf{C}\to Sets^{\mathbf{C}^{op}}' alt='y:\mathbf{C}\to Sets^{\mathbf{C}^{op}}' align='middle' />.</p>
<p>Specifically, we can choose an index category <img src='/latexrender/pictures/ff44570aca8241914870afbc310cdb85.png' title='J' alt='J' align='middle' /> and a functor <img src='/latexrender/pictures/6f4b52f8707ad5a9e78a14342b8dc88d.png' title='A: J\to \mathbf{C}' alt='A: J\to \mathbf{C}' align='middle' /> such that <img src='/latexrender/pictures/28c3af4a5489ca5e27f291ca57a67696.png' title='P \equiv \colim_{J} y\circ A' alt='P \equiv \colim_{J} y\circ A' align='middle' />.</p>
<p><strong>Proof</strong><br />
We start by introducing the <em>category of elements</em> or <em>Grothendieck category</em> of P. This will be our index category for the colimit, and is often written <img src='/latexrender/pictures/f03b3e56f5b010d881efc844f5b39bfb.png' title='\int_\mathbf{C} P' alt='\int_\mathbf{C} P' align='middle' />. This category has objects <img src='/latexrender/pictures/6f381bfb816ef88ec8a37238bb4b5de7.png' title='(x\in PC,C)' alt='(x\in PC,C)' align='middle' />, and arrows <img src='/latexrender/pictures/650a9bb7d31632076751e39fa15b135e.png' title='h: (x, C)\to (x&amp;#8217;,C&amp;#8217;)' alt='h: (x, C)\to (x&amp;#8217;,C&amp;#8217;)' align='middle' /> given by arrows <img src='/latexrender/pictures/2510c39011c5be704182423e3a695e91.png' title='h' alt='h' align='middle' /> in <img src='/latexrender/pictures/05d05e751a80db7375eae13c25f0ca13.png' title='\mathbf{C}' alt='\mathbf{C}' align='middle' /> such that <img src='/latexrender/pictures/1b3897c989fd6f08e6663281b302fd4e.png' title='P(h)x = x&amp;#8217;' alt='P(h)x = x&amp;#8217;' align='middle' />.</p>
<p>This is almost like a category of pointed sets, only that we also care about the action of P while we&#8217;re at it. Since <img src='/latexrender/pictures/05d05e751a80db7375eae13c25f0ca13.png' title='\mathbf{C}' alt='\mathbf{C}' align='middle' /> is a small category, so is <img src='/latexrender/pictures/f03b3e56f5b010d881efc844f5b39bfb.png' title='\int_\mathbf{C} P' alt='\int_\mathbf{C} P' align='middle' />, and there is a projection functor <img src='/latexrender/pictures/296c7909f26bf42422d87c4c4b475e69.png' title='\pi: \int_\mathbf{C} P \to \mathbf{C}' alt='\pi: \int_\mathbf{C} P \to \mathbf{C}' align='middle' /> given by forgetting about the point, so sending <img src='/latexrender/pictures/fa81c3883ee9935ac95123bc532a6120.png' title='(x, C)\to C' alt='(x, C)\to C' align='middle' /> and preserving the arrow forming a morphism of elements.</p>
<p>We also recall the Yoneda embedding in order to progress nicely here:<br />
<img src='/latexrender/pictures/d25252dca0a61fda543b6edbf0d2f87e.png' title='yC = \hom_{\textbf{C}(-,C)' alt='yC = \hom_{\textbf{C}(-,C)' align='middle' />. The Yoneda lemma tells us that for contravariant <img src='/latexrender/pictures/800618943025315f869e4e1f09471012.png' title='F' alt='F' align='middle' />, <img src='/latexrender/pictures/550795d7e52b8f9ff21404b1ec46a356.png' title='\hom(yC, F) = FC' alt='\hom(yC, F) = FC' align='middle' />, naturally in <img src='/latexrender/pictures/800618943025315f869e4e1f09471012.png' title='F' alt='F' align='middle' /> and <img src='/latexrender/pictures/0d61f8370cad1d412f80b84d143e1257.png' title='C' alt='C' align='middle' />, and works by assigning to <img src='/latexrender/pictures/e6a872d1a048f1406e618695f34c3eba.png' title='x\in FC' alt='x\in FC' align='middle' /> the natural transformation <img src='/latexrender/pictures/27c02d717a14bd2cb2f38a6ee87aae72.png' title='\theta_x: yC\to F' alt='\theta_x: yC\to F' align='middle' /> which has components <img src='/latexrender/pictures/5da6a65eb54bf99affa6d2c817e41560.png' title='(\theta_x)_D: \hom(D,C) \to FD' alt='(\theta_x)_D: \hom(D,C) \to FD' align='middle' />. These are defined by their actions on actual maps <img src='/latexrender/pictures/78777245aade071383067b3c119ab61e.png' title='D\to C' alt='D\to C' align='middle' /> and we set <img src='/latexrender/pictures/c16fccb7dae3c9ebc7bb76f2a9f7b0b8.png' title='(\theta_x)_D(h) = F(h)(x)' alt='(\theta_x)_D(h) = F(h)(x)' align='middle' />.</p>
<p>In other words, a contravariant functor to sets corresponds to natural transformations from the Yoneda embedding to the functor itself. An element in the functor image gives rise to a particular such natural transformation by using the element as a <em>test case</em>, and using the functor to make the test runnable. </p>
<p>Now, returning to the proof of 8.10, we need to build a colimit that will work as our colimit presentation of P. We will do this by using <img src='/latexrender/pictures/4f08e3dba63dc6d40b22952c7a9dac6d.png' title='\pi' alt='\pi' align='middle' /> and <img src='/latexrender/pictures/415290769594460e2e485922904f345d.png' title='y' alt='y' align='middle' />. Indeed, for an object <img src='/latexrender/pictures/c272fcad33e373de04e048a440b3fbcb.png' title='(x,C)\in\int_C P' alt='(x,C)\in\int_C P' align='middle' />, by the Yoneda lemma this corresponds to some natural transformation <img src='/latexrender/pictures/e0c987d76ad3ce9284bed4f9268f38ac.png' title='x: yC\to P' alt='x: yC\to P' align='middle' />. These natural transformations form a subcategory of the slice category of <img src='/latexrender/pictures/ae74b938502fb3236115bd67f8f115b9.png' title='Sets^{\mathbf{C}^{op}}' alt='Sets^{\mathbf{C}^{op}}' align='middle' /> over P by the naturality of the Yoneda construction.</p>
<p>So we can build a cocone <img src='/latexrender/pictures/3c56f7404366a62ba41d27c1a79f2042.png' title='y\pi\to P' alt='y\pi\to P' align='middle' /> by taking the map from <img src='/latexrender/pictures/f3dd6a2d8fe1c001d413dba2b23c4813.png' title='y\pi(x,C)\to P' alt='y\pi(x,C)\to P' align='middle' /> to be the natural transformation <img src='/latexrender/pictures/b729963db083c34d27ba054ac5cb3f14.png' title='x:yC\to P' alt='x:yC\to P' align='middle' />. This is a colim because if we had some other cocone <img src='/latexrender/pictures/cec41725fa428258a0dd8a20db2fa9e0.png' title='y\pi\to Q' alt='y\pi\to Q' align='middle' /> with components <img src='/latexrender/pictures/ea6897208a82166ed090cd81f7cc3dfc.png' title='\theta_{(x,C)}: yC\to Q' alt='\theta_{(x,C)}: yC\to Q' align='middle' />, we can produce the unique natural transformation <img src='/latexrender/pictures/48e16a4e3a881e6ad393cf2d69cd6a78.png' title='P\to Q' alt='P\to Q' align='middle' /> by <img src='/latexrender/pictures/2836387293d7ee8c39a3eb10822f5dca.png' title='\theta_C: PC\to QC' alt='\theta_C: PC\to QC' align='middle' /> defined by <img src='/latexrender/pictures/fa4d620fdd1f4405137a6a0f3368231c.png' title='\theta_C(x) = \theta_(x,C)' alt='\theta_C(x) = \theta_(x,C)' align='middle' /> and recall that natural transformations <img src='/latexrender/pictures/806beeb9b411afd534e7d560f9e378d9.png' title='yC\to Q' alt='yC\to Q' align='middle' /> are, by the Yoneda lemma, the same as elements of <img src='/latexrender/pictures/0f66f704a6ede9639e16587e7b2164fa.png' title='QC' alt='QC' align='middle' />.</p>
<h2>But what does all this mean!?</h2>
<p>This was probably all about as headache inducing as anything else to do with Yoneda&#8217;s lemma. It&#8217;s a result that both in its proof and its applications tends to climb the ladder of nested categorical constructs pretty high.</p>
<p>So let&#8217;s get back to the simplicial case, and tease out what this implies for our reading. <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is a simplicial set, hence a contravariant set-valued functor on <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' />. So <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' /> is our small category.</p>
<p>The category of elements, <img src='/latexrender/pictures/e6cfba8638f8daf41f629d3efd3663fc.png' title='\int_{\mathbf{\Delta}} X' alt='\int_{\mathbf{\Delta}} X' align='middle' /> is the category where objects are <img src='/latexrender/pictures/b9e358abae82ebffbe3a1c4cb8de10d4.png' title='(s, n)' alt='(s, n)' align='middle' /> for <img src='/latexrender/pictures/0c18c8bbfcdc198eb3cf5dc13d8a0cc6.png' title='s\in X_n' alt='s\in X_n' align='middle' />. Morphisms track what happens to <img src='/latexrender/pictures/03c7c0ace395d80182db07ae2c30f034.png' title='s' alt='s' align='middle' /> under faces and degeneracies. Thus, specifically, by the arguments in example 1.7, we can put <img src='/latexrender/pictures/e6cfba8638f8daf41f629d3efd3663fc.png' title='\int_{\mathbf{\Delta}} X' alt='\int_{\mathbf{\Delta}} X' align='middle' /> in bijective correspondence with the collection of all simplicial n-simplices of X, in the sense that we associate to each <img src='/latexrender/pictures/2fdfb478366265833b181e39080e6b3f.png' title='s, n' alt='s, n' align='middle' /> the simplicial map <img src='/latexrender/pictures/2fd9594f9fdb5948df76466c037bfb53.png' title='\iota_s: \Delta^n\to X' alt='\iota_s: \Delta^n\to X' align='middle' /> as defined on page 6.</p>
<p>Thus, the index category is clear. The category of elements for a simplicial set really is “just” the category of simplices <img src='/latexrender/pictures/02765601f7c8d2a19a9eb79071c1f3cf.png' title='\iota_s' alt='\iota_s' align='middle' />. The representable functors are the <img src='/latexrender/pictures/78cd0205614ca9d5acb743a3d7fbd788.png' title='yC' alt='yC' align='middle' /> for <img src='/latexrender/pictures/67257b1ca6ae869357c63f8ac49a2f53.png' title='(x,C)\in\int_{\mathbf{\Delta}} X' alt='(x,C)\in\int_{\mathbf{\Delta}} X' align='middle' />, and so are all on the shape <img src='/latexrender/pictures/768ce692fb59a228387eb5a11d848832.png' title='\hom_{\mathbf{\Delta}}(-,n)' alt='\hom_{\mathbf{\Delta}}(-,n)' align='middle' />. But these are just the collections of standard simplicial n-simplices.</p>
<p>So our simplicial set is the colimit of simplical n-simplices under the conditions that they obey the face and degeneracy maps in the original simplicial set. </p>
<p>Let&#8217;s work this all through on an example. Consider the interval I, given by non-degenerate simplices a, b, x, subject to <img src='/latexrender/pictures/0c2ecce6db026981d824dc5852266090.png' title='d_0x = a' alt='d_0x = a' align='middle' /> and <img src='/latexrender/pictures/b4d86d31e16fa47ab55f50fd368e2f7e.png' title='d_1x = b' alt='d_1x = b' align='middle' />. Maps from the simplicial n-simplex to I can hit one of these three simplices, or any degeneracy of these.</p>
<p>There are two maps <img src='/latexrender/pictures/846800ff1f84fd281dc95f4a22b42e2f.png' title='\Delta^0\to I' alt='\Delta^0\to I' align='middle' />, namely <img src='/latexrender/pictures/90fb959dcc591122a65debf1f91a6eec.png' title='\iota_0\mapsto a' alt='\iota_0\mapsto a' align='middle' /> and <img src='/latexrender/pictures/abc5ebece4be76088ed2659f45082185.png' title='\iota_0\mapsto b' alt='\iota_0\mapsto b' align='middle' />. Thus, we start the construction of our colimit by introducing cells <img src='/latexrender/pictures/1666a760513f233b70a335fc5f576dc3.png' title='e^0_a' alt='e^0_a' align='middle' /> and <img src='/latexrender/pictures/1debfae6a35cc1b578fdc36fb6ad4da7.png' title='e^0_b' alt='e^0_b' align='middle' />. Any degeneracies are adsorbed by the fact that a simplicial simplex is a simplicial map, hence <img src='/latexrender/pictures/9d13820f4c6bbef375a5ec17e84dc8f5.png' title='e^0_a: s_0\iota_0\mapsto s_0a' alt='e^0_a: s_0\iota_0\mapsto s_0a' align='middle' /> and so on.<br />
There are three maps <img src='/latexrender/pictures/e905ff218014e4a0ae58f97199b675fc.png' title='\Delta^1\to I' alt='\Delta^1\to I' align='middle' />, namely:<br />
<img src='/latexrender/pictures/92115e9f8ce555039dbb102f8b094ed7.png' title='\iota_1\mapsto s_0a' alt='\iota_1\mapsto s_0a' align='middle' /><br />
<img src='/latexrender/pictures/c9253bfbec6c02749584f3d56dd81cc3.png' title='\iota_1\mapsto s_0b' alt='\iota_1\mapsto s_0b' align='middle' /> and<br />
<img src='/latexrender/pictures/e9ab267394783af778f77bc840fa925c.png' title='\iota_1\mapsto x' alt='\iota_1\mapsto x' align='middle' /><br />
These three choices all come with boundary maps that have to be taken into account in the colimit. Specifically, the two first maps here, the ones that hit degenerate simplices, factor through <img src='/latexrender/pictures/1666a760513f233b70a335fc5f576dc3.png' title='e^0_a' alt='e^0_a' align='middle' /> and <img src='/latexrender/pictures/1debfae6a35cc1b578fdc36fb6ad4da7.png' title='e^0_b' alt='e^0_b' align='middle' /> respectively. There is a map <img src='/latexrender/pictures/20f5090e077012176251533107295124.png' title='\Delta^1\to\Delta^0' alt='\Delta^1\to\Delta^0' align='middle' /> (in the category <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' />) given by <img src='/latexrender/pictures/1517c2db9d2726bccd4f195158dd24d9.png' title='(0,1)\mapsto (0,0) = s^0\iota_0' alt='(0,1)\mapsto (0,0) = s^0\iota_0' align='middle' />. This map corresponds to the map <img src='/latexrender/pictures/925968d18aeb44f579476f56e5c6a136.png' title='s_0:\Delta^0\to\Delta^1' alt='s_0:\Delta^0\to\Delta^1' align='middle' /> (as a map of simplicial simplices), which embeds the simplex <img src='/latexrender/pictures/1666a760513f233b70a335fc5f576dc3.png' title='e^0_a' alt='e^0_a' align='middle' /> into <img src='/latexrender/pictures/e905ff218014e4a0ae58f97199b675fc.png' title='\Delta^1\to I' alt='\Delta^1\to I' align='middle' />. Thus, this embedding along degeneracies is a map in the index category of the colimit, and therefore leads to an identification of any simplex with all its degeneracies in the colimit. The non-degenerate case gives us a simplex <img src='/latexrender/pictures/8f8966789e387bb14fe6025b006fca7a.png' title='e^1_x' alt='e^1_x' align='middle' />.<br />
Similarly, the colimit forces the identifications <img src='/latexrender/pictures/bb5ee145dafc8cac2ad68ba804b01b38.png' title='d_0e^1_x = e^0_a' alt='d_0e^1_x = e^0_a' align='middle' /> and <img src='/latexrender/pictures/ac6cc3d27350ad7a86f70e2cb68083e0.png' title='d_1e^1_x = e^0_b' alt='d_1e^1_x = e^0_b' align='middle' />, finishing the description of <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> as a colimit.</p>
<p>Now, we have a nice candidate for the realization of a single simplicial n-simplex: the topological n-simplex defined in Example 1.1. This is used to define the geometric realization of a simplicial set through “simply” forcing the realization functor to be compatible with this colimit structure. Thus, we define the geometric realization of a simplicial set to be the colimit of the topological n-simplices over the same index category that we used to display <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> as a colimit.</p>
<h2>Well, what about adjointness?</h2>
<p>The first <em>really</em> nice property about realization is that it is left adjoint to the singular functor. Proving this is a sequence in abstract symbol manipulation and remembering what everything at each step of the way actually means. Thus, say we have a simplicial set X and a topological space Y. Adjointness means there is an isomorphism<br />
<img src='/latexrender/pictures/6415c33d1ce0d9788d26cce799d4db20.png' title='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{sSet}}(X, SY)' alt='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{sSet}}(X, SY)' align='middle' /><br />
which is natural in both X and Y.</p>
<p>Now, let&#8217;s consider the left hand side.<br />
<img src='/latexrender/pictures/c677a4e4095a44d9f913f09a6ecbd2e0.png' title='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y)' alt='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y)' align='middle' /><br />
by definition of the geometric realization.<br />
<img src='/latexrender/pictures/3373f1d2fc6d74185b7986674cd9bf74.png' title='\hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y) \equiv \lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)' alt='\hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y) \equiv \lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)' align='middle' /><br />
because contravariant representable functors map colimits to limits. This is Awodey 5.29, and sits very well with our intuition from sets, vector spaces, and just about anywhere else.<br />
Now, remember that a map in <img src='/latexrender/pictures/75ce0cb5338b9f6e8646ffb1ef1fa3d3.png' title='\hom_{\mathbf{Top}}(|\Delta^n|, Y)' alt='\hom_{\mathbf{Top}}(|\Delta^n|, Y)' align='middle' /> is a simplex in the singular set <img src='/latexrender/pictures/174fe2539889bbf873e7c2de71949074.png' title='SY' alt='SY' align='middle' />, and that as we saw above, a simplicial set is the colimit of its simplices. Thus, we get<br />
<img src='/latexrender/pictures/ce472bb63ea6d56dab770525ace7d297.png' title='\lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)\equiv\lim_{\Delta^n\to X}\hom_{\mathbf{sSet}}(\Delta^n, SY)' alt='\lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)\equiv\lim_{\Delta^n\to X}\hom_{\mathbf{sSet}}(\Delta^n, SY)' align='middle' /><br />
and then finally, we can re-introduce the colimit inside the morphism set<br />
<img src='/latexrender/pictures/979ab360581c389222d17f83706c9b17.png' title='\lim_{\Delta^n\to X}\hom_{\mathbf{S}}(\Delta^n, SY) = \hom_{\mathbf{sSet}}(\colim_{\Delta^n\to X}\Delta^n, SY)' alt='\lim_{\Delta^n\to X}\hom_{\mathbf{S}}(\Delta^n, SY) = \hom_{\mathbf{sSet}}(\colim_{\Delta^n\to X}\Delta^n, SY)' align='middle' /><br />
<img src='/latexrender/pictures/ca04e26adc82c4a654facdd3dbee3645.png' title=' = \hom_{\mathbf{sSet}}(X,SY)' alt=' = \hom_{\mathbf{sSet}}(X,SY)' align='middle' /></p>
<p>Each step along the way is natural, which finishes the proof.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2011/03/geometric-realization-of-simplicial-sets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Species, derivatives of types and Gröbner bases for operads</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/12/species-derivatives-of-types-and-grobner-bases-for-operads/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/12/species-derivatives-of-types-and-grobner-bases-for-operads/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 01:05:30 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Category theory]]></category>
		<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Operads and PROPs]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=270</guid>
		<description><![CDATA[This is a typed up copy of my lecture notes from the combinatorics seminar at KTH, 2010-09-01. This is not a perfect copy of what was said at the seminar, rather a starting point from which the talk grew. In some points, I&#8217;ve tried to fill in the most sketchy and un-articulated points with some [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a typed up copy of my lecture notes from the combinatorics seminar at KTH, 2010-09-01. This is not a perfect copy of what was said at the seminar, rather a starting point from which the talk grew.</p>
<p>In some points, I&#8217;ve tried to fill in the most sketchy and un-articulated points with some simile of what I ended up actually saying.<br />
</em></p>
<p>Combinatorial species started out as a theory to deal with enumerative combinatorics, by providing a toolset &#038; calculus for formal power series. (see Bergeron-Labelle-Leroux and Joyal)</p>
<p>As it turns out, not only is species useful for manipulating generating functions, btu it provides this with a categorical approach that may be transplanted into other areas.</p>
<p>For the benefit of the entire audience, I shall introduce some definitions.</p>
<p><strong>Definition</strong>: A <em>category</em> C is a collection of <em>objects</em> and <em>arrows</em> with each arrow assigned a <em>source</em> and <em>target</em> object, such that </p>
<ol>
<li>Each object has its own <em>identity arrow</em> 1.</li>
<li>Chains of arrows are associatively <em>composable</em>, with 1 the identity of this composition.</li>
</ol>
<p><strong>Examples</strong>: Sets, Finite sets, k-Vector spaces, left and right R-Modules, Graphs, Groups, Abelian groups.</p>
<p><img src='/latexrender/pictures/e19c41413e1b974679b02bd79d5d494c.png' title='\mathbb B' alt='\mathbb B' align='middle' />: finite sets with only bijections as morphisms.</p>
<p><strong>Examples</strong>: </p>
<ul>
<li>Category of a monoid.</li>
<li>Category generated by a graph</li>
<li>Category of a group (groupoid version of the category of a monoid)</li>
<li>Category of a poset</li>
<li>Category of Haskell types and functions.</li>
</ul>
<p><strong>Definition</strong>: A <em>functor</em> F is a map of categories, in other words, a pair of maps Fo on objects and Fa on arrows, such that the identity arrow maps to identity arrows and compositions of maps map to compositions of their images.</p>
<p><strong>Examples</strong>:<br />
Constant functor: sends every object to A, every map to 1.</p>
<p>Identity functor: sends objects and arrows to themselves.</p>
<p>Underlying set functor, free monoid/vector space/module/&#8230; functors.</p>
<p>We are now equipped to define Species:<br />
<strong>Definition</strong>: A <em>species of structures</em> is a functor <img src='/latexrender/pictures/248ed9b3523a819e669addcfca0dd9e1.png' title='\mathbb B\to\mathbb B' alt='\mathbb B\to\mathbb B' align='middle' />.</p>
<p>The idea is a set gets mapped to the set of all structures labelled by the elements in the original set. A bijection on labels maps to the <em>transport of structures</em> along the relabeling. </p>
<p><strong>Examples</strong>:<br />
<img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' />: rooted trees, labels on vertices<br />
<img src='/latexrender/pictures/dfcf28d0734569a6a693bc8194de62bf.png' title='G' alt='G' align='middle' />: simple graphs, labels on vertices<br />
<img src='/latexrender/pictures/68306c3af365d0638ca6a65e96012770.png' title='Gc' alt='Gc' align='middle' />: connected simple graphs, labels on vertices.<br />
<img src='/latexrender/pictures/0cc175b9c0f1b6a831c399e269772661.png' title='a' alt='a' align='middle' />: trees, labels on vertices.<br />
<img src='/latexrender/pictures/f623e75af30e62bbd73d6df5b50bb7b5.png' title='D' alt='D' align='middle' />: directed graphs, labels on vertices<br />
<img src='/latexrender/pictures/1a13d972a2c8473f075ded6eca465169.png' title='\wp' alt='\wp' align='middle' />: subsets, <img src='/latexrender/pictures/ab03f17fcfe3bf3f9f730c032cf12151.png' title='\wp[U] = \{S: S\subseteq U\}' alt='\wp[U] = \{S: S\subseteq U\}' align='middle' />.<br />
<img src='/latexrender/pictures/87557f11575c0ad78e4e28abedc13b6e.png' title='End' alt='End' align='middle' />: endofunctions<br />
<img src='/latexrender/pictures/a7e871520a392b978d3c9e6344c4407f.png' title='Inv' alt='Inv' align='middle' />: involutions<br />
<img src='/latexrender/pictures/5dbc98dcc983a70728bd082d1a47546e.png' title='S' alt='S' align='middle' />: permutations<br />
<img src='/latexrender/pictures/0d61f8370cad1d412f80b84d143e1257.png' title='C' alt='C' align='middle' />: cycles<br />
<img src='/latexrender/pictures/d20caec3b48a1eef164cb4ca81ba2587.png' title='L' alt='L' align='middle' />: linear orders<br />
<img src='/latexrender/pictures/3a3ea00cfc35332cedf6e5e9a32e94da.png' title='E' alt='E' align='middle' />: sets: <img src='/latexrender/pictures/4784af6daa47ce1b4dc27c7f968b48a3.png' title='E[U] = \{U\}' alt='E[U] = \{U\}' align='middle' /><br />
<img src='/latexrender/pictures/e1671797c52e15f763380b45e841ec32.png' title='e' alt='e' align='middle' />: elements: <img src='/latexrender/pictures/8f19454f9794245cdbaabf2330720444.png' title='e[U] = U' alt='e[U] = U' align='middle' /><br />
<img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />: singletons: <img src='/latexrender/pictures/eedeabedbaf43a4ce7a1b347c32faf43.png' title='X[U] = U' alt='X[U] = U' align='middle' /> if <img src='/latexrender/pictures/a03dbebf1f9af1a9557fff5ace5c7534.png' title='|U|=1' alt='|U|=1' align='middle' /> and <img src='/latexrender/pictures/0118beed08546bf49c98e18e68f4e401.png' title='X[U] = \emptyset' alt='X[U] = \emptyset' align='middle' /> otherwise<br />
<img src='/latexrender/pictures/c4ca4238a0b923820dcc509a6f75849b.png' title='1' alt='1' align='middle' />: empty set: <img src='/latexrender/pictures/09f8d10bb99358b7c16cdbe36bea58a0.png' title='1[\emptyset]=\{\emptyset\}' alt='1[\emptyset]=\{\emptyset\}' align='middle' />, <img src='/latexrender/pictures/926ff03720b581dc624f4de2af07bac3.png' title='1[U] = \emptyset' alt='1[U] = \emptyset' align='middle' /> otherwise<br />
<img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />: empty species: <img src='/latexrender/pictures/e864d4557560227f5f4276edab39b730.png' title='0[U] = \emptyset' alt='0[U] = \emptyset' align='middle' />.</p>
<p>In enumerative combinatorics, the power of species resides in the association to each species a number of generating functions:</p>
<p>The generating series of a species F is the exponential formal power series<br />
<img src='/latexrender/pictures/4d16123f57c0b624af2c2edf792d1cd8.png' title='F(x) = \sum_{n=0}^\infty |F[n]|\frac{x^n}{n!}' alt='F(x) = \sum_{n=0}^\infty |F[n]|\frac{x^n}{n!}' align='middle' /><br />
where we use the convention <img src='/latexrender/pictures/aa863c04e18ac592a7560ac3e3a581b1.png' title='[n] = \{1,2,\dots,n\}' alt='[n] = \{1,2,\dots,n\}' align='middle' />, and <img src='/latexrender/pictures/e246dceb6995c5555b1eeb2d505e1708.png' title='F[n] = F[[n]]' alt='F[n] = F[[n]]' align='middle' />.<br />
Thus:<br />
<img src='/latexrender/pictures/3263ff4d9c8a689eae466290bc3052c8.png' title='L(x) = \frac{1}{1-x}' alt='L(x) = \frac{1}{1-x}' align='middle' /><br />
<img src='/latexrender/pictures/3f525bcdaa7612df493b0d76e1364151.png' title='S(x) = \frac{1}{1-x}' alt='S(x) = \frac{1}{1-x}' align='middle' /><br />
<img src='/latexrender/pictures/f77a81e173d3ac51473b37a36e4b323c.png' title='E(x) = e^x' alt='E(x) = e^x' align='middle' /><br />
<img src='/latexrender/pictures/7c5625058ffe6ddb20482fc3079c784a.png' title='e(x) = xe^x' alt='e(x) = xe^x' align='middle' /><br />
<img src='/latexrender/pictures/9063d24c51c77a8c1f84d329a2bed613.png' title='\wp(x) = e^{2x}' alt='\wp(x) = e^{2x}' align='middle' /><br />
<img src='/latexrender/pictures/38d07f869ac97a6ed1deb8574ed0953e.png' title='X(x) = x' alt='X(x) = x' align='middle' /><br />
<img src='/latexrender/pictures/da2ca5efb767fbf1d7d2b4409f3c83f0.png' title='1(x) = 1' alt='1(x) = 1' align='middle' /><br />
<img src='/latexrender/pictures/a78d5784bdd192b7dc4c1b784d719d26.png' title='0(x) = 0' alt='0(x) = 0' align='middle' /></p>
<p>There are a number other in use for combinatorics, but for my purposes, this is the one I&#8217;ll focus on.</p>
<h2>Operations on species</h2>
<p>The real power, though, emerges when we start combining species, and carry over the combinations to actions on the corresponding power series.</p>
<h3>Addition</h3>
<p>The number of ways to form either, say, a graph or a linear order on a set of labels is the sum of the numbers of ways to form either in isolation.</p>
<p>This corresponds cleanly to the coproduct in Set, and we may write F+G for the species<br />
<img src='/latexrender/pictures/d6b9d55d36e1ef2d9b3cce2ce7b09615.png' title='(F+G)[U] = F[U] + G[U]' alt='(F+G)[U] = F[U] + G[U]' align='middle' /><br />
(where the second + is the coproduct — i.e. disjoint union — of sets)</p>
<p>In the power series, we get <img src='/latexrender/pictures/66cb1c86460c5b712cc3ba8b2a0d173b.png' title='(F+G)(x) = F(x) + G(x)' alt='(F+G)(x) = F(x) + G(x)' align='middle' />.</p>
<p>Examples: We may define the species of all non-empty sets <img src='/latexrender/pictures/335d135de25fe2dbf0ccd0f20e0150e1.png' title='E_+' alt='E_+' align='middle' /> by<br />
<img src='/latexrender/pictures/d3315d79ecf2826aaf6b198de80e58d7.png' title='E = 1 + E_+' alt='E = 1 + E_+' align='middle' /><br />
This kind of functional equations is where the theory of species starts to really <em>shine</em>.</p>
<h3>Multiplication</h3>
<p>A tricoloring of a set is a subdivision of the set into three disjoint subsets covering the original set. The number of tricolorings of size n is<br />
<img src='/latexrender/pictures/2cfc95b03d7d4f37d4b7410b9361c214.png' title='\sum_{i+j+k=n} \#\text{sets of size i}\cdot\#\text{sets of size j}\cdot\#\text{sets of size k}' alt='\sum_{i+j+k=n} \#\text{sets of size i}\cdot\#\text{sets of size j}\cdot\#\text{sets of size k}' align='middle' /></p>
<p>A permutation fixes some set of points. The permutation restricted to the non-fixed points is a <em>derangement</em>. Total number of permutations on n elements is<br />
<img src='/latexrender/pictures/475edeb2b536c63ecf62bc9221c06f10.png' title='\sum_{i+j=n}\#\text{sets of size i}\cdot\#\text{derangements of size j}' alt='\sum_{i+j=n}\#\text{sets of size i}\cdot\#\text{derangements of size j}' align='middle' /></p>
<p>In both of these cases, the total generating series is a product of the component series, and we end up defining<br />
<img src='/latexrender/pictures/f05a2036cc62d20e8b6c8a7262f09461.png' title='F\cdot G[U] = \{(f,g): f\in F[U_1], g\in G[U_2], U_1\cap U_2 = \emptyset, U_1\cup U_2 = U\}' alt='F\cdot G[U] = \{(f,g): f\in F[U_1], g\in G[U_2], U_1\cap U_2 = \emptyset, U_1\cup U_2 = U\}' align='middle' /><br />
So <img src='/latexrender/pictures/25b126e16d73bffde96f15011ec62ba6.png' title='F\cdot G[U] = \sum_{U_1,U_2\text{ decompose }U} F[U_1]\times G[U_2]' alt='F\cdot G[U] = \sum_{U_1,U_2\text{ decompose }U} F[U_1]\times G[U_2]' align='middle' />.</p>
<p>Thus, tricolorings are <img src='/latexrender/pictures/77d013a0d46948384f8cd9b41535b43c.png' title='E\cdot E\cdot E' alt='E\cdot E\cdot E' align='middle' /> and permutations are <img src='/latexrender/pictures/65637937dfc1372e746af745b30dabe8.png' title='S = E\cdot Der' alt='S = E\cdot Der' align='middle' />, where the set is that of fixed points, and the derangement captures the actual action of the permutation.</p>
<h3>Composition</h3>
<p>Endofunctions of sets decompose in their actions on the points as cycles or directed trees leading in to these cycles.</p>
<p>Since a collection of disjoint cycles corresponds to a permutation, we can consider such endofunctions to be permutations decorated with rooted trees attached to points of the permutations; or even permutations of rooted trees.</p>
<p>To form such a structure on a set U, we&#8217;d first partition U into subsets, put the structure of a rooted tree on each subset, and then the structure of a permutation on the set of these subsets.</p>
<p>Thus, the number of such structures on n elements is<br />
<img src='/latexrender/pictures/335e2e52de4ab24686357d7fff2b2b15.png' title='\sum_{r\leq n}\sum_{\sum_{k=1}^n i_k = n} \#\tex{permutations on [r]}\cdot\prod_{k=1}^r\#\text{rooted trees on [i_k]}' alt='\sum_{r\leq n}\sum_{\sum_{k=1}^n i_k = n} \#\tex{permutations on [r]}\cdot\prod_{k=1}^r\#\text{rooted trees on [i_k]}' align='middle' /></p>
<p>This corresponds to the power series <img src='/latexrender/pictures/e0411f63150f22a2f99be1510b5910f0.png' title='S(A(x))' alt='S(A(x))' align='middle' />, and we write, in general, <img src='/latexrender/pictures/31029fa092055be1deacf9e244f20333.png' title='F\circ G[U]' alt='F\circ G[U]' align='middle' /> for the species of F-structures of G-structures on subsets.</p>
<p><strong>Examples</strong>:<br />
A = X·E(A)<br />
L = 1 + X·L<br />
B = 1 + X·B·B</p>
<h3>Pointing</h3>
<p>Picking out a single point in a structure on n points can be done in precisely n ways.</p>
<p>Thus the corresponding generating function will be<br />
<img src='/latexrender/pictures/149891bfc400f34cdb0f99d080acc7ef.png' title='\sum n\cdot f_n\cdot\frac{x^n}{n!}' alt='\sum n\cdot f_n\cdot\frac{x^n}{n!}' align='middle' /><br />
for f-structures with a single label distinguished.</p>
<p>Since we&#8217;re working with exponential power series, we may notice that<br />
<img src='/latexrender/pictures/c561d318629404536b769f934f360554.png' title='\frac{\partial}{\partial x} \sum f_n\frac{x^n}{n!} = \sum f_{n+1}\frac{x^n}{n!}' alt='\frac{\partial}{\partial x} \sum f_n\frac{x^n}{n!} = \sum f_{n+1}\frac{x^n}{n!}' align='middle' /><br />
and thus that derivatives are shifts.<br />
Furthermore, <img src='/latexrender/pictures/be3a9d4b57954e8b767df9234c2529b4.png' title='x\cdot\sum f_n\frac{x^n}{n!} = \sum f_n\frac{x^{n+1}}{n!} = \sum f_{n-1}n\cdot{x^n}{n!}' alt='x\cdot\sum f_n\frac{x^n}{n!} = \sum f_n\frac{x^{n+1}}{n!} = \sum f_{n-1}n\cdot{x^n}{n!}' align='middle' /><br />
so that the generating function for F-structures with a single distinguished are<br />
<img src='/latexrender/pictures/594ef9019767eed975d7e51efbddf20a.png' title='F^\bullet(x) = x\cdot\frac{\partial}{\partial x}F(x)' alt='F^\bullet(x) = x\cdot\frac{\partial}{\partial x}F(x)' align='middle' /></p>
<p>In species, this process is called pointing.</p>
<p>In functional programming, Conor McBride related this construction to Huet&#8217;s Zipper datatypes.</p>
<p>As it turns out, many of the constructions for species make eminent sense outside the category <img src='/latexrender/pictures/e19c41413e1b974679b02bd79d5d494c.png' title='\mathbb B' alt='\mathbb B' align='middle' />. In fact, species in Hask are known to programming language researchers as <em>container datatypes</em> and the whole calculus translates relatively cleanly.</p>
<p>Functional equations translate to the standard new data type definitions in Haskell.</p>
<p><strong>Examples</strong>:<br />
L = 1 + X·L<br />
<code><br />
data List a = Nil | Cons a (List a)<br />
</code></p>
<p>B = 1 + X·B·B<br />
<code><br />
data BinaryTree a = Leaf | Node (BinaryTree a) a (BinaryTree a)<br />
</code></p>
<p>A = X·E(A)<br />
<code><br />
data RootedTree a = Node a (Set (RootedTree a))<br />
</code><br />
usually, we simulate the Set here by a List. If we need for our rooted trees to be planar, we can in fact impose a Linear Order structure instead, and get something like<br />
Ap = X·L(Ap)</p>
<p>The species interpretation of <img src='/latexrender/pictures/4d6c379f66675645b3ffe28a15306857.png' title='\frac{\partial}{\partial x}' alt='\frac{\partial}{\partial x}' align='middle' /> corresponding to leaving a hole in the structure carries over cleanly, so that <img src='/latexrender/pictures/27f5948c4a69349055a73e917f5f5b6e.png' title='\frac{\partial}{\partial x}T' alt='\frac{\partial}{\partial x}T' align='middle' /> is the type of T-with-a-hole.</p>
<h2>Two derivatives of lists</h2>
<p>We can deal with  <img src='/latexrender/pictures/12b5d0430c70edf45c18de84a4609c6b.png' title='\frac{\partial}{\partial x}L' alt='\frac{\partial}{\partial x}L' align='middle' /> in two different ways:</p>
<p>1.<br />
DL = D(1+X·L) = D1 + D(X·L) = 0 + DX·L+X·DL<br />
and thus<br />
DL-X·DL = 1·L<br />
so (1-X)·DL = L<br />
and thus<br />
DL = L·1/(1-X)</p>
<p>Now, from L=1+X·L follows by a similar cavalier use of subtraction and division — which, by the way, in species theory is captured by the idea of a <em>virtual species</em>, and dealt with relatively cleanly — that<br />
L = 1+X·L<br />
so<br />
L-X·L = 1<br />
and thus<br />
(1-X)·L = 1<br />
so<br />
L = 1/(1-X)</p>
<p>Thus, we can conclude that<br />
DL = L·1/(1-X) = L·L<br />
and thus, a list with a hole is a pair of lists: the stuff before the hole and the stuff after the hole.</p>
<p>2.<br />
We could, instead of using implicit differentiation, as in 1, attack the derivation we had of<br />
L = 1/(1-X) = 1+X+X·X+X·X·X+…</p>
<p>Indeed,<br />
DL = D(1/(1-X)) = D(1+X+X·X+…) = 0+1+2X+3X·X+…<br />
which we can observe factors as<br />
= (1+X+X·X+X·X·X+…)·(1+X+X·X+X·X·X+…) = L·L</p>
<p>Or we can just use the division rule<br />
DL = D(1/(1-X)) = D(1/u)·D(1-X) = -1/(u·u)·(-1) = 1/[(1-X)·(1-X)] = L·L</p>
<h2>Gröbner bases for operads</h2>
<p>All of this becomes relevant to the implementation of Buchberger&#8217;s algorithm on shuffle operads (see Dotsenko—Khoroshkin and Dotsenko—Vejdemo-Johansson)  in the step where the S-polynomials (and thereby also the reductions) are defined. With a common multiple defined, we need some way to extend the modifications that take the initial term to the common multiple to the rest of that term.</p>
<p>For this, it turns out, that the derivative of the tree datatype used provides theoretical guarantees that only partially filled in trees of the right size, with holes the right size, can be introduced; and also provides an easy and relatively efficient algorithm for contructing the hole-y trees and later filling in the holes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/12/species-derivatives-of-types-and-grobner-bases-for-operads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Stanford] MATH 198: Category Theory and Functional Programming</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/08/stanford-math-198-category-theory-and-functional-programming/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/08/stanford-math-198-category-theory-and-functional-programming/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 06:19:27 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Category theory]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=226</guid>
		<description><![CDATA[Category theory, with an origin in algebra and topology, has found use in recent decades for computer science and logic applications. Possibly most clearly, this is seen in the design of the programming language Haskell &#8211; where the categorical paradigm suffuses the language design, and gives rise to several of the language constructs, most prominently [...]]]></description>
			<content:encoded><![CDATA[<p>Category theory, with an origin in algebra and topology, has found use in recent decades for computer science and logic applications. Possibly most clearly, this is seen in the design of the programming language Haskell &#8211; where the categorical paradigm suffuses the language design, and gives rise to several of the language constructs, most prominently the Monad.</p>
<p>In this course, we will teach category theory from first principles with an eye towards its applications to and correspondences with Haskell and the theory of functional programming. We expect students to previously or currently be taking CS242 and to have some level of mathematical maturity. We also expect students to have had contact with linear algebra and discrete mathematics in order to follow the motivating examples behind the theory expounded.</p>
<p>Wednesdays at 4.15.</p>
<p>Online notes will appear successively on the Haskell wiki on http://haskell.org/haskellwiki/User:Michiexile/MATH198</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/08/stanford-math-198-category-theory-and-functional-programming/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Soliciting advice</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/07/soliciting-advice/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/07/soliciting-advice/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 14:28:55 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Category theory]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=224</guid>
		<description><![CDATA[Dear blogosphere, come this fall, I shall be teaching. My first lecture course, ever. The subject shall be on introducing Category Theory from the bottom up, in a manner digestible for Computer Science Undergraduates who have seen Haskell and been left wanting more from that contact. And thus comes my question to you all: what [...]]]></description>
			<content:encoded><![CDATA[<p>Dear blogosphere, </p>
<p>come this fall, I shall be teaching. My first lecture course, ever.</p>
<p>The subject shall be on introducing Category Theory from the bottom up, in a manner digestible for Computer Science Undergraduates who have seen Haskell and been left wanting more from that contact.</p>
<p>And thus comes my question to you all: what would you like to see in such a course? Is there any advice you want to give me on how to make the course awesome?</p>
<p>The obvious bits are obvious. I shall have to discuss categories, functors, (co)products, (co)limits, monads, monoids, adjoints, natural transformations, the Curry-Howard isomorphism, the Hom-Tensor adjunction, categorical interpretation of data types. And all of it with explicit reference to how all these things influence Haskell, as well as plenty of mathematical examples.</p>
<p>But what ideas can you give me to make this greater than I&#8217;d make it on my own?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/07/soliciting-advice/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Gröbner bases for Operads — or what I did in my vacation</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/05/grobner-bases-for-operads-or-what-i-did-in-my-vacation/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/05/grobner-bases-for-operads-or-what-i-did-in-my-vacation/#comments</comments>
		<pubDate>Fri, 08 May 2009 17:28:57 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Operads and PROPs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=206</guid>
		<description><![CDATA[This post is to give you all a very swift and breakneck introduction to Gröbner bases; not trying to be a nice and soft introduction, but much more leading up to announcing the latest research output from me. Recall how you would run the Gaussian algorithm on a matrix. You&#8217;d take the leftmost upmost non-zero [...]]]></description>
			<content:encoded><![CDATA[<p>This post is to give you all a very swift and breakneck introduction to Gröbner bases; not trying to be a nice and soft introduction, but much more leading up to announcing the latest research output from me.</p>
<p>Recall how you would run the Gaussian algorithm on a matrix. You&#8217;d take the leftmost upmost non-zero entry, divide its row by its value, and then use that row to eliminate anything in the corresponding column.</p>
<p>Once we have the matrix on echelon form, we can then do lots of things with it. Importantly, we can use substitution using the leading terms to do equation system solving.</p>
<p>The starting point for the theory of Gröbner bases was that the same method could be used &#8211; with some modification &#8211; to produce something from a bunch of polynomials that ends up being as useful as a row-reduced echelon form.</p>
<p>Basically, the central theorem-definition of Gröbner bases (by Buchberger, named for his thesis advisor Gröbner), says that a Gröbner basis for some ideal in some polynomial ring is a bunch of generators for that ideal such that if we do polynomial division of any element of the polynomial in the ring with the generators, one after the other, until no more divisions could be performed, then what we get out of it all is uniquely determined.</p>
<p>This need not necessarily be the case, even to begin with &#8211; we could get weird loops and various kinds of bad behaviour that screws up the concept of dividing, with remainder, by a whole bunch of polynomials. Having a Gröbner basis means this is no longer a problem.</p>
<p>The important bit of the theorem is that we can GET a Gröbner basis by just iteratively trying out combinations of the generators, trying to find overlaps of the leading terms, and generating &#8220;bad examples&#8221;. Any bad example that doesn&#8217;t get completely reduced to 0 by division by the generators is also needed to complete the Gröbner basis, and by adjoining it we grow our generating set, but not the things it generates. And the method works by growing the generating set until anything we can build out of two of the generators really will reduce completely to 0.</p>
<p>And, the central theorem says, if THIS works, then reduction works in general, and we have a tool as good for solving systems of polynomial equations as the echelon form is for linear equation systems.</p>
<h2>Losing commutativity</h2>
<p>The next interesting step is to look at non-commutative polynomial rings. Here, we suddenly have a deep theoretic issue popping up. We know that the <i>word problem</i> for monoids &#8211; i.e. whether a specific string can be reduced with rewriting rules to an empty string &#8211; is unsolvable in general. It hooks up to Turing machines and the limits of theoretical computer science, but in essence we can encode problems as Gröbner basis computations for non-commutative algebras that we know cannot possibly be solved in finite time.</p>
<p>So we cannot hope for the situation to be as good as for commutative algebras. However, there is a theorem floating around &#8211; the Diamond lemma by Bergman &#8211; that says that if we DO get a Gröbner basis computation that halts in finite time, then all the good things that we had in the commutative case &#8211; such as reductions modulo the generators being well defined &#8211; hold for the things we&#8217;ve computed. In other words, the only thing that could go wrong would be that the computation of the Gröbner basis doesn&#8217;t finish in finite time.</p>
<h2>Operads</h2>
<p>Now, what I really wanted to talk about was <i>operads</i>.</p>
<p>Here, an operad is a collection {O(n) : n?1} of vector spaces with permutations attached to them. Hence, for each n, there is a map S<sub>n</sub> &larr; Hom(O(n),O(n)), or in other words, we can apply any permutation of n things to any element in the component O(n) and get something back out of it.</p>
<p>Furthermore, an operad O = {O(n)} has defined on it structure operations. These behave like the composition of multilinear functions &#8211; so we have a way of plugging one function into another:<br />
f(a1,a2,&#8230;,g(ai,&#8230;,aj),&#8230;,an)<br />
and this composition is associative, so the order we figure out some sequence of compositions doesn&#8217;t matter.</p>
<p>These gadgets show up in modern approaches to universal algebra like questions, and also all over the place in topology; some of the earliest instances were from homotopy theory. </p>
<p>Recently, Dotsenko and Khoroshkin released a paper on <a href=http://arxiv.org/abs/0812.4069>Gröbner bases for operads</a>. In the paper, they figure out a way to find the kind of canonical and ordered basis that you need in order to mimic the whole workflow of Gröbner bases above; and specified how one should go about producing a Diamond Lemma for operads. It turns out that Gröbner bases would be useful to prove operads to be Koszul &#8211; something I won&#8217;t discuss here, but which is important in the operad theory context.</p>
<p>Basically, instead of working in a polynomial ring on some set of variables, we start out with out variables in one of these graded sets {V(n)}. Then we can build rooted trees, whose internal vertices of degree n+1 are labeled by elements from V(n).</p>
<p>The vector space spanned by all such trees forms an operad where the composition operation works by taking a tree and attaching the root to the leaf numbered by whatever position we need to compose at. </p>
<p>The resulting construction is the free operad on the generating set and takes the role that the polynomial ring had in the previous examples. And what Dotsenko and Khoroshkin pointed out was that if we restrict the kinds of actions we allow from permutations on these trees somewhat, we end up with something that has exactly one representative that fits in the restricted context for each tree that occurs as a basis element of the free operad.</p>
<p>So we can impose some sort of ordering on these trees, and use them to mimic the Diamond lemma.</p>
<p>Indeed, what we end up doing is forming the overlaps between leading terms by finding trees that parts of the trees from the leading terms from pairs of operad elements can embed into, and using the resulting procedure to build the same kind of  bad cases we need to test for Buchberger&#8217;s algorithm.</p>
<p>And again, it turns out that while we may not always get an answer within finite time, if we&#8217;re lucky then the answer we DO get has all the properties we could dream of. And not only that &#8211; all the previous kinds of Gröbner bases embed as special cases of doing it this way.</p>
<p>I heard of this, and got my hands on the paper, when I first arrived in CIRM in Luminy, outside Marseille, for 2 weeks of operad theory with a master&#8217;s course and a conference on the subject. And I got so excited &#8211; once upon a time this was essentially my proposal for PhD thesis project &#8211; that I decided to sit down and code the whole thing up right away!</p>
<p>And code away I did. Once the two weeks were gone, with the valuable help from Vladimir Dotsenko and Eric Hoffbeck, I had ended up with a working implementation in Haskell of the whole paradigm. It&#8217;s now <a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Operads">available from the HackageDB</a>, and runs at least in GHC 6.8 and 6.10:</p>
<div class="dean_ch" style="white-space: wrap;">
ghci -cpp Math.Operad<br />
GHCi, version <span class="nu0">6.10</span><span class="nu0">.1</span>: http://www.haskell.org/ghc/ &nbsp;:? for help<br />
Loading package ghc-prim &#8230; linking &#8230; done.<br />
Loading package integer &#8230; linking &#8230; done.<br />
Loading package base &#8230; linking &#8230; done.<br />
<span class="br0">&#91;</span><span class="nu0">1</span> <span class="kw1">of</span> <span class="nu0">6</span><span class="br0">&#93;</span> Compiling Math.Operad.PPrint <span class="br0">&#40;</span> Math/Operad/PPrint.hs, interpreted <span class="br0">&#41;</span><br />
<span class="br0">&#91;</span><span class="nu0">2</span> <span class="kw1">of</span> <span class="nu0">6</span><span class="br0">&#93;</span> Compiling Math.Operad.OrderedTree <span class="br0">&#40;</span> Math/Operad/OrderedTree.hs, interpreted <span class="br0">&#41;</span><br />
<span class="br0">&#91;</span><span class="nu0">3</span> <span class="kw1">of</span> <span class="nu0">6</span><span class="br0">&#93;</span> Compiling Math.Operad.Map &nbsp;<span class="br0">&#40;</span> Math/Operad/Map.hs, interpreted <span class="br0">&#41;</span><br />
<span class="br0">&#91;</span><span class="nu0">4</span> <span class="kw1">of</span> <span class="nu0">6</span><span class="br0">&#93;</span> Compiling Math.Operad.MapOperad <span class="br0">&#40;</span> Math/Operad/MapOperad.hs, interpreted <span class="br0">&#41;</span><br />
<span class="br0">&#91;</span><span class="nu0">5</span> <span class="kw1">of</span> <span class="nu0">6</span><span class="br0">&#93;</span> Compiling Math.Operad.OperadGB <span class="br0">&#40;</span> Math/Operad/OperadGB.hs, interpreted <span class="br0">&#41;</span><br />
<span class="br0">&#91;</span><span class="nu0">6</span> <span class="kw1">of</span> <span class="nu0">6</span><span class="br0">&#93;</span> Compiling Math.Operad &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span> Math/Operad.hs, interpreted <span class="br0">&#41;</span><br />
Ok, modules loaded: Math.Operad, Math.Operad.OperadGB, Math.Operad.OrderedTree, Math.Operad.PPrint, Math.Operad.MapOperad, Math.Operad.Map.</p>
<p>*Math.Operad&gt; <span class="kw1">let</span> v = corolla <span class="nu0">2</span> <span class="br0">&#91;</span><span class="nu0">1</span>,<span class="nu0">2</span><span class="br0">&#93;</span><br />
Loading package mtl<span class="nu0">-1.1</span><span class="nu0">.0</span><span class="nu0">.2</span> &#8230; linking &#8230; done.<br />
*Math.Operad&gt; <span class="kw1">let</span> g1t1 = nsCompose <span class="nu0">1</span> v v <br />
Loading package syb &#8230; linking &#8230; done.<br />
Loading package array<span class="nu0">-0.2</span><span class="nu0">.0</span><span class="nu0">.0</span> &#8230; linking &#8230; done.<br />
Loading package containers<span class="nu0">-0.2</span><span class="nu0">.0</span><span class="nu0">.0</span> &#8230; linking &#8230; done.<br />
*Math.Operad&gt; <span class="kw1">let</span> g1t2 = nsCompose <span class="nu0">2</span> v v<br />
*Math.Operad&gt; <span class="kw1">let</span> g2t2 = shuffleCompose <span class="nu0">1</span> <span class="br0">&#91;</span><span class="nu0">1</span>,<span class="nu0">3</span>,<span class="nu0">2</span><span class="br0">&#93;</span> v v<br />
*Math.Operad&gt; <span class="kw1">let</span> g1 = <span class="br0">&#40;</span>oet g1t1<span class="br0">&#41;</span> + <span class="br0">&#40;</span>oet g1t2<span class="br0">&#41;</span> :: FreeOperad <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Integer"><span class="kw4">Integer</span></a><br />
*Math.Operad&gt; <span class="kw1">let</span> g2 = <span class="br0">&#40;</span>oet g2t2<span class="br0">&#41;</span> &#8211; <span class="br0">&#40;</span>oet g1t2<span class="br0">&#41;</span> :: FreeOperad <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Integer"><span class="kw4">Integer</span></a><br />
*Math.Operad&gt; <span class="kw1">let</span> ac = <span class="br0">&#91;</span>g1,g2<span class="br0">&#93;</span><br />
*Math.Operad&gt; :set +s<br />
*Math.Operad&gt; <span class="kw1">let</span> acGB = operadicBuchberger ac<br />
<span class="br0">&#40;</span><span class="nu0">0.00</span> secs, <span class="nu0">524996</span> bytes<span class="br0">&#41;</span><br />
*Math.Operad&gt; pP acGB<br />
<span class="br0">&#91;</span><br />
<span class="nu0">+1</span> % <span class="nu0">1</span>*m2<span class="br0">&#40;</span><span class="nu0">1</span>,m2<span class="br0">&#40;</span><span class="nu0">2</span>,m2<span class="br0">&#40;</span><span class="nu0">3</span>,<span class="nu0">4</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>,</p>
<p><span class="nu0">+1</span> % <span class="nu0">1</span>*m2<span class="br0">&#40;</span>m2<span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">2</span><span class="br0">&#41;</span>,<span class="nu0">3</span><span class="br0">&#41;</span><br />
<span class="nu0">+1</span> % <span class="nu0">1</span>*m2<span class="br0">&#40;</span><span class="nu0">1</span>,m2<span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span>,</p>
<p><span class="nu0">+1</span> % <span class="nu0">1</span>*m2<span class="br0">&#40;</span>m2<span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">3</span><span class="br0">&#41;</span>,<span class="nu0">2</span><span class="br0">&#41;</span><br />
+<span class="br0">&#40;</span><span class="nu0">-1</span><span class="br0">&#41;</span> % <span class="nu0">1</span>*m2<span class="br0">&#40;</span><span class="nu0">1</span>,m2<span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><br />
<span class="br0">&#40;</span><span class="nu0">0.41</span> secs, <span class="nu0">55184352</span> bytes<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>And we see here that with the particular set of generators given, namely using m2 as the variable, and for a generating set, we pick<br />
m2(m2(x1,x2),x3) + m2(x1,m2(x2,x3))<br />
and<br />
m2(m2(x1,x3),x2) &#8211; m2(x1,m2(x2,x3))</p>
<p>we get a Gröbner basis almost instantly containing additionally the generator<br />
m2(x1,m2(x2,m2(x3,x4)))</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/05/grobner-bases-for-operads-or-what-i-did-in-my-vacation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Homological Inclusion-Exclusion and the Mayer-Vietoris sequence</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/01/homological-inclusion-exclusion-and-the-mayer-vietoris-sequence/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/01/homological-inclusion-exclusion-and-the-mayer-vietoris-sequence/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 21:44:11 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=190</guid>
		<description><![CDATA[This blogpost is inspired to a large part by comments made by Rob Ghrist, in connection to his talks on using the Euler characteristic integration theory to count targets detected by sensor networks. He pointed out that the underlying principle inducing the rule goes under many names, among those \emph{Inclusion-Exclusion}, favoured among computer scientists (and [...]]]></description>
			<content:encoded><![CDATA[<p>This blogpost is inspired to a large part by comments made by Rob Ghrist, in connection to his talks on using the Euler characteristic integration theory to count targets detected by sensor networks.</p>
<p>He pointed out that the underlying principle inducing the rule<br />
<img src='/latexrender/pictures/e64c58c3ef4aebdfc73fb2fd219b9807.png' title='\chi(A\cup B) = \chi(A)+\chi(B)-\chi(A\cap B)' alt='\chi(A\cup B) = \chi(A)+\chi(B)-\chi(A\cap B)' align='middle' /><br />
goes under many names, among those \emph{Inclusion-Exclusion}, favoured among computer scientists (and combinatoricists). He also pointed out that the origin of this principle is the Mayer-Vietoris long exact sequence<br />
<img src='/latexrender/pictures/0bb06b6958e28c2e547fffda1436bfa5.png' title='\cdots\to H_{n}(A\cap B)\to H_{n}(A)\oplus H_{n}(B)\to H_{n}(A\cup b)\to\cdots' alt='\cdots\to H_{n}(A\cap B)\to H_{n}(A)\oplus H_{n}(B)\to H_{n}(A\cup b)\to\cdots' align='middle' /></p>
<p>In this blog post, I&#8217;d like to give more meat to this assertion as well as point out how the general principle of Inclusion-Exclusion for finite sets follows immediately from Mayer-Vietoris. </p>
<h2>Inclusion-Exclusion, and the passage from two sets to many</h2>
<p>The basic principle of Inclusion-Exclusion says that if we have two sets, <img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' /> and <img src='/latexrender/pictures/9d5ed678fe57bcca610140957afab571.png' title='B' alt='B' align='middle' />, then the following relationship of cardinalities holds:<br />
<img src='/latexrender/pictures/af5188fb6546392a153da31471c666d8.png' title='|A\cup B| = |A| + |B| &amp;#8211; |A\cap B' alt='|A\cup B| = |A| + |B| &amp;#8211; |A\cap B' align='middle' /></p>
<p>A first proof would be performed by referring to an appropriate Venn<br />
diagram, or by pointing out that if we try to count all the elements<br />
of <img src='/latexrender/pictures/fee055b62470bc8713ed312fb67bbc55.png' title='A\cup B' alt='A\cup B' align='middle' /> by adding the counts for <img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' /> and <img src='/latexrender/pictures/9d5ed678fe57bcca610140957afab571.png' title='B' alt='B' align='middle' />, then we&#8217;ve overcounted the elements of <img src='/latexrender/pictures/fbd0dfa8f015d48acfe4570aa6babc6a.png' title='A\cap B' alt='A\cap B' align='middle' />, and thus need to subtract these.</p>
<p>Now, this is good and convincing for the situation where we have just two sets, but what if we had a whole family? What if we had <img src='/latexrender/pictures/a0cec6d1fbf031bcb86832e4624178bc.png' title='A_{1},\dots,A_{n}' alt='A_{1},\dots,A_{n}' align='middle' />? Well, our old friend the complete induction rides to our rescue. Suppose we had already proven that for <img src='/latexrender/pictures/a438673491daae8148eae77373b6a467.png' title='n-1' alt='n-1' align='middle' /> sets <img src='/latexrender/pictures/e8aaf87d9a5c35b14cfbc370d3fd7b21.png' title='A_{i}' alt='A_{i}' align='middle' />, the following formula holds:<br />
<img src='/latexrender/pictures/557f8c0625c4d5558249ea779ed211ae.png' title='\left|\bigcup_{i\in\{1,\dots,n-1\}} A_{i}\right| =&#10;  \sum_{k=1}^{n-1} (-1)^{1+k}\sum_{S\subseteq\{1,\dots,n-1\}, |S|=k}\left|\bigcap_{s\in S} A_{s}\right|' alt='\left|\bigcup_{i\in\{1,\dots,n-1\}} A_{i}\right| =&#10;  \sum_{k=1}^{n-1} (-1)^{1+k}\sum_{S\subseteq\{1,\dots,n-1\}, |S|=k}\left|\bigcap_{s\in S} A_{s}\right|' align='middle' /></p>
<p>If you think this formula is imposing, let me show you the first few ways it works out, so that you can get a feeling for it:</p>
<p><img src='/latexrender/pictures/3b8f5222fb5946404ebade7ee33c177a.png' title='|A_{1}\cup A_{2}| = |A_{1}| + |A_{2}| &amp;#8211; |A_{1}\cap A_{2}' alt='|A_{1}\cup A_{2}| = |A_{1}| + |A_{2}| &amp;#8211; |A_{1}\cap A_{2}' align='middle' /></p>
<p><img src='/latexrender/pictures/1b1dbf1d326d1f9771002c4d4463aaf1.png' title='&#10;\begin{multline*}&#10;|A_{1}\cup A_{2}\cup A_{3}| = \\&#10;|A_{1}|+|A_{2}|+|A_{3}|-|A_{1}\cap A_{2}|-|A_{1}\cap A_{3}|-|A_{2}\cap A_{3}|+\\&#10;|A_{1}\cap A_{2}\cap A_{3}|&#10;\end{multline*}' alt='&#10;\begin{multline*}&#10;|A_{1}\cup A_{2}\cup A_{3}| = \\&#10;|A_{1}|+|A_{2}|+|A_{3}|-|A_{1}\cap A_{2}|-|A_{1}\cap A_{3}|-|A_{2}\cap A_{3}|+\\&#10;|A_{1}\cap A_{2}\cap A_{3}|&#10;\end{multline*}' align='middle' /></p>
<p>Here it starts becoming apparent why it is called the Inclusion-Exclusion formula: we include all elements from all sets, but then we&#8217;ve gotten too many elements from the pairwise intersections, so we exclude those, but then we&#8217;ve gotten too few elements from the triple intersections, so we re-include those, but then we&#8217;ve gotten too few elements from the quadruple intersections &#8211; and on it goes.</p>
<p>If our assumption holds, we can consider what the appropriate size of the union of <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' /> different sets should be. We can pick one set, say <img src='/latexrender/pictures/5614f2f428505eeff293fcebfdc6c8c3.png' title='A_{n}' alt='A_{n}' align='middle' />, and treat it separately. Then, certainly, the union of the rest has size given by the formula, by our induction assumption. So, consider what happens when we add in the elements in <img src='/latexrender/pictures/5614f2f428505eeff293fcebfdc6c8c3.png' title='A_{n}' alt='A_{n}' align='middle' />. We then overcount all elements in any of the intersections <img src='/latexrender/pictures/011b208bf375db0da47a055ec1d3a69e.png' title='A_{i}\cap A_{n}' alt='A_{i}\cap A_{n}' align='middle' />, so we have to subtract those. But we then have undercounted all elements in any intersection on the form <img src='/latexrender/pictures/37654875ccd47b0f8ea7063ab5a73eec.png' title='A_{i}\cap A_{j}\cap A_{n}' alt='A_{i}\cap A_{j}\cap A_{n}' align='middle' />, so we need to add those back in. And so we go on, and for each intersection that occurred in the formula for <img src='/latexrender/pictures/a438673491daae8148eae77373b6a467.png' title='n-1' alt='n-1' align='middle' /> sets, we find ourselves forced to add one new term, of the opposite sign, that counts the intersection of that old term with <img src='/latexrender/pictures/5614f2f428505eeff293fcebfdc6c8c3.png' title='A_{n}' alt='A_{n}' align='middle' />.</p>
<p>Thus, the new formula takes on the exact guise of the general formula we wanted to prove, since the terms involving <img src='/latexrender/pictures/5614f2f428505eeff293fcebfdc6c8c3.png' title='A_{n}' alt='A_{n}' align='middle' /> are precisely indexed, in that formula, by the terms excluding <img src='/latexrender/pictures/5614f2f428505eeff293fcebfdc6c8c3.png' title='A_{n}' alt='A_{n}' align='middle' />, but with opposite signs.</p>
<h2>Encoding set sizes homologically</h2>
<p>So, now that we know that pairwise Inclusion-Exclusion implies the general Inclusion-Exclusion, let us take a look on how we can express Inclusion-Exclusion with homology. We note first of all that <img src='/latexrender/pictures/012630d87ec5c11ab3069799ff9fe922.png' title='H_{0}(X)' alt='H_{0}(X)' align='middle' /> counts the number of path-connected components of a space <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />. This follows easily from a few properties. First, a basis for the <img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />-chains of <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is given by the points in <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />. Second, two <img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />-chains are homologous precisely if there is a <img src='/latexrender/pictures/c4ca4238a0b923820dcc509a6f75849b.png' title='1' alt='1' align='middle' />-chain whose boundary is the difference between those <img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />-chains. The boundary of a path is the difference of its endpoints, so we end up with two basis elements being homologous precisely if there is a path connecting them.</p>
<p>Thus, two <img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />-chain elements are homologous precisely if they&#8217;re in the same path-component of <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />. So, the homology classes of <img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />-chains are precisely the path-connected components.</p>
<p>So, the <img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />-degree homology classes count path-components. How do we use that? Well &#8230; if we consider a finite set <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> with the discrete topology &#8211; i.e. open sets are single points and any unions of single point sets, then a path is a continuous function <img src='/latexrender/pictures/e48a9c10cd61b98b008603460fe919a3.png' title='[0,1]\to X' alt='[0,1]\to X' align='middle' />, i.e. one where the preimage of any open set is open. Thus, the preimage of any point is an open set. Suppose a path contains more than one point. Then we can partition the interval <img src='/latexrender/pictures/ccfcd347d0bf65dc77afe01a3306a96b.png' title='[0,1]' alt='[0,1]' align='middle' /> into two disjoint open sets, by taking one set to be the preimage of one of the points, and the other set to be the preimage of everything else. However, the interval <img src='/latexrender/pictures/ccfcd347d0bf65dc77afe01a3306a96b.png' title='[0,1]' alt='[0,1]' align='middle' /> is connected, which means that if there are two such open sets, one of them has to be empty.</p>
<p>Thus, the path-connected components of a discrete topological space are the points themselves. So if <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is discrete, then <img src='/latexrender/pictures/a7c0ab18fa068ec66e23f17b5706dfa5.png' title='H_{0}(X) = |X|' alt='H_{0}(X) = |X|' align='middle' />.</p>
<h2>Long exact sequences in homology and the Mayer-Vietoris sequence</h2>
<p>It is a theorem from homological algebra that if we have a short exact sequence of chain complexes<br />
<img src='/latexrender/pictures/fcc15bb34b9d447ec682f6bfddbe16c2.png' title='0\to A_{*}\to B_{*}\to C_{*}\to 0' alt='0\to A_{*}\to B_{*}\to C_{*}\to 0' align='middle' /><br />
then there is a long exact sequence in homology given by<br />
<img src='/latexrender/pictures/0566ac2b782b671659e7ac70ee4db10c.png' title='\cdots\to H_{n}(A_{*})\to H_{n}(B_{*})\to H_{n}(C_{*})\to H_{n-1}(A_{*})\to\cdots' alt='\cdots\to H_{n}(A_{*})\to H_{n}(B_{*})\to H_{n}(C_{*})\to H_{n-1}(A_{*})\to\cdots' align='middle' /></p>
<p>Almost all interesting long exact sequences in topology are special cases of this particular fact. We will derive one interesting sequence: the Mayer-Vietoris sequence from this.</p>
<p>Take a topological space <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />. The singular chain complex <img src='/latexrender/pictures/c0c4fa721f58794a2efb9162c3bf7884.png' title='C_{*}(X)' alt='C_{*}(X)' align='middle' /> forms a chain complex with <img src='/latexrender/pictures/0d8f63cd9223629945a7cb4b65d3e9fe.png' title='C_{n}(X)' alt='C_{n}(X)' align='middle' /> the free abelian group of <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chains and the differential given by the usual formula.</p>
<p>Suppose we have two spaces: <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> and <img src='/latexrender/pictures/57cec4137b614c87cb4e24a3d003a3e0.png' title='Y' alt='Y' align='middle' />. Then any <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/f810846cb95904b01a9821200c889064.png' title='X\cap Y' alt='X\cap Y' align='middle' /> is an <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> and an <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/57cec4137b614c87cb4e24a3d003a3e0.png' title='Y' alt='Y' align='middle' />. So we get an inclusion map <img src='/latexrender/pictures/ce63e1eea798844c993ea0cbefcd9632.png' title='C_{n}(X\cap Y)\to C_{n}(X)\oplus C_{n}(Y)' alt='C_{n}(X\cap Y)\to C_{n}(X)\oplus C_{n}(Y)' align='middle' /> by <img src='/latexrender/pictures/5ddc1ea1d0d7dcb22b10ecc1490dd4e4.png' title='\sigma\mapsto(\sigma,-\sigma)' alt='\sigma\mapsto(\sigma,-\sigma)' align='middle' />. We choose this sign instead of the image <img src='/latexrender/pictures/20aa3868aa5cbc38f70798c4b2361b2e.png' title='(\sigma,\sigma)' alt='(\sigma,\sigma)' align='middle' /> to make the next step cleaner. It is an injection because <img src='/latexrender/pictures/849f9df2d516521b9163ae28c1fbc16a.png' title='C_{n}' alt='C_{n}' align='middle' /> is a free abelian group, and the injections<br />
<img src='/latexrender/pictures/4e8b60820645ced2a21f47c9abf83d63.png' title='X\leftarrow X\cap Y\rightarrow Y' alt='X\leftarrow X\cap Y\rightarrow Y' align='middle' /> are set maps on bases for the corresponding chain groups.</p>
<p>Compatibility of this map with the differential is almost as easy. If we first apply the differential and then map into the direct sum, we get the map <img src='/latexrender/pictures/4b62753180220831f7158c266eaaafbe.png' title='\sigma\mapsto d\sigma\mapsto(d\sigma,-d\sigma)' alt='\sigma\mapsto d\sigma\mapsto(d\sigma,-d\sigma)' align='middle' />. If we instead first map into the direct sum, and then apply the differentials, we get the map <img src='/latexrender/pictures/7dd5af33034b42129f86640e0cb4312e.png' title='\sigma\mapsto(\sigma,-\sigma)\mapsto(d\sigma,-d\sigma)' alt='\sigma\mapsto(\sigma,-\sigma)\mapsto(d\sigma,-d\sigma)' align='middle' />. These are equal, and thus the map we&#8217;ve constructed is a chain map.</p>
<p>So, <img src='/latexrender/pictures/6e4fef0edf674f59d4927e3aaf60c6af.png' title='C_{*}(X\cap Y)\to C_{*}(X)\oplus C_{*}(Y)' alt='C_{*}(X\cap Y)\to C_{*}(X)\oplus C_{*}(Y)' align='middle' /> is an injective map of chain complexes.</p>
<p>If we now have a pair of chains, we can construct a chain on the union of the two spaces. An <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is automatically an <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/74da4429354a80f686996145d3a74c2c.png' title='X\cup Y' alt='X\cup Y' align='middle' />. Similarly, an <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/57cec4137b614c87cb4e24a3d003a3e0.png' title='Y' alt='Y' align='middle' /> is automatically  an <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain on <img src='/latexrender/pictures/74da4429354a80f686996145d3a74c2c.png' title='X\cup Y' alt='X\cup Y' align='middle' />. So both <img src='/latexrender/pictures/0d8f63cd9223629945a7cb4b65d3e9fe.png' title='C_{n}(X)' alt='C_{n}(X)' align='middle' /> and <img src='/latexrender/pictures/701020ddc65f2588d3267a2ecd75a876.png' title='C_{n}(Y)' alt='C_{n}(Y)' align='middle' /> inject into <img src='/latexrender/pictures/ce96f93d04d882421dfb0753c604d4a2.png' title='C_{n}(X\cup Y)' alt='C_{n}(X\cup Y)' align='middle' /> by the same kind of argument as with the injection <img src='/latexrender/pictures/f747507d08b3a5a472c04429a44f7fd6.png' title='C_{n}(X\cap Y)\to C_{n}(X)' alt='C_{n}(X\cap Y)\to C_{n}(X)' align='middle' />.</p>
<p>The injections we get this way can be put together to a map <img src='/latexrender/pictures/c56630944416e05c8a73877c605ff177.png' title='C_{n}(X)\oplus C_{n}(Y)\to C_{n}(X\cup Y)' alt='C_{n}(X)\oplus C_{n}(Y)\to C_{n}(X\cup Y)' align='middle' /> by, for instance, <img src='/latexrender/pictures/637d0425ff4ca9ff1d371c5c1a186294.png' title='(\sigma,\tau)\mapsto\sigma+\tau' alt='(\sigma,\tau)\mapsto\sigma+\tau' align='middle' />. I am going to fudge over the issue of whether the <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chains on <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> and <img src='/latexrender/pictures/57cec4137b614c87cb4e24a3d003a3e0.png' title='Y' alt='Y' align='middle' /> form a generating set for the <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chains on <img src='/latexrender/pictures/74da4429354a80f686996145d3a74c2c.png' title='X\cup Y' alt='X\cup Y' align='middle' />, and just take it on faith that this works. The details are not particularly difficult &#8211; they are just obnoxiously long and annoying.</p>
<p>Now, given that we believe we can get a generating set by taking the union of the bases for the <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chains on <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> and <img src='/latexrender/pictures/57cec4137b614c87cb4e24a3d003a3e0.png' title='Y' alt='Y' align='middle' />, then this means that the map I gave above is surjective. Indeed, a basis element <img src='/latexrender/pictures/68b431d27bfa431ca29baf113c7a35a0.png' title='\sigma\in C_{n}(X)' alt='\sigma\in C_{n}(X)' align='middle' /> is hit by the element <img src='/latexrender/pictures/2d4c37021a6e194a3f4640f578a7c5aa.png' title='(\sigma,0)' alt='(\sigma,0)' align='middle' />, and a basis element <img src='/latexrender/pictures/c5dd47b8c1e8776a2e08593b5bc3b41e.png' title='\tau\in C_{n}(Y)' alt='\tau\in C_{n}(Y)' align='middle' /> is hit by the element <img src='/latexrender/pictures/e084be986d67b55fdef20c2d547f0be7.png' title='(0,\tau)' alt='(0,\tau)' align='middle' />.</p>
<p>This argument proves exactness at the first and last term of the short exact sequence<br />
<img src='/latexrender/pictures/50c77078f0db9d158a2a9da90ab774fb.png' title='0\to C_{*}(X\cap Y)\to C_{*}(X)\oplus C_{*}(Y)\to C_{n}(X\cup Y)\to 0' alt='0\to C_{*}(X\cap Y)\to C_{*}(X)\oplus C_{*}(Y)\to C_{n}(X\cup Y)\to 0' align='middle' /><br />
and it remains to prove exactness at the middle term. So we need to prove that<br />
<img src='/latexrender/pictures/c59f9a5e9e485d58b9f79904b0c4756b.png' title='\mathrm{ker}((\sigma,\tau)\mapsto\sigma+\tau) = \mathrm{im}(\sigma\mapsto(\sigma,-\sigma))' alt='\mathrm{ker}((\sigma,\tau)\mapsto\sigma+\tau) = \mathrm{im}(\sigma\mapsto(\sigma,-\sigma))' align='middle' /></p>
<p>Now, since <img src='/latexrender/pictures/b7831e651048c5a529162d5eb1886e66.png' title='\sigma+(-\sigma)=0' alt='\sigma+(-\sigma)=0' align='middle' />, the inclusion of the image in the kernel is obvious. So, suppose now that <img src='/latexrender/pictures/68b431d27bfa431ca29baf113c7a35a0.png' title='\sigma\in C_{n}(X)' alt='\sigma\in C_{n}(X)' align='middle' />, <img src='/latexrender/pictures/c5dd47b8c1e8776a2e08593b5bc3b41e.png' title='\tau\in C_{n}(Y)' alt='\tau\in C_{n}(Y)' align='middle' /> and <img src='/latexrender/pictures/fb6e49de619884e88aa5a9a6a711603e.png' title='\sigma+\tau=0' alt='\sigma+\tau=0' align='middle' />. Then, in <img src='/latexrender/pictures/ce96f93d04d882421dfb0753c604d4a2.png' title='C_{n}(X\cup Y)' alt='C_{n}(X\cup Y)' align='middle' />, we know that <img src='/latexrender/pictures/db8f83aedba65cc0ad5fede28348e2a9.png' title='\sigma=-\tau' alt='\sigma=-\tau' align='middle' />. But then, <img src='/latexrender/pictures/37c6598aec87cd1258aec820908e589a.png' title='\tau\in C_{n}(X)' alt='\tau\in C_{n}(X)' align='middle' /> since <img src='/latexrender/pictures/68b431d27bfa431ca29baf113c7a35a0.png' title='\sigma\in C_{n}(X)' alt='\sigma\in C_{n}(X)' align='middle' /> and similarly <img src='/latexrender/pictures/64560422992fae5541193215c27c308c.png' title='\sigma\in C_{n}&#10;(Y)' alt='\sigma\in C_{n}&#10;(Y)' align='middle' /> since <img src='/latexrender/pictures/c5dd47b8c1e8776a2e08593b5bc3b41e.png' title='\tau\in C_{n}(Y)' alt='\tau\in C_{n}(Y)' align='middle' />. So <img src='/latexrender/pictures/87dce9fd1530b806d90388cfe19e8404.png' title='\sigma,\tau\in C_{n}(X\cap Y)' alt='\sigma,\tau\in C_{n}(X\cap Y)' align='middle' /> and <img src='/latexrender/pictures/e31793bc1e2403afa614344619a9a66c.png' title='\tau=-\sigma' alt='\tau=-\sigma' align='middle' />. But then this kernel element really is in the image of the inclusion we gave.</p>
<p>So this is a short exact sequence of chain complexes. It follows from the theorem of long exact sequences in homology that there is an associated long exact sequence, called the Mayer-Vietoris sequence:<br />
<img src='/latexrender/pictures/8534990940af867f6b79cf0dfdae7bb4.png' title='\cdots\to H_{n}(X\cap Y)\to H_{n}(X)\oplus H_{n}(Y)\to H_{n}(X\cup Y)\to H_{n-1}(X\cap Y)\to\cdots' alt='\cdots\to H_{n}(X\cap Y)\to H_{n}(X)\oplus H_{n}(Y)\to H_{n}(X\cup Y)\to H_{n-1}(X\cap Y)\to\cdots' align='middle' /></p>
<h2>Putting it all together</h2>
<p>Suppose <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is a discrete topological space. Then any continuous map from a <img src='/latexrender/pictures/8ce4b16b22b58894aa86c421e8759df3.png' title='k' alt='k' align='middle' />-simplex <img src='/latexrender/pictures/d2aff78b805f992d84d56d587de5c32c.png' title='\Delta^{k}' alt='\Delta^{k}' align='middle' /> to <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is by necessity constant at one point. So all the singular simplices in <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> are constant maps, and thus a basis for any <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />-chain group is given by just the points in <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> as such. The differential acts on such a constant map by sending it to an alternating sum of identical maps the cardinality of which is one more than the dimension of the simplex. So the differential vanishes at every other point in the chain complex, and is an isomorphism on the rest. But then we have exactly two possibilities for a homology computation:</p>
<p>Case 1: <img src='/latexrender/pictures/fbcc438086d71e0761c752136d0962ec.png' title='C_{n}(X)\overset1\to C_{n-1}(X)\overset0\to C_{n-2}(X)' alt='C_{n}(X)\overset1\to C_{n-1}(X)\overset0\to C_{n-2}(X)' align='middle' /></p>
<p>Here, the kernel is the entire chain group. But so is the image. Thus the homology group is trivial.</p>
<p>Case 2: <img src='/latexrender/pictures/e1d445aa168cf1ab5ae39120ad89971a.png' title='C_{n}(X)\overset0\to C_{n-1}(X)\overset1\to C_{n-2}(X)' alt='C_{n}(X)\overset0\to C_{n-1}(X)\overset1\to C_{n-2}(X)' align='middle' /></p>
<p>Here, the kernel is trivial, but then again, so is the image. Thus, again, so is the homology group.</p>
<p>The only part not really covered by this is the homology group <img src='/latexrender/pictures/012630d87ec5c11ab3069799ff9fe922.png' title='H_{0}(X)' alt='H_{0}(X)' align='middle' />, since this is computed from a diagram on the shape <img src='/latexrender/pictures/720f1bfea9e6828c429c4a06020527df.png' title='C_{1}(X)\overset0\to C_{0}(X)\to0' alt='C_{1}(X)\overset0\to C_{0}(X)\to0' align='middle' />. So <img src='/latexrender/pictures/012630d87ec5c11ab3069799ff9fe922.png' title='H_{0}(X)' alt='H_{0}(X)' align='middle' /> behaves like we showed above, and is the only non-trivial homology group of the discrete space.</p>
<p>But then, the only bit that remains non-zero in the Mayer-Vietoris sequence is<br />
<img src='/latexrender/pictures/1cdccbaacf3c4f8d8c1370f99a757efe.png' title='0\to H_{0}(X\cap Y)\to H_{0}(X)\oplus H_{0}(Y)\to H_{0}(X\cup Y)\to 0' alt='0\to H_{0}(X\cap Y)\to H_{0}(X)\oplus H_{0}(Y)\to H_{0}(X\cup Y)\to 0' align='middle' /></p>
<p>If we have a short exact sequence of free abelian groups, then this relates the number of basis elements in each of the groups with the structure of the sequence. Let our short exact sequence be given by <img src='/latexrender/pictures/f00d8510a6c2e9b80cb8601acb59ccbe.png' title='0\to A\to B\to C\to 0' alt='0\to A\to B\to C\to 0' align='middle' />. then, by injectivity of the map <img src='/latexrender/pictures/bd2d818ae16cdb1206ab9f554b45bad8.png' title='A\to B' alt='A\to B' align='middle' />, the cardinality of a basis of the image in <img src='/latexrender/pictures/9d5ed678fe57bcca610140957afab571.png' title='B' alt='B' align='middle' /> is equal to the cardinality of a basis for <img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' />. By surjectivity of the map <img src='/latexrender/pictures/d6499025e76dbf1f6965fdbc360eea2c.png' title='B\to C' alt='B\to C' align='middle' />, and by Noether&#8217;s theorem, the cardinality of a basis of <img src='/latexrender/pictures/9d5ed678fe57bcca610140957afab571.png' title='B' alt='B' align='middle' /> is equal to the cardinality of a basis of the kernel of this map, plus the cardinality of a basis of <img src='/latexrender/pictures/0d61f8370cad1d412f80b84d143e1257.png' title='C' alt='C' align='middle' />. By exactness in the middle, this kernel basis is equal to the image basis from A. So, we have, writing <img src='/latexrender/pictures/0193d4d3f614be7ffb688f4a5e71a62d.png' title='|G|' alt='|G|' align='middle' /> for the cardinality of a basis of the free abelian group <img src='/latexrender/pictures/dfcf28d0734569a6a693bc8194de62bf.png' title='G' alt='G' align='middle' />, that <img src='/latexrender/pictures/e3cc75795a7c0b185ea96ca504c967ec.png' title='|B| = |A|+|C|' alt='|B| = |A|+|C|' align='middle' />. Thus, <img src='/latexrender/pictures/98eddcb74a0300e8408f486798c7ad9f.png' title='|A|-|B|+|C|=0' alt='|A|-|B|+|C|=0' align='middle' />.</p>
<p>And if we apply this to the Mayer-Vietoris sequence fragment we acquired, it follows that<br />
<img src='/latexrender/pictures/695291fcefe046dc1de194dcf2e50591.png' title='|X\cap Y| &amp;#8211; |X| &amp;#8211; |Y| + |X\cup Y| = 0' alt='|X\cap Y| &amp;#8211; |X| &amp;#8211; |Y| + |X\cup Y| = 0' align='middle' /><br />
and thus<br />
<img src='/latexrender/pictures/c025b52671e3870168e22a04150c5d2b.png' title='|X\cup Y| = |X| + |Y| &amp;#8211; |X\cap Y|' alt='|X\cup Y| = |X| + |Y| &amp;#8211; |X\cap Y|' align='middle' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/01/homological-inclusion-exclusion-and-the-mayer-vietoris-sequence/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dr rer nat, Magna cum laude</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/07/dr-rer-nat-magna-cum-laude/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/07/dr-rer-nat-magna-cum-laude/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 13:43:39 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Postdoc Carnival]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=174</guid>
		<description><![CDATA[After about 5 semesters, one paper, one erratum (submitted to JHRS) and one thesis, and after taking two oral exams and delivering one 30 minute talk on my research, I am now (modulo the week or two it takes to produce my certificate) entitled to the title of doctor rerum naturalium. Next stop is the [...]]]></description>
			<content:encoded><![CDATA[<p>After about 5 semesters, <a href="http://www.emis.de/journals/JHRS/volumes/2008/volume3-1.htm">one paper</a>, one erratum (submitted to JHRS) and <a href="http://www.minet.uni-jena.de/~mik/thesis.pdf">one thesis</a>, and after taking two oral exams and delivering one 30 minute talk on my research, I am now (modulo the week or two it takes to produce my certificate) entitled to the title of <em>doctor rerum naturalium</em>.</p>
<p>Next stop is the topology in computer science workgroup at Stanford, where I have accepted an offer for a postdoc research position up to 3 years (conditional on my good behaviour <img src='http://blog.mikael.johanssons.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/07/dr-rer-nat-magna-cum-laude/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tour dates</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/03/tour-dates/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/03/tour-dates/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 21:57:16 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Conferencing]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Topology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/03/tour-dates/</guid>
		<description><![CDATA[Edited to add Galway I&#8217;ll be doing a &#8220;US tour&#8221; in March / April. For the people who might be interested &#8211; here are my whereabouts, and my speaking engagements. I&#8217;m booked at several different seminars to do the following: Title: On the computation of A-infinity algebras and Ext-algebras Abstract: For a ring R, the [...]]]></description>
			<content:encoded><![CDATA[<p><i>Edited to add Galway</i></p>
<p>I&#8217;ll be doing a &#8220;US tour&#8221; in March / April. For the people who might be interested &#8211; here are my whereabouts, and my speaking engagements.</p>
<p>I&#8217;m booked at several different seminars to do the following:</p>
<p>Title: On the computation of A-infinity algebras and Ext-algebras<br />
Abstract:<br />
<blockquote>
For a ring R, the Ext algebra <img src='/latexrender/pictures/5563a453aab59e4a7cef44b395808da0.png' title='Ext_R^*(k,k)' alt='Ext_R^*(k,k)' align='middle' /> carries rich information about the ring and its module category. The algebra <img src='/latexrender/pictures/5563a453aab59e4a7cef44b395808da0.png' title='Ext_R^*(k,k)' alt='Ext_R^*(k,k)' align='middle' /> is a finitely presented k-algebra for most nice enough rings. Computation of this ring is done by constructing a projective resolution P of k and either constructing the complex <img src='/latexrender/pictures/5c02ff5cd87ca10e31810820b3b789db.png' title='Hom(P_n,k)' alt='Hom(P_n,k)' align='middle' /> or equivalently constructing the complex <img src='/latexrender/pictures/9e644a85168706f366d14b30e4c6b300.png' title='Hom(P,P)' alt='Hom(P,P)' align='middle' />. By diligent choice of computational route, the computation can be framed as essentially computing the homology of the differential graded algebra <img src='/latexrender/pictures/9e644a85168706f366d14b30e4c6b300.png' title='Hom(P,P)' alt='Hom(P,P)' align='middle' />.</p>
<p>Being the homology of a dg-algebra, <img src='/latexrender/pictures/5563a453aab59e4a7cef44b395808da0.png' title='Ext_R^*(k,k)' alt='Ext_R^*(k,k)' align='middle' /> has an induced A-infinity structure. This structure, has been shown by Keller and by Lu-Palmieri-Wu-Zhang, can be used to reconstruct R from<br />
<img src='/latexrender/pictures/dd7346064e7679a9d8f04a44107c6431.png' title='Ext_R^{\leq 2}(k,k)' alt='Ext_R^{\leq 2}(k,k)' align='middle' />.</p>
<p>In this talk, we shall discuss the computation of <img src='/latexrender/pictures/5563a453aab59e4a7cef44b395808da0.png' title='Ext_R^*(k,k)' alt='Ext_R^*(k,k)' align='middle' /> and methods for computing an A-infinity structure on the Ext algebra. Examples will be drawn from group cohomology, where the computation of the Ext algebra has conditions from Benson and Carlson for recognizing whether a partial computation has the entire structure.                                          </p></blockquote>
<p>Talk dates are:<br />
March:<br />
19 &#8211; Stockholm University<br />
26 &#8211; UPenn<br />
27 &#8211; Millersville<br />
29/30 &#8211; Graduate Student Topology Conference, UIUC<br />
April:<br />
8 &#8211; Stanford<br />
11 &#8211; U Washington, Seattle<br />
May:<br />
8 &#8211; NUI Galway</p>
<p>I will be in Millersville, with occasional visits to UPenn during March 25-28 and April 10-20. I&#8217;ll be somewhere in Illinois most of March 28, and at UIUC for the GSTC 29-30. I&#8217;ll be at MSRI March 31-April 4, and then at Stanford April 4-10.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/03/tour-dates/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Introduction to Algebraic Geometry (3 in a series)</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/03/introduction-to-algebraic-geometry-3-in-a-series/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/03/introduction-to-algebraic-geometry-3-in-a-series/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 14:37:58 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/03/introduction-to-algebraic-geometry-3-in-a-series/</guid>
		<description><![CDATA[I&#8217;m going to move on with the identification of geometric objects with functions from these objects down to a field soon enough, but I&#8217;d like to spend a little time nailing down the categorical language of this association. Basically, we have two functors I and V going back and forth between two categories. And the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to move on with the identification of geometric objects with functions from these objects down to a field soon enough, but I&#8217;d like to spend a little time nailing down the categorical language of this association. Basically, we have two functors I and V going back and forth between two categories. And the essential statement of the last post is that these two functors form an equivalence of categories.</p>
<p>Now, first off in this categorical language, I want to nail down exactly what the objects are. In the category <img src='/latexrender/pictures/ad9c5aca753932fe6e45672e1941d82f.png' title='\mathcal{AV}ar_k' alt='\mathcal{AV}ar_k' align='middle' /> the objects are solution sets of systems of polynomial equations. And in the category <img src='/latexrender/pictures/b5655648e330b813df29c47685b3f653.png' title='\mathcal{RA}lg_k' alt='\mathcal{RA}lg_k' align='middle' />, the objects are finitely presented Noetherian reduced k-algebras.</p>
<p>The functor <img src='/latexrender/pictures/ad2bbacf81ace3b6fd39e64b2f038a79.png' title='V:\mathcal{RA}lg_k\to \mathcal{AV}ar_k' alt='V:\mathcal{RA}lg_k\to \mathcal{AV}ar_k' align='middle' /> acts on objects by sending an algebra R to the solution set of the polynomial equations generating the ideal in a presentation of the algebra.</p>
<p>And the functor <img src='/latexrender/pictures/5e921306cbfd443eeb1a2ef868175e24.png' title='I:\mathcal{AV}ar_k\to \mathcal{RA}lg_k' alt='I:\mathcal{AV}ar_k\to \mathcal{RA}lg_k' align='middle' /> takes a variety to the algebra of polynomial functions on the variety. This is a slight modification to the way I&#8217;ve introduced I in the previous posts &#8211; but the good news is that I(V) is the quotient of the right polynomial ring with the previously defined I(V).</p>
<h2>Morphisms on varieties</h2>
<p>In order to define a category, it&#8217;s not enough with the objects &#8211; we want morphisms as well. Since everything else is defined by polynomials, we&#8217;re going to define a morphism of varieties <img src='/latexrender/pictures/88bb990cfa90788a59705302ee7b5697.png' title='V\to W' alt='V\to W' align='middle' /> to be a map <img src='/latexrender/pictures/77abf6ed51ee3ba7e6a4964c968274ab.png' title='\mathbb A^n\to\mathbb A^m' alt='\mathbb A^n\to\mathbb A^m' align='middle' />, polynomial in each coordinate, such that the image of the restriction to the variety <img src='/latexrender/pictures/a0d9814e229150f7347974a01bd9885f.png' title='V\subseteq\mathbb A^n' alt='V\subseteq\mathbb A^n' align='middle' /> is contained in <img src='/latexrender/pictures/03cce3ca93d255d6e005d6df9043d412.png' title='W\subseteq\mathbb A^m' alt='W\subseteq\mathbb A^m' align='middle' />.</p>
<p>In other words, it is a map <img src='/latexrender/pictures/ff558b3aaadb6754a119dd20600734a6.png' title='(x_1,\dots,x_n)\mapsto(f_1(x_1,\dots,x_n),\dots,f_m(x_1,\dots,x_n))' alt='(x_1,\dots,x_n)\mapsto(f_1(x_1,\dots,x_n),\dots,f_m(x_1,\dots,x_n))' align='middle' /> defined by polynomials <img src='/latexrender/pictures/312d9bcb125a3799fad4b84f6991b12e.png' title='f_1,\dots,f_m' alt='f_1,\dots,f_m' align='middle' />.</p>
<p>An isomorphism of varieties is exactly what we expect it to be &#8211; it is a morphism that has an inverse.</p>
<p>One specific kind of highly interesting isomorphisms are the linear automorphisms of <img src='/latexrender/pictures/e75c212414a6a6750f34b305153b0648.png' title='\mathbb A^n' alt='\mathbb A^n' align='middle' />. These are given, essentially, by invertible change-of-coordinate matrices in the way we are used to from linear algebra. </p>
<h3>Examples</h3>
<p>Recall from the earlier posts the twisted cubic curve <img src='/latexrender/pictures/a821c4a9f5431350d01ff39b028e2a3d.png' title='V(x-y^2,x-z^3)' alt='V(x-y^2,x-z^3)' align='middle' />. Points on it have the form <img src='/latexrender/pictures/19f66dbddba8ea791961821590ae1d5e.png' title='(s,s^2,s^3)' alt='(s,s^2,s^3)' align='middle' /> &#8211; and this, incidentially, gives us precisely a map <img src='/latexrender/pictures/f406f0a4b8c4fa5e07359e57d824aab5.png' title='\mathbb A^1\to\mathbb A^3' alt='\mathbb A^1\to\mathbb A^3' align='middle' /> displaying an isomorphism between the twisted cubic curve and the affine line. The inverse is given by <img src='/latexrender/pictures/8e6e7f06e5038c6ccb179b83f4c76c68.png' title='(x,y,z)\mapsto x' alt='(x,y,z)\mapsto x' align='middle' />. </p>
<p>Consider the parabola <img src='/latexrender/pictures/49234b47786c5e019eec30ef3f77019a.png' title='V(x-y^2)' alt='V(x-y^2)' align='middle' />. This is also isomorphic to the affine line, over the maps <img src='/latexrender/pictures/d0b89cda9761a4603b976aa6d5a04b39.png' title='t\mapsto(t,t^2)' alt='t\mapsto(t,t^2)' align='middle' /> and <img src='/latexrender/pictures/32edafbf1ff3665f4b9cd387f1e81d8c.png' title='(x,y)\mapsto x' alt='(x,y)\mapsto x' align='middle' />.</p>
<p>On the other hand, the affine line is not isomorphic to the nodal curve <img src='/latexrender/pictures/e313f494986a12def52f0e61484c018f.png' title='V(y^2-x^2-x^3)' alt='V(y^2-x^2-x^3)' align='middle' />. The easiest way to show this is to go over smoothness of curves and singular points &#8211; which I hope to deal with later at some point. Essentially, smoothness is an invariant of varieties under isomorphisms, and since the point (0,0) is singular on the nodal curve, and the affine line has no singular points, the two varieties can not possibly be isomorphic.</p>
<p>Note that images of varieties need not be affine algebraic varieties &#8211; they will, however, always be <i>quasi-projective</i> varieties. We&#8217;ll see if I get into this later on.</p>
<h2>Morphisms of algebras and functoriality of V and I</h2>
<p>We really do already know what morphisms look like in <img src='/latexrender/pictures/b5655648e330b813df29c47685b3f653.png' title='\mathcal{RA}lg_k' alt='\mathcal{RA}lg_k' align='middle' />. This category is the full subcategory of the category of k-algebras &#8211; by which we mean that it picks out objects among k-algebras, and have all k-algebra maps between objects as morphisms.</p>
<p>The really awesome bit happens when we start considering the morphisms we&#8217;ve defined. Given a morphism <img src='/latexrender/pictures/47b3a34fa2ec6da6d58a234edbfd0d7b.png' title='F:V\to W' alt='F:V\to W' align='middle' />, we define the pullback <img src='/latexrender/pictures/58d9d4ce1976a966882e7c82d82b3b16.png' title='F^\#:k[W]\to k[V]' alt='F^\#:k[W]\to k[V]' align='middle' /> by <img src='/latexrender/pictures/c21edb1fa4fc99d6f96144f3abbad346.png' title='F^\#(f)=f\circ F' alt='F^\#(f)=f\circ F' align='middle' />. This takes a map <img src='/latexrender/pictures/0a5561ce152d5d314411bb9f4df4718d.png' title='f:W\to k' alt='f:W\to k' align='middle' /> and makes a map <img src='/latexrender/pictures/7d5999df6f5822fbdbd7e461e5614664.png' title='F^\#(f):V\to k' alt='F^\#(f):V\to k' align='middle' />. Since this is a composition of polynomials, it is also a polynomial function. If <img src='/latexrender/pictures/99089dce014558ee490160cba954f89e.png' title='f\in I(V)' alt='f\in I(V)' align='middle' />, then <img src='/latexrender/pictures/6ba86ecf71bf4f9bc3b3507743e71970.png' title='F^\#(f)(p)=f(F(p))' alt='F^\#(f)(p)=f(F(p))' align='middle' />, and since <img src='/latexrender/pictures/c9ecad04fff1e0a26cd5ab52b4e4264a.png' title='F(p)\in V' alt='F(p)\in V' align='middle' />, it follows that <img src='/latexrender/pictures/65cef750edb74dcc5a332a39cf4bf100.png' title='f(F(p))=0' alt='f(F(p))=0' align='middle' />, and thus <img src='/latexrender/pictures/b90b16491539207246328339b7815826.png' title='F^\#(f)\in I(W)' alt='F^\#(f)\in I(W)' align='middle' />.</p>
<p>In the other direction, suppose that R and S are reduced finitely generated k-algebras. Then <img src='/latexrender/pictures/a9e1d837f0532588473cb1ab5c2018c2.png' title='R=k[x_1,\dots,x_r]/I' alt='R=k[x_1,\dots,x_r]/I' align='middle' />, and <img src='/latexrender/pictures/10466ee4c934178961c960b6eb8d00df.png' title='S=k[y_1,\dots,y_s]/J' alt='S=k[y_1,\dots,y_s]/J' align='middle' />. We fix a homomorphism <img src='/latexrender/pictures/9a137544a74c2d34def9f6ada25d0fa0.png' title='\sigma:R\to S' alt='\sigma:R\to S' align='middle' />, and we wish to construct a variety morphism <img src='/latexrender/pictures/800618943025315f869e4e1f09471012.png' title='F' alt='F' align='middle' /> such that <img src='/latexrender/pictures/355d967e735aa975780820018f9fa12d.png' title='F^\#=\sigma' alt='F^\#=\sigma' align='middle' />.</p>
<p>Let <img src='/latexrender/pictures/824ff39cf03c28e185367a8974a30aeb.png' title='F_i\in k[y_1,\dots,y_s]' alt='F_i\in k[y_1,\dots,y_s]' align='middle' /> be a representative of <img src='/latexrender/pictures/f35d2abca0690e7b10a5f2bb687554e2.png' title='\sigma(x_i)' alt='\sigma(x_i)' align='middle' />, and define <img src='/latexrender/pictures/04490679b59f37969f27d96ed4d006e6.png' title='F:\mathbb A^s\to \mathbb A^r' alt='F:\mathbb A^s\to \mathbb A^r' align='middle' /> by <img src='/latexrender/pictures/0052ae45694c9a8049b97f0611d1bc89.png' title='a\mapsto(F_1(a),\dots,F_r(a))' alt='a\mapsto(F_1(a),\dots,F_r(a))' align='middle' />. We need to verify that F maps V to W. This follows if we can only show that for every <img src='/latexrender/pictures/74b772ed1f57705570a5d329409a237f.png' title='a\in V' alt='a\in V' align='middle' />, all polynomials in I vanish on F(a). Let <img src='/latexrender/pictures/dd8b6e371f0037673846188fda7a78ec.png' title='g\in I' alt='g\in I' align='middle' />. Then<br />
<img src='/latexrender/pictures/3085e2eef4109a4f710816b4afda4c87.png' title='g(F(a))=g(F_1(a),\dots,F_r(a))=g(\sigma(x_1)(a),\dots,\sigma(x_r)(a))=\sigma(g)(a)' alt='g(F(a))=g(F_1(a),\dots,F_r(a))=g(\sigma(x_1)(a),\dots,\sigma(x_r)(a))=\sigma(g)(a)' align='middle' /><br />
and since <img src='/latexrender/pictures/dd8b6e371f0037673846188fda7a78ec.png' title='g\in I' alt='g\in I' align='middle' />, it represents the zero class of <img src='/latexrender/pictures/94480f1b196cbb24f2c8bacf58bccb5f.png' title='k[x_1,\dots,x_r]/I' alt='k[x_1,\dots,x_r]/I' align='middle' />, so <img src='/latexrender/pictures/7e0fb729f38d2e86c8580d5abddfe08f.png' title='\sigma(g)=0' alt='\sigma(g)=0' align='middle' /> and hence <img src='/latexrender/pictures/6ba5f00aca6154941916eea5de601783.png' title='\sigma(g)\in J' alt='\sigma(g)\in J' align='middle' />. But J is the ideal of all functions vanishing on V. Hence <img src='/latexrender/pictures/32c6c0c4bca4004c0b77bf54a50b8547.png' title='F(a)\in W' alt='F(a)\in W' align='middle' />, and the proof is complete.</p>
<p>In essence, what this proves to us is that the operations V and I form a contravariant equivalence of categories between <img src='/latexrender/pictures/1b8e7d068548e01cd73072b4dbffdb3a.png' title='V:\mathcal{RA}lg_k' alt='V:\mathcal{RA}lg_k' align='middle' /> and <img src='/latexrender/pictures/ad9c5aca753932fe6e45672e1941d82f.png' title='\mathcal{AV}ar_k' alt='\mathcal{AV}ar_k' align='middle' />.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/03/introduction-to-algebraic-geometry-3-in-a-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Algebraic Geometry (2 in a series)</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-2-in-a-series/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-2-in-a-series/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 21:43:46 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-2-in-a-series/</guid>
		<description><![CDATA[I want to lead this sequence to the point where I am having trouble understanding algebraic geometry. Hence, I won&#8217;t take the usual course such an introduction would take, but rather set the stage reasonably quickly to make the transit to the more abstract themes clear. But that&#8217;s all a few posts away. For now, [...]]]></description>
			<content:encoded><![CDATA[<p>I want to lead this sequence to the point where I am having trouble understanding algebraic geometry. Hence, I won&#8217;t take the usual course such an introduction would take, but rather set the stage  reasonably quickly to make the transit to the more abstract themes clear.</p>
<p>But that&#8217;s all a few posts away. For now, recall that we recognized already that any variety is defined by an ideal, and that intersections and unions of varieties are given by sums and intersections or products of ideals.</p>
<p>This is the first page of what is known as the Algebra-Geometry dictionary. The dictionary is made complete by a pair of reasonably famous theorems. I won&#8217;t bother proving them &#8211; the proofs are a good chunk of any decent commutative algebra course &#8211; but I&#8217;ll quote the theorems and discuss why they matter.</p>
<p>We call a ring Noetherian if all ideals are finitely generated. If a ring R is Noetherian, then quotients are Noetherian.</p>
<p><b>Hilbert&#8217;s Basis Theorem:</b> If R is Noetherian, then so is R[x].</p>
<p>We define the radical <img src='/latexrender/pictures/4bd65db8055fe5cdb1ee85f1073c8661.png' title='\sqrt I' alt='\sqrt I' align='middle' /> of an ideal I to be the ideal consisting of all elements a such that some power of a is actually in I. We call an ideal I <i>radical</i> if <img src='/latexrender/pictures/7968b9f14c3a27f504c104cd11f19a60.png' title='I=\sqrt I' alt='I=\sqrt I' align='middle' />. This concept is relevant for our considerations since if for a point p the function f^n(p) vanishes, then f(p) also vanishes. Thus, the set of points such that f^n vanishes is the same set as the set of points where f vanishes. The relevancy of this is captured in:</p>
<p><b>Hilbert&#8217;s Nullstellensatz:</b> Let k be an algebraically closed field. For any ideal I in <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' />, there is an equality of ideals<br />
<img src='/latexrender/pictures/a900c9759a5cbcc1f3e700dd110e7e5c.png' title='I(V(I))=\sqrt I' alt='I(V(I))=\sqrt I' align='middle' /></p>
<p>Note, for the statement of this theorem that we write V(I) for the variety defined by simultaneous vanishing of all elements in I, and we write I(V) for the ideal of all polynomials in <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' /> that vanish on all of I(V). </p>
<p>So &#8211; and here is the beautiful part &#8211; affine algebraic varieties correspond bijectively to radical ideals in polynomial rings. For every ideal, there is a variety and for every variety, there is an ideal. But we can push this further.</p>
<h2>Coordinate rings</h2>
<p>Let&#8217;s consider polynomial functions from <img src='/latexrender/pictures/e75c212414a6a6750f34b305153b0648.png' title='\mathbb A^n' alt='\mathbb A^n' align='middle' /> to k. These are precisely the polynomials in <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' />.  Given a variety V, we can take a polynomial <img src='/latexrender/pictures/7346c23f9188b822dc31297afce98edf.png' title='f\in k[x_1,\dots,x_n]' alt='f\in k[x_1,\dots,x_n]' align='middle' /> and restrict it to a function <img src='/latexrender/pictures/3a8276462b14ee9342582be8695e0872.png' title='f|_V:V\to k' alt='f|_V:V\to k' align='middle' />.</p>
<p>Two different polynomials give the same restricted function precisely when their difference vanishes on all of V. So polynomial functions on V are precisely the equivalence classes in the quotient ring <img src='/latexrender/pictures/54d7d4e6c0660e03259875db941611fd.png' title='k[x_1,\dots,x_n]/I(V)' alt='k[x_1,\dots,x_n]/I(V)' align='middle' />. We call the resulting ring the <i>coordinate ring</i> and denote it by k[V].</p>
<p>Conversely, if R is a Noetherian k-algebra such that there are no nilpotent elements in R, then R is a quotient of some polynomial ring with some radical ideal. Hence it is the coordinate ring of some variety in some affine space somewhere. We call a ring lacking nilpotents <i>reduced</i>. </p>
<p>We get, out of all this, a bijective correspondence<br />
{ Noetherian reduced k-algebras } <img src='/latexrender/pictures/19401793ec61890d228748bce42da457.png' title='\leftrightarrow' alt='\leftrightarrow' align='middle' /> { Affine algebraic varieties }</p>
<p>The really beautiful part will come in my next post. We can introduce homomorphisms of varieties in a reasonably natural way so that this bijective correspondence ends up being <i>functorial</i> &#8211; i.e. any homomorphisms on one side gives rise to a corresponding homomorphism on the other side. Thus, the categories of Noetherian reduced k-algebras and of affine algebraic varieties are equivalent.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-2-in-a-series/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introduction to Algebraic Geometry (1 in a series)</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-1-in-a-series/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-1-in-a-series/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 11:33:00 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-1-in-a-series/</guid>
		<description><![CDATA[I&#8217;m growing embarrassed by my lack of understanding for the sheaf-theoretic approaches to algebraic (and differential) geometry. I&#8217;ve tried to deal with it several times before, and I&#8217;m currently reading up on Algebraic Geometry again to fill the void that the finished thesis, soon arriving travels and non-existent job application responses produce. So, why not [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m growing embarrassed by my lack of understanding for the sheaf-theoretic approaches to algebraic (and differential) geometry. I&#8217;ve tried to deal with it several times before, and I&#8217;m currently reading up on Algebraic Geometry again to fill the void that the finished thesis, soon arriving travels and non-existent job application responses produce.</p>
<p>So, why not learn by teaching? It&#8217;s an approach that has been pretty darn good in the past. So I thought I&#8217;d write a sequence of posts on algebraic geometry, introducing what it&#8217;s supposed to be about and how the main viewpoints develop more or less naturally from the approaches taken.</p>
<h2>Varieties</h2>
<p>The basic objective of algebraic geometry is to study solution sets to systems of polynomial equations. That is, we take some set <img src='/latexrender/pictures/1390c486ce69cc6b0865fafef40a25b1.png' title='f_1,\dots,f_r' alt='f_1,\dots,f_r' align='middle' /> of polynomials in some polynomial ring <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' /> over some field <img src='/latexrender/pictures/8ce4b16b22b58894aa86c421e8759df3.png' title='k' alt='k' align='middle' />. And we write <img src='/latexrender/pictures/421328c5ab67bd781629a1cb95f6ae70.png' title='V(f_1,\dots,f_r)' alt='V(f_1,\dots,f_r)' align='middle' /> for the set of all simultaneous roots to all these polynomials:<br />
<img src='/latexrender/pictures/73b0e367b655a2fafacf4f0b97de31e1.png' title='V(f_1,\dots,f_r)=\{p\in k^n:f_1(p)=0, \dots, f_r(p)=0\}' alt='V(f_1,\dots,f_r)=\{p\in k^n:f_1(p)=0, \dots, f_r(p)=0\}' align='middle' /></p>
<p>If we write our polynomials as coming from the ring <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' />, then the corresponding solution points will be points in the vector space <img src='/latexrender/pictures/aafabbf195eb3424ca815b9afe5caff1.png' title='k^n' alt='k^n' align='middle' />. In order to emphasize that we do not care for the vector space structure of this space, we shall denote it with <img src='/latexrender/pictures/e75c212414a6a6750f34b305153b0648.png' title='\mathbb A^n' alt='\mathbb A^n' align='middle' />, or if we want to emphasize the field, with <img src='/latexrender/pictures/b5f865c4e2e101f41565160abe202464.png' title='\mathbb A^n_k' alt='\mathbb A^n_k' align='middle' />. </p>
<p>The first observation at this point is that if we take the polynomial <img src='/latexrender/pictures/2cd3b198cc2d1805468e336d663e92cb.png' title='x^2+1' alt='x^2+1' align='middle' />, then the solution set over <img src='/latexrender/pictures/07e5a4a56a57f5c874ebf79bb67a0b18.png' title='\mathbb R' alt='\mathbb R' align='middle' /> is empty, while the solution set over <img src='/latexrender/pictures/b36eac3d201a1a25dda928990a79d751.png' title='\mathbb C' alt='\mathbb C' align='middle' /> is not. So, in order to set all solution sets on an equal footing &#8211; and also to make the later occurring correspondences work out &#8211; we shall require <img src='/latexrender/pictures/8ce4b16b22b58894aa86c421e8759df3.png' title='k' alt='k' align='middle' /> to be an algebraically closed field. In other words, we can always find a root to any polynomial.</p>
<p>We call the solution sets <i>varieties</i> (or &#8211; in order to distinguish from everything else we might encounter, we shall call them <i>affine algebraic varieties</i>).</p>
<p>So, the study of solutions to systems of polynomial equations is the study of varieties. And hence geometry. This neatly expands on the classical linear algebra viewpoint &#8211; where we study systems of linear equations as intersections of planes. It turns out that the main computational approach &#8211; Grbner bases &#8211; actually specializes to the Gau algorithm on matrices if we specialize to linear systems of equations.</p>
<h3>Examples</h3>
<p>The unit circle is an affine variety, given by the vanishing of <img src='/latexrender/pictures/3977406a9c38913879d488d5e68c6520.png' title='x^2+y^2-1' alt='x^2+y^2-1' align='middle' />. The hyperbola <img src='/latexrender/pictures/6a2d024426c0c93cbf6641b8380e2dd6.png' title='xy-1' alt='xy-1' align='middle' /> and the parabola <img src='/latexrender/pictures/30cdb631bd165a5b08ec12d1b0d4ddf1.png' title='y-x^2' alt='y-x^2' align='middle' /> are also affine varieties.</p>
<p>Another very commonly used example is the twisted cubic curve &#8211; given by the simultaneous vanishing of the parabolic sheet <img src='/latexrender/pictures/30cdb631bd165a5b08ec12d1b0d4ddf1.png' title='y-x^2' alt='y-x^2' align='middle' /> and the cubic curve sheet <img src='/latexrender/pictures/2ad4639fdd5531832be18110513c7f22.png' title='z-x^3' alt='z-x^3' align='middle' />.</p>
<h2>Changing the defining equations</h2>
<p>The points p at which both f and g vanish are the same points as those where f and f+g vanish. Indeed, if f(p)=0 and g(p)=0, then (f+g)(p)=0 as well, so the points in V(f,g) are all contained in V(f,f+g). On the other hand, suppose that f(p)=0 and (f+g)(p)=0. Then 0=(f+g)(p)=f(p)+g(p)=0+g(p). So g(p)=0 as well. Hence, all points in V(f,f+g) are contained in V(f,g). So the two varieties are equal.</p>
<p>Suppose that <img src='/latexrender/pictures/ce971a1993da574a7c38d708582ca8ea.png' title='p\in V(f,\dots)' alt='p\in V(f,\dots)' align='middle' />. Then for any h=fg we&#8217;ll see that h(p)=f(p)g(p)=0g(p)=0. Hence, if f vanishes at p, then every polynomial that f divides will also vanish at p.</p>
<p>Now, a set of polynomials in <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' /> that is closed under addition and multiplication by elements from <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' /> is an <i>ideal</i> of the polynomial ring. Thus, these considerations convince us that the set of all polynomials in <img src='/latexrender/pictures/1de8377bc00a12d8d4e4641774350142.png' title='k[x_1,\dots,x_n]' alt='k[x_1,\dots,x_n]' align='middle' /> that all vanish on all points in <img src='/latexrender/pictures/421328c5ab67bd781629a1cb95f6ae70.png' title='V(f_1,\dots,f_r)' alt='V(f_1,\dots,f_r)' align='middle' /> is in fact an ideal. </p>
<p>So we can define the variety from an ideal &#8211; given <img src='/latexrender/pictures/5bddc0766ff957acc660c8d5a63c6053.png' title='I\in k[x_1,\dots,x_n]' alt='I\in k[x_1,\dots,x_n]' align='middle' />, we write V(I) for the set of all points <img src='/latexrender/pictures/ed19d38fb0dbbf1787afbbf228a9133d.png' title='p\in\mathbb A^n' alt='p\in\mathbb A^n' align='middle' /> such that f(p)=0 for all <img src='/latexrender/pictures/1b4e910cd8af4b5c4899976bf945ec4b.png' title='f\in I' alt='f\in I' align='middle' />.</p>
<p>The sum of two ideals I and J are the set of all elements on the form f+g where f is from I and g is from J. If I is generated by <img src='/latexrender/pictures/1390c486ce69cc6b0865fafef40a25b1.png' title='f_1,\dots,f_r' alt='f_1,\dots,f_r' align='middle' /> and J is generated by <img src='/latexrender/pictures/f73102dc281850625bd26dd4528ae267.png' title='g_1,\dots,g_s' alt='g_1,\dots,g_s' align='middle' />, then I+J has generators <img src='/latexrender/pictures/2af066e9b2d8c917659b240f409c9260.png' title='f_1,\dots,f_r,g_1,\dots,g_s' alt='f_1,\dots,f_r,g_1,\dots,g_s' align='middle' />. And the set of points where all the polynomials in I+J vanish are precisely the points where all polynomials in I vanish <b>and</b> all polynomials in J vanish. Hence <img src='/latexrender/pictures/e0db24317effc56d994c5562d0cb448c.png' title='V(I+J)=V(I)\cap V(J)' alt='V(I+J)=V(I)\cap V(J)' align='middle' />.</p>
<p>The product IJ of two ideals I and J is <i>generated by</i> all products of one element from I and one from J. Hence, an element of IJ is on the form <img src='/latexrender/pictures/30ad3a86de244ae7f4b526c1f87e74a0.png' title='f_1g_1+\dots+f_tg_t' alt='f_1g_1+\dots+f_tg_t' align='middle' /> with all the <img src='/latexrender/pictures/59bdf0ba696e13164c5a926386f23cb0.png' title='f_i' alt='f_i' align='middle' /> coming from I and all the <img src='/latexrender/pictures/8d2d80ef00296b9ed491d989b30cebd1.png' title='g_j' alt='g_j' align='middle' /> coming from J. Suppose p is in V(IJ). Then for all f in I and all g in J, f(p)g(p)=0. If for all f in I, f(p)=0, then p is in V(I). Otherwise we can find some <img src='/latexrender/pictures/78155d2ec4b025a5ac903d6f8611756c.png' title='f_0' alt='f_0' align='middle' /> such that <img src='/latexrender/pictures/ab97a49df554c52b299d52592994a023.png' title='f_0(p)=0' alt='f_0(p)=0' align='middle' />. But then since <img src='/latexrender/pictures/29f46b78756dc0ab080236ed980a5f50.png' title='f_0(p)g(p)=0' alt='f_0(p)g(p)=0' align='middle' /> for all g in J, we must have <img src='/latexrender/pictures/a38bc5cfe1943b7eac1b3730060482cd.png' title='g(p)=0' alt='g(p)=0' align='middle' /> for all g in J. Hence p is in V(J).<br />
Thus <img src='/latexrender/pictures/b8fe0d8bd1dac25031abbc996c901662.png' title='V(IJ)\subseteq V(I)\cup V(J)' alt='V(IJ)\subseteq V(I)\cup V(J)' align='middle' />.<br />
On the other hand, if p is in <img src='/latexrender/pictures/c62bf10d4226e06e1609d3e55795b7e6.png' title='V(I)\cup V(J)' alt='V(I)\cup V(J)' align='middle' /> then specifically either p is in V(I) or it is in V(J). Either way, for all f in I and all g in J, f(p)g(p)=0 since one of the factors certainly vanishes. Hence, p is in V(IJ).</p>
<p>We also do have that <img src='/latexrender/pictures/e0c59baf5837f5962f077d0d2f7c000f.png' title='V(I\cap J)=V(I)\cup V(J)' alt='V(I\cap J)=V(I)\cup V(J)' align='middle' />. Which of the ideal operations works best depends a bit on what we would like to <i>do</i> with it.</p>
<h3>Examples</h3>
<p>We can use the above discussion to actually <i>compute</i> things geometrically. The intersection of the circle <img src='/latexrender/pictures/bc33f6de26676290a237e01b8a5a3f41.png' title='V(x^2+y^2-1)' alt='V(x^2+y^2-1)' align='middle' /> with a line <img src='/latexrender/pictures/00b84bf2a5fd7f158877522fe56f9b5a.png' title='V(ax+by+c)' alt='V(ax+by+c)' align='middle' /> is given by the sum of the ideals &#8211; so we need to consider the ideal <img src='/latexrender/pictures/b8b1a683c0c431b7e99228048d66ce9f.png' title='(x^2+y^2-1,ax+by+c)' alt='(x^2+y^2-1,ax+by+c)' align='middle' /> in <img src='/latexrender/pictures/464f66865a3de21f2f2a6a2b9a594865.png' title='k[x,y]' alt='k[x,y]' align='middle' />. We could try to bash this out by just wrangling the corresponding equations, or we could systematize the wrangling. Systematizing it leads, basically, to the theory of Grbner bases &#8211; and this is something I tend to avoid doing by hand if I can. Not doing it by hand looks like this:</p>
<pre>
$ Singular
                     SINGULAR                             /
 A Computer Algebra System for Polynomial Computations   /   version 3-0-2
                                                       0<
     by: G.-M. Greuel, G. Pfister, H. Schoenemann        \   July 2006
FB Mathematik der Universitaet, D-67653 Kaiserslautern    \
> ring R=0,(x,y),dp;
> ideal I=x^2+y^2-1,2*x-y;
> std(I);
_[1]=2x-y
_[2]=5y2-4
</pre>
<p>So one good set of generators for the ideal <img src='/latexrender/pictures/17f0e736fb07f21e69030ae7588a2cc9.png' title='(x^2+y^2-1,2x-y)' alt='(x^2+y^2-1,2x-y)' align='middle' /> would be <img src='/latexrender/pictures/baed4e0a9225276151aa20d11c978d64.png' title='(2x-y,5y^2-4)' alt='(2x-y,5y^2-4)' align='middle' />. This, in turn corresponds to the conditions <img src='/latexrender/pictures/db51cb7add5c262eb3c95f8a9ed722f9.png' title='y=\pm 2/\sqrt 5' alt='y=\pm 2/\sqrt 5' align='middle' /> and <img src='/latexrender/pictures/989211a1ba52351d7888cc4a803604c6.png' title='x=y/2' alt='x=y/2' align='middle' />. So we get two points &#8211; just as expected.</p>
<p>The equation wrangling, on the other hand, begins with recognizing that if both a and b are 0, then V(ax+by+c) is either empty or the entire plane. Both are rather boring, and easy to handle. So one of a and b is non-zero. Let&#8217;s say that a isn&#8217;t 0. Then we can rewrite ax+by+c=0 to <img src='/latexrender/pictures/76eee6741d3651ff483e15e86c455bc3.png' title='x=-\frac ba y-\frac ca' alt='x=-\frac ba y-\frac ca' align='middle' />. This can be inserted into the quadratic equation <img src='/latexrender/pictures/0d34c87c64f32752b59c9fc56b15ad09.png' title='x^2+y^2-1=0' alt='x^2+y^2-1=0' align='middle' /> to form the new equation <img src='/latexrender/pictures/41856b97b5f02a1fae412c2b07915ab5.png' title='(-\frac ba y-\frac ca)^2+y^2=1' alt='(-\frac ba y-\frac ca)^2+y^2=1' align='middle' />, which in turn expands to<br />
<img src='/latexrender/pictures/d7c6f23b7f88c3f0af3b50b9b16effa3.png' title='(1+\frac{b^2}{a^2})y^2+2\frac{b+c}ay+\frac{c^2}{a^2}=1' alt='(1+\frac{b^2}{a^2})y^2+2\frac{b+c}ay+\frac{c^2}{a^2}=1' align='middle' /><br />
which, in turn, we can easily solve using normal solution techniques for quadratic equations. To get rid of fractions, we&#8217;ll multiply the entire equation by <img src='/latexrender/pictures/ebc3d7bedc1f11e08895c3124001cbb5.png' title='a^2' alt='a^2' align='middle' /> yielding the new equation<br />
<img src='/latexrender/pictures/0241be1468ea35c3be47c52c65dbece9.png' title='(a^2+b^2)y^2+2a(b+c)y+c^2-a^2=0' alt='(a^2+b^2)y^2+2a(b+c)y+c^2-a^2=0' align='middle' /><br />
Now, the discriminant<br />
<img src='/latexrender/pictures/5d244e36043799199bc39a52bb16820e.png' title='\Delta=(2a(b+c))^2-4(b^2+a^2)(c^2-a^2)' alt='\Delta=(2a(b+c))^2-4(b^2+a^2)(c^2-a^2)' align='middle' /><br />
carries information about the nature of solutions. If <img src='/latexrender/pictures/b8151f6178433af03a399b1971d6448c.png' title='\Delta=0' alt='\Delta=0' align='middle' />, then the line V(ax+by+c) is a tangent to the circle, if <img src='/latexrender/pictures/da44aac94b82135888c080a06999d25a.png' title='\Delta&lt;0' alt='\Delta&lt;0' align='middle' />, then the intersections are all complex and if <img src='/latexrender/pictures/3ea7fefa1f6fc0d907e126d1ee5acc34.png' title='\Delta&gt;0' alt='\Delta&gt;0' align='middle' />, then the intersections are real. In both the non-tangent cases, the circle intersects the line exactly twice. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/02/introduction-to-algebraic-geometry-1-in-a-series/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>PROPs and patches</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/02/props-and-patches/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/02/props-and-patches/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 18:59:26 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Category theory]]></category>
		<category><![CDATA[Operads and PROPs]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/02/props-and-patches/</guid>
		<description><![CDATA[Brent Yorgey wrote a post on using category theory to formalize patch theory. In the middle of it, he talks about the need to commute a patch to the end of a patch series, in order to apply a patch undoing it. He suggests a necessary condition to do this is that, given patches P [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://byorgey.wordpress.com">Brent Yorgey</a> wrote a post on <a href="http://byorgey.wordpress.com/2008/02/13/patch-theory-part-ii-some-basics/">using category theory to formalize patch theory</a>. In the middle of it, he talks about the need to commute a patch to the end of a patch series, in order to apply a patch undoing it. He suggests a necessary condition to do this is that, given patches P and Q, we need to be able to find patches Q&#8217; and P&#8217; such that PQ=Q&#8217;P', and preferably such that Q&#8217; and P&#8217; capture some of the info in P and Q.</p>
<p>However, as such, this is not enough to solve the issue. For one thing, we can set Q&#8217;=P and P&#8217;=Q, and things are the way he asks for.</p>
<p>Now, I wonder whether we can solve this by using PROPs (or possibly di-operads or something like that). Let&#8217;s represent a document as a list of some sort of tokens. We&#8217;ll set <img src='/latexrender/pictures/e4f7629b574dd05d19a2107c87806700.png' title='D_n' alt='D_n' align='middle' /> the set of all lists of length <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' />, and we&#8217;ll set <img src='/latexrender/pictures/8f771bc1b32729794ded2f43f30110d3.png' title='P_n^m' alt='P_n^m' align='middle' /> to denote operations that take a list of length n and returns a list of length m.</p>
<p>One operation here is obvious &#8211; the identity operation. So we&#8217;ll take that into the mix. And we&#8217;ll also want to have some manner of composing operations. So, set <img src='/latexrender/pictures/3b72682c4921e5ee163a8aa583f9ba9e.png' title='\circ_i:P_n^m\times P_r^s\to P_n^{m+s-r}' alt='\circ_i:P_n^m\times P_r^s\to P_n^{m+s-r}' align='middle' /> to be the operation that applies the second argument to the elements i,i+1,&#8230;,i+m of the list outputted by the first argument.</p>
<p>This way, we can make patch trees &#8211; using the identities to fill out when a patch doesn&#8217;t influence everything; and have composition of operations represent composition of patches.</p>
<p>Now, the commutativity that Brent asks for would manifest as an additional relation &#8211; on top of those inherent in the definition of a PROP &#8211; to rebuild trees. One obvious one pops out immediately &#8211; as long as the trees don&#8217;t overlap, in other words, as long as the subtree we want to reorganize is contractible (in the topological sense), we can commute patches freely.</p>
<p>When trees -do- overlap, however, the undo operation Brent asks for is much more tricky. Consider the following sequence of edits:</p>
<p>[] -> [a] -> [b] -> [cbd]</p>
<p>Now, undo the insertion of [a].</p>
<p>Sure, taken this way, we cheat a little. Maybe we want to restrict edit descriptions to explicit deletions and additions. So we would have</p>
<p>[] -> [a] -> [] -> [b] -> [cb] -> [cbd]</p>
<p>and here we could probably move things around a bit easier. I don&#8217;t quite see how to do it, right now, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/02/props-and-patches/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Algebraic surface toys!</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/01/algebraic-surface-toys/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/01/algebraic-surface-toys/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 16:58:27 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Jahr der Mathematik]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/01/algebraic-surface-toys/</guid>
		<description><![CDATA[At the start of the German Year of Mathematics, the Oberwolfach research institute has released an exhibition and the software they used to produce it. The software, surfer, is a really nice GUI that sits on top of surf and lets you rotate and zoom your algebraic surfaces as well as pick colours very comfortably. [...]]]></description>
			<content:encoded><![CDATA[<p>At the start of the <a href=http://www.jahr-der-mathematik.de/>German Year of Mathematics</a>, the <a href=http://www.mfo.de>Oberwolfach research institute</a> has released an exhibition and the software they used to produce it. The software, <a href=http://imaginary2008.de/surfer.php>surfer</a>, is a really nice GUI that sits on top of <a href=http://surf.sourceforge.net>surf</a> and lets you rotate and zoom your algebraic surfaces as well as pick colours very comfortably.</p>
<p>They have a whole bunch of Really Pretty Images at <a href=http://imaginary2008.de>the exhibition website</a>, and I warmly recommend a visit. If you can get hold of the exhibition, they also have produced real models &#8211; with a 3d-printer &#8211; of some of the snazzier surfaces, so that one could have a REALLY close encounter with them.</p>
<p>But also, I&#8217;d really like to show you some of my own minor experiments with the program.</p>
<p><img src="http://mikael.johanssons.org/surfer/tubamirum.png" alt="Tuba Mirum - the innards of a Klein Bottle" width="75%" /><br />
This is the interior of a Klein Bottle, using the &#8220;standard&#8221; realization as an algebraic surface given by Mathworld. In other words, I&#8217;m using<br />
(x^2+y^2+z^2+2*y-1)*((x^2+y^2+z^2-2*y-1)^2-8*z^2)+16*x*z*(x^2+y^2+z^2-2*y-1)=0<br />
for the defining equation. It kinda looks a bit like a Sousaphone in my opinion.</p>
<p><img src="http://mikael.johanssons.org/surfer/roman.png" alt="Roman's surface - immersion of the real projective plane." width="75%" /><br />
Roman&#8217;s surface, an immersion of the real projective plane into 3-dimensional euclidean space. It is given by the equation<br />
(x^2+y^2+z^2-9)^2-((z-3)^2-2*x^2)*((z+3)^2-2*y^2)=0<br />
and is one of the Steiner projections of the Veronese surface, embedding the real projective plane into projective 5-dimensional space by the homogenous parametrization (x^2,y^2,z^2,xy,xz,yz).</p>
<p><img src="http://mikael.johanssons.org/surfer/steiner.png" alt="Steiner's surface type 2 - immersion of the real projective plane." width="75%" /><br />
With the defining equation<br />
x^2*y^2-x^2*z^2+y^2*z^2-x*y*z=0<br />
this Steiner surface can be transformed into the Roman surface above if (and only if) you&#8217;re allowed to take shortcuts over the points at infinity. As it is, it has two pinches (both visible) and three lines of self-intersections (also all visible, kinda sorta). It&#8217;s also unbounded &#8211; one of the reasons that you cannot get to the bounded Roman surface easily.</p>
<p>With this as inspiration &#8211; go forth and draw surfaces. And when you do, please show them to me too.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/01/algebraic-surface-toys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building my academic persona</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/01/building-my-academic-persona/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/01/building-my-academic-persona/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 15:26:14 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/01/building-my-academic-persona/</guid>
		<description><![CDATA[http://arxiv.org/abs/0707.1637 Just got accepted for publication in the Journal of Homotopy and Related Structures. Damn, this feels good!]]></description>
			<content:encoded><![CDATA[<p>http://arxiv.org/abs/0707.1637</p>
<p>Just got accepted for publication in the Journal of Homotopy and Related Structures.</p>
<p>Damn, this feels good!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/01/building-my-academic-persona/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wreath products</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/10/wreath-products/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/10/wreath-products/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 21:11:17 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/10/wreath-products/</guid>
		<description><![CDATA[In a conversation on IRC, I started prodding at low-order wreath products. It turned out to be quite a lot of fun doing it, so I thought I&#8217;d try to expand it into a blog post. First off, we&#8217;ll start with a definition: The wreath product is defined for groups G,H and a G-set X [...]]]></description>
			<content:encoded><![CDATA[<p>In a conversation on IRC, I started prodding at low-order wreath products. It turned out to be quite a lot of fun doing it, so I thought I&#8217;d try to expand it into a blog post.</p>
<p>First off, we&#8217;ll start with a <b>definition</b>:</p>
<p>The wreath product <img src='/latexrender/pictures/3ec283eaffc119dd7ef0ebb122728172.png' title='H \wr_X G' alt='H \wr_X G' align='middle' /> is defined for groups G,H and a G-set X by the following data. The elements of <img src='/latexrender/pictures/3ec283eaffc119dd7ef0ebb122728172.png' title='H \wr_X G' alt='H \wr_X G' align='middle' /> are tuples <img src='/latexrender/pictures/4e4d099f0a24f548ef21acfe64f8a473.png' title='(h_{x_1},h_{x_2},\dots,h_{x_r};g)\in H^{|X|}\times G' alt='(h_{x_1},h_{x_2},\dots,h_{x_r};g)\in H^{|X|}\times G' align='middle' />. The trick is in the group product. We define<br />
<img src='/latexrender/pictures/185db25b4de9d6361c50e4f96381967d.png' title='(h_{x_1},h_{x_2},\dots,h_{x_r};g)\cdot&#10;(h&amp;#8217;_{x_1},h&amp;#8217;_{x_2},\dots,h&amp;#8217;_{x_r};g&amp;#8217;)= \\&#10;(h_{x_1}h&amp;#8217;_{gx_1},h_{x_2}h&amp;#8217;_{gx_2},\dots,h_{x_r}h&amp;#8217;_{gx_r};gg&amp;#8217;)' alt='(h_{x_1},h_{x_2},\dots,h_{x_r};g)\cdot&#10;(h&amp;#8217;_{x_1},h&amp;#8217;_{x_2},\dots,h&amp;#8217;_{x_r};g&amp;#8217;)= \\&#10;(h_{x_1}h&amp;#8217;_{gx_1},h_{x_2}h&amp;#8217;_{gx_2},\dots,h_{x_r}h&amp;#8217;_{gx_r};gg&amp;#8217;)' align='middle' /><br />
(or possibly with a lot of inverses sprinkled into those indices)</p>
<p>Consider, first, the case of <img src='/latexrender/pictures/1bd6202ed0f1825764f0a0bc7ee6b480.png' title='G=H=X=C_2' alt='G=H=X=C_2' align='middle' /> with the nontrivial G-action defined by gx=1, g1=x. We get 8 elements in the wreath product <img src='/latexrender/pictures/3ec283eaffc119dd7ef0ebb122728172.png' title='H \wr_X G' alt='H \wr_X G' align='middle' />. Thus, the group is one of the groups with 8 elements &#8211; <img src='/latexrender/pictures/106d99b802e2b352cf3826a42acd37d2.png' title='C_8, C_4\times C_2, C_2^3, Q, D_4' alt='C_8, C_4\times C_2, C_2^3, Q, D_4' align='middle' />. We shall try to identify the group in question using orders of elements as the primary way of recognizing things. Consider an element ((x,y),z). </p>
<p>If z=1, then this squares to ((x<sup>2</sup>,y<sup>2</sup>),1) = ((1,1),1), so all these elements have order 2 (except for ((1,1),1) which has order 1). </p>
<p>If z=g, then the element squares to ((xy,yx),1). So if x=y, then the element squares to the identity, and thus has order 2. Remains two elements where this is nontrivial &#8211; namely ((1,h),g) and ((h,1),g) &#8211; both of which square to ((h,h),1), which squares to the identity. And thus these two elements have order 4.</p>
<p>Thus, no element of order 8 &#8211; and thus the group is not <img src='/latexrender/pictures/2a8a85a98252f4dc64df81d49883de9f.png' title='C_8' alt='C_8' align='middle' />. It has elements of order 4, and thus it&#8217;s also not <img src='/latexrender/pictures/31a6816e54847b32a955dd788633f267.png' title='C_2^3' alt='C_2^3' align='middle' />. A reasonable question at this point is whether it&#8217;s abelian. Consider the following products.<br />
((1,h),g) * ((1,h),1) = ((h,h),g)<br />
((1,h),1) * ((1,h),g) = ((1,1),g)<br />
thus eliminating <img src='/latexrender/pictures/dd48154a10cd1092d7a5abd1e0f57924.png' title='C_4\times C_2' alt='C_4\times C_2' align='middle' />.</p>
<p>This leaves <img src='/latexrender/pictures/46946c994396d8eab508d02e29f9e3ff.png' title='Q,D_4' alt='Q,D_4' align='middle' />. At this point, I&#8217;m basically going to make a lucky guess and give an isomorphism <img src='/latexrender/pictures/c45394fdfd00b5c77cee55963fb13132.png' title='H\wr_X G = D_4' alt='H\wr_X G = D_4' align='middle' />. Let <img src='/latexrender/pictures/f37262e1f7dd9ffb4b5319cfc16323d9.png' title='D_4=\langle a,b\mid a^4=b^2=abab=1\rangle' alt='D_4=\langle a,b\mid a^4=b^2=abab=1\rangle' align='middle' />.</p>
<p>We send ((1,h),g) = a, giving ((h,h),1) = a<sup>2</sup> and ((h,1),g) = a<sup>3</sup> = a<sup>-1</sup>. We then pick any one of the remaining nontrivial elements, say ((1,h),1) = b. We need to verify the relations in the group presentation. a<sup>4</sup>=1 and b<sup>2</sup>=1 are already reasonably obvious. So we compute<br />
((1,h),g)*((1,h),1)*((1,h),g)*((1,h),1) =<br />
((h,h),g)*((h,h),g) = ((1,1),1). Which concludes the identification.</p>
<p>For a second take, we consider X to have trivial G-action. Then, given <img src='/latexrender/pictures/f74229474917f7b8222202147b261636.png' title='x,y,z,a,b,c\in C_2' alt='x,y,z,a,b,c\in C_2' align='middle' />, we get the multiplication<br />
((x,y),z)*((a,b),c) = ((xa,yb),zc) &#8211; which is precisely the multiplication in <img src='/latexrender/pictures/9de11d3f3e1929752f0824edd6a0eb67.png' title='(C_2\times C_2)\times C_2' alt='(C_2\times C_2)\times C_2' align='middle' />. Thus, this wreath product is just <img src='/latexrender/pictures/31a6816e54847b32a955dd788633f267.png' title='C_2^3' alt='C_2^3' align='middle' />.</p>
<p>Finally, for a more challenging group identification, we consider <img src='/latexrender/pictures/d2dc9cc0588c232b102ba86f304aa9dc.png' title='G=X=C_3' alt='G=X=C_3' align='middle' /> with gx = x<sup>2</sup>. Elements in the wreath product <img src='/latexrender/pictures/3ec283eaffc119dd7ef0ebb122728172.png' title='H \wr_X G' alt='H \wr_X G' align='middle' /> have the form <img src='/latexrender/pictures/acef331bf40a3cb67ea922fdfa1c9765.png' title='((x,y,z),w)\in H^3\times G' alt='((x,y,z),w)\in H^3\times G' align='middle' />, and we get the multiplication as<br />
((x,y,z),w)*((a,b,c),d) = ((x,y,z)w(a,b,c),wd).</p>
<p>The group will be of order 24, so there&#8217;s a few more to choose from. For an elimination of all the abelian groups, consider<br />
((h,1,1),g) * ((1,h,1),g) = ((h,h,1),g<sup>2</sup>)<br />
((1,h,1),g) * ((h,1,1),g) = ((1,1,1),g<sup>2</sup>)</p>
<p>Now, all elements ((x,y,z),1) have order 2, so to maximize order, we need something like ((x,y,z),g). Now consider the powers of this element.<br />
((x,y,z),g)<br />
((xz,yx,zy),g<sup>2</sup>)<br />
((xzy,yxz,zyx),1) &#8211; which if exactly two of x,y,z are non-identity vanishes, and otherwise is nontrivial.<br />
((xzyx,yxzy,zyxz),g)<br />
((xzyxz,yxzyx,zyxzy),g<sup>2</sup>)<br />
((xzyxzy,yxzyxz,zyxzyx),1) = ((1,1,1),1)</p>
<p>So, no element has order more than 6. This, again, rules out many of the candidate groups.</p>
<p>To be specific &#8211; we can now partition the elements after order.<br />
((1,1,1),1) &#8211; 1 element, order 1<br />
((x,y,z),1) &#8211; 7 elements, order 2<br />
((1,1,1),g), ((h,h,1),g), ((h,1,h),g), ((1,h,h),g),<br />
((1,1,1),g<sup>2</sup>), ((h,h,1),g<sup>2</sup>), ((h,1,h),g<sup>2</sup>), ((1,h,h),g<sup>2</sup>) &#8211; 8 elements, order 3<br />
((h,1,1),g), ((1,h,1),g), ((1,1,h),g), ((h,h,h),g),<br />
((h,1,1),g<sup>2</sup>), ((1,h,1),g<sup>2</sup>), ((1,1,h),g<sup>2</sup>), ((h,h,h),g<sup>2</sup>) &#8211; 8 elements, order 6</p>
<p>At this point, I grab Google as a research assistant. It turns up <a href=http://web.usna.navy.mil/~wdj/gap/small_groups.html>15 groups of order 24</a>. Using the small groups database enumeration, we find:<br />
24.1: has an element of order 12.<br />
24.2: has an element of order 24. Also is abelian.<br />
24.3: has an element of order 4.<br />
24.4: has an element of order 4.<br />
24.5: has an element of order 4.<br />
24.6: has an element of order 4.<br />
24.7: has an element of order 4.<br />
24.8: has an element of order 4.<br />
24.9: is abelian.<br />
24.10: has an element of order 4.<br />
24.11: has an element of order 4.<br />
24.12: has an element of order 4.<br />
24.13: A<sub>4</sub>xC<sub>2</sub><br />
24.14: D<sub>6</sub>xC<sub>2</sub><br />
24.15: is abelian.</p>
<p>Now, with the candidate groups narrowed down this far, we consider the two remaining groups, and (in my case, using Magma), and grab the number of elements of each order.</p>
<p>A<sub>4</sub>xC<sub>2</sub>:<br />
1 element of order 1<br />
7 elements of order 2<br />
8 elements of order 3<br />
8 elements of order 6</p>
<p>D<sub>6</sub>xC<sub>2</sub>:<br />
1 element of order 1<br />
15 elements of order 2<br />
2 elements of order 3<br />
6 elements of order 6</p>
<p>which seals the deal. The group we&#8217;ve constructed is A<sub>4</sub>xC<sub>2</sub>.</p>
<p>Exhibiting an explicit isomorphism goes beyond what I feel like doing right this evening, and leave it as a nice exercise for the interested reader. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/10/wreath-products/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

