<?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; Mathematics</title>
	<atom:link href="http://blog.mikael.johanssons.org/archive/category/mathematics/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikael.johanssons.org</link>
	<description>Because my LiveJournal is too silly</description>
	<lastBuildDate>Tue, 23 Feb 2010 19:08:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Coordinatization with hom complexes</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/12/coordinatization-with-hom-complexes/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/12/coordinatization-with-hom-complexes/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 21:55:12 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=238</guid>
		<description><![CDATA[These are notes from a talk given at the Stanford applied topology seminar by Gunnar Carlsson from 9 Oct 2009. The main function of this blog post is to get me an easily accessible point of access for the ideas in that talk.
Coordinatization
First off, a few words on what we mean by coordinatization: as in [...]]]></description>
			<content:encoded><![CDATA[<p>These are notes from a talk given at the Stanford applied topology seminar by Gunnar Carlsson from 9 Oct 2009. The main function of this blog post is to get me an easily accessible point of access for the ideas in that talk.</p>
<h2>Coordinatization</h2>
<p>First off, a few words on what we mean by coordinatization: as in algebraic geometry, we say that a coordinate function is some <img src='/latexrender/pictures/7a366999ac6bcec934e01e48875d028d.png' title='X\to\mathbb R' alt='X\to\mathbb R' align='middle' /> or possibly some <img src='/latexrender/pictures/97d101f61e5bf831095eaeebf1bf0f02.png' title='X\to\mathbb C' alt='X\to\mathbb C' align='middle' />, with all the niceness properties we&#8217;d expect to see in the context we&#8217;re working.</p>
<p>A particularly good example is Principal Component Analysis which yields a split linear automorphism on the ambient space that maximizes spread of the data points in the initial coordinates.</p>
<h2>Topological coordinatization</h2>
<p>The core question we&#8217;re working with right now is this:<br />
Given a space (point cloud) X, and a (persistent) view of <img src='/latexrender/pictures/3de32d30e739c5c4dd5cb3408e4a599d.png' title='H_*(X)' alt='H_*(X)' align='middle' />, can we use some map <img src='/latexrender/pictures/231f1fda16241dfbb7706ee9a8b8c5c4.png' title='H_*(X)\to H_*(Y)' alt='H_*(X)\to H_*(Y)' align='middle' /> to generate a map <img src='/latexrender/pictures/c5c6eab38071acc9d029224e005ee003.png' title='X\to Y' alt='X\to Y' align='middle' /> inducing that map?</p>
<p>In topology there are ways around to compute spaces of maps directly from available homological information. The key phrase here is the <em>Eilenberg-Moore spectral sequence</em>, by which we compute <img src='/latexrender/pictures/1d9f67073cc06542303cda94df25ba02.png' title='H^*(\Omega X)' alt='H^*(\Omega X)' align='middle' /> using <img src='/latexrender/pictures/4bf2fabf6191fa36f442f6d71802224c.png' title='H^*(X)' alt='H^*(X)' align='middle' />. We note that <img src='/latexrender/pictures/41378f34e2388d7b9dae1b1f2f9b1578.png' title='\Omega X = Top_*(S^1,X)' alt='\Omega X = Top_*(S^1,X)' align='middle' /> with the <em>compact open</em> topology.</p>
<p>We fix a field k of coefficients. We can find a spectral sequence that computes<br />
<img src='/latexrender/pictures/b0130a74f05784c57b3b6dee36f263b8.png' title='Tor_{H^*(X)}(k,k)&amp;#8217; \Rightarrow H^*(\Omega X)' alt='Tor_{H^*(X)}(k,k)&amp;#8217; \Rightarrow H^*(\Omega X)' align='middle' /></p>
<p>Variations of this spectral sequence allow us to compute <img src='/latexrender/pictures/7b6306ce97bd676ad849c0b68bd46106.png' title='H^*(Map(X,Y))' alt='H^*(Map(X,Y))' align='middle' />. A homotopy class of maps thus corresponds to a cohomology element from <img src='/latexrender/pictures/5972c601ddb4ce9c449ad068ef9c7331.png' title='H^*(F(X,Y))' alt='H^*(F(X,Y))' align='middle' />.</p>
<h2>Monad approximation</h2>
<p>Define<br />
<img src='/latexrender/pictures/13df48c200db51646079eac6e467c4ed.png' title='Sp^2(X) = X \times_{\mathbb Z/2} X' alt='Sp^2(X) = X \times_{\mathbb Z/2} X' align='middle' /> (unordered pairs)<br />
and similarily unordered tuples<br />
<img src='/latexrender/pictures/3a4edb4b9c6c0dc33db0086cba8f9aaa.png' title='Sp^n(X) = X^n/\Sigma_n' alt='Sp^n(X) = X^n/\Sigma_n' align='middle' /><br />
we can get a map, for pointed spaces <img src='/latexrender/pictures/e678778186e1fd232c27f98e503c3705.png' title='(X,*)' alt='(X,*)' align='middle' /><br />
<img src='/latexrender/pictures/523603cb51eb401f5a93dc943763558f.png' title='Sp^n(X) \to Sp^{n+1}(X)' alt='Sp^n(X) \to Sp^{n+1}(X)' align='middle' /><br />
<img src='/latexrender/pictures/14eae37b5881b3a6a6ac7f9f5b040610.png' title='(x_1,\dots,x_n)\mapsto(x_1,\dots,x_n,*)' alt='(x_1,\dots,x_n)\mapsto(x_1,\dots,x_n,*)' align='middle' /></p>
<p>In the limit, we get the union <img src='/latexrender/pictures/c2d34ef4436574e1341c0ac4e4fba3ac.png' title='Sp^\infty(X)' alt='Sp^\infty(X)' align='middle' />.</p>
<p>The Dold-Thom theorem tells us:<br />
<img src='/latexrender/pictures/f5384e3eae6472abc41622b48f916dcd.png' title='\pi_i(Sp^\infty(X)) = H_i(X)' alt='\pi_i(Sp^\infty(X)) = H_i(X)' align='middle' /></p>
<p>Suppose we are really looking for maps <img src='/latexrender/pictures/03221fb866beb0e41e83e53df6c31087.png' title='Z\to Sp^\infty(X,*) \supseteq X = Sp^1(X)' alt='Z\to Sp^\infty(X,*) \supseteq X = Sp^1(X)' align='middle' />.</p>
<p>We pick chain complexes <img src='/latexrender/pictures/daa23756436e9545a9debd1c8448b7b2.png' title='C_*, D_*' alt='C_*, D_*' align='middle' />. There is a hom chain complex <img src='/latexrender/pictures/25c20015c704c9fbe48528018ce4b680.png' title='Hom(C_*,D_*)' alt='Hom(C_*,D_*)' align='middle' /> consisting of graded maps <img src='/latexrender/pictures/1f905c8580b7edcb95a677159ed139c2.png' title='C_*\to D_*' alt='C_*\to D_*' align='middle' /> with the homotopy/induced boundary<br />
<img src='/latexrender/pictures/204d908299845193d9723c00046b6b69.png' title='\Delta f = \partial_Df\pm f\partial_C' alt='\Delta f = \partial_Df\pm f\partial_C' align='middle' /></p>
<p>For this complex, we get<br />
<img src='/latexrender/pictures/a025672061535ddf2e7858115806d213.png' title='H_0(Hom(C_*,D_*))' alt='H_0(Hom(C_*,D_*))' align='middle' /> is the family of chain homotopy classes of chain maps <img src='/latexrender/pictures/1f905c8580b7edcb95a677159ed139c2.png' title='C_*\to D_*' alt='C_*\to D_*' align='middle' />.</p>
<p>Recall: <img src='/latexrender/pictures/9049a848dae63b78d444bb938a7de466.png' title='f,g' alt='f,g' align='middle' /> are chain homotopic if there is a family <img src='/latexrender/pictures/4683e6ba08551d7ad78c442b4dbe248a.png' title='h_i: C_i\to D_{i+1}' alt='h_i: C_i\to D_{i+1}' align='middle' /> such that <img src='/latexrender/pictures/34a71fda819a1f156c18d00ec44ff8af.png' title='f-g = \partial_D h_i + h_{i-1}\partial_C' alt='f-g = \partial_D h_i + h_{i-1}\partial_C' align='middle' />.</p>
<p>Homotopic space maps yield homotopic chain complex maps. And thus<br />
<img src='/latexrender/pictures/2916a30ae0f353cc4b23e5901d3ef386.png' title='Top_*(Z,Sp^\infty(X)) = H_*(Hom(C_*,D_*),\Delta)' alt='Top_*(Z,Sp^\infty(X)) = H_*(Hom(C_*,D_*),\Delta)' align='middle' /></p>
<p>How, though, do we get from <img src='/latexrender/pictures/fd0bba61b6dfa256cf73e479bd9845e7.png' title='[Z,Sp^\infty(X)]' alt='[Z,Sp^\infty(X)]' align='middle' /> to <img src='/latexrender/pictures/6e643ef9d5ed52970f589c63b3e42540.png' title='[Z,X]' alt='[Z,X]' align='middle' />?</p>
<h2>Cosimplicial spaces</h2>
<p>A simplicial space is a contravariant <img src='/latexrender/pictures/8bad30511496d987d0d11f74a6e0e7fb.png' title='\Delta\to X' alt='\Delta\to X' align='middle' />. It has a <em>total space</em> or <em>realization</em> given by<br />
<img src='/latexrender/pictures/d1b9714668d5e1dd4ecd46986b3a9cee.png' title='\coprod X_n\times\Delta[n]/\sim' alt='\coprod X_n\times\Delta[n]/\sim' align='middle' /></p>
<p>In the dual setting of cosimplicial spaces, the total space is a subspace of <img src='/latexrender/pictures/a32ddfcbcc00aa625661ed682822c8a3.png' title='X^0\times(X^1)^{\Delta[1]}\times(X^2)^{\Delta[2]}\times(X^3)^{\Delta[3]}\times\dots' alt='X^0\times(X^1)^{\Delta[1]}\times(X^2)^{\Delta[2]}\times(X^3)^{\Delta[3]}\times\dots' align='middle' />.</p>
<p>There is a cosimplicial space<br />
<img src='/latexrender/pictures/eb3ba7500d673ea4677d3bad96f4b749.png' title='Sp^\infty(X) \leftrightarrow Sp^\infty Sp^\infty(X) \leftrightarrow \dots' alt='Sp^\infty(X) \leftrightarrow Sp^\infty Sp^\infty(X) \leftrightarrow \dots' align='middle' /><br />
whose total space is <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />. </p>
<p>Furthermore, there is a spectral sequence starting at <img src='/latexrender/pictures/dc994233d52be6b24430741f721a9f26.png' title='H_*(Sp^\infty(X))' alt='H_*(Sp^\infty(X))' align='middle' /> (well understood space!)<br />
going through<br />
<img src='/latexrender/pictures/d991c819be2ca0eb6ae8a6d936156dd3.png' title='\pi_*(Top_*(Z,Sp^\infty Sp^\infty Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  X))' alt='\pi_*(Top_*(Z,Sp^\infty Sp^\infty Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  X))' align='middle' /><br />
which recovers <img src='/latexrender/pictures/ff1b8f06a4b4ffe2fb9dd14ce1b3281c.png' title='\pi_*(Top_*(Z,X))' alt='\pi_*(Top_*(Z,X))' align='middle' /> for us.</p>
<p>The mapping space <img src='/latexrender/pictures/c0547dfffa5536d9d42473c5be15b265.png' title='Top_*(Z,X)' alt='Top_*(Z,X)' align='middle' /> maps to <img src='/latexrender/pictures/158dd486167098051bc7609b7418b7bb.png' title='Top_*(Z,Sp^\infty X)' alt='Top_*(Z,Sp^\infty X)' align='middle' />, which sends <img src='/latexrender/pictures/b98d91c0c31e9744f375d31198d43ffc.png' title='H_*(Hom(C_*Z,C_*X))' alt='H_*(Hom(C_*Z,C_*X))' align='middle' /> to chain maps. Differentials give us conditions on chain maps to come from actual maps on the topological level <img src='/latexrender/pictures/f892a0dd0c0635937b911aa416b45385.png' title='Z\to X' alt='Z\to X' align='middle' />.</p>
<p>Suppose now that <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is a simplicial complex, and <img src='/latexrender/pictures/6d576ce6dee607ab8c36823747bdde3e.png' title='H_*X' alt='H_*X' align='middle' /> is known, say isomorphic to <img src='/latexrender/pictures/8d9ab1e8e97ebe6e83b6823c3ad067a8.png' title='H_*S^1' alt='H_*S^1' align='middle' />.</p>
<p>We pick <img src='/latexrender/pictures/679c4c927f816045befe573024ddd21b.png' title='S^1' alt='S^1' align='middle' /> as a model space, and work in <img src='/latexrender/pictures/27bdf889e1dc3e7b9d92bce75a27878f.png' title='Hom(C_*X,C_*S^1)' alt='Hom(C_*X,C_*S^1)' align='middle' />. We pick out conditions form the spectral sequence above to pick out chain maps that might come from topological maps.</p>
<p>Suppose we had some chain map <img src='/latexrender/pictures/6aa47fb9380f66fc33a3203cb17fb375.png' title='C_*X\overset{\varphi}{\to}C_*S^1' alt='C_*X\overset{\varphi}{\to}C_*S^1' align='middle' /> that sends <img src='/latexrender/pictures/e2b84a8d10865458b52a3f9638e61780.png' title='\sigma\mapsto\sum_{i=0}^n\eta_i' alt='\sigma\mapsto\sum_{i=0}^n\eta_i' align='middle' />.</p>
<p>We look for a chain homotopic map <img src='/latexrender/pictures/deb91d5ad889541f13fb0fdbe50cb465.png' title='\hat\varphi' alt='\hat\varphi' align='middle' /> such that <img src='/latexrender/pictures/672c34d7e86aa2f9d36d723e839905d7.png' title='\hat\varphi(\sigma)' alt='\hat\varphi(\sigma)' align='middle' /> is a simplex (this will be WAY too optimistic, usually) or at least <img src='/latexrender/pictures/76af92f70407245bf83fcad21cd44ffe.png' title='\hat\varphi(\sigma) = \sum_{i=0}^n\eta_i' alt='\hat\varphi(\sigma) = \sum_{i=0}^n\eta_i' align='middle' /> for small <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' /> and <img src='/latexrender/pictures/0cd55065f5366e853225383434efc0a1.png' title='\eta_i' alt='\eta_i' align='middle' /> close together in graph distances.</p>
<p>Yi Ding: there are likely many simplicial maps <img src='/latexrender/pictures/9112868fb2412bf46b638359cbf0ae9b.png' title='X\to S^1' alt='X\to S^1' align='middle' /> inducing any given <img src='/latexrender/pictures/2ec47654285e3cde82835f5108ed02e6.png' title='H_*X\to H_*S^1' alt='H_*X\to H_*S^1' align='middle' />. This makes optimizations on quality of maps (as measured in smallness properties of preimages of given simplices) troublesome, since we have a large search space and are likely to get stuck in local minima.</p>
<p>The topological approach creates very many maps, but we just want ONE &#8211; albeit with quality assurances. The big question is how to get there:</p>
<p>Shrinking the space? Homotopy collapses to reduce the number of generators?</p>
<p>Ask for more side conditions? If so, which?</p>
<p>Minimize the size of preimages and kernels &#8211; smoothing the resulting map?</p>
<p>Run with one condition until we reach a minimum, then change conditions to get out of that particular sink, repeat until it all looks stable?</p>
<p>Thus we need to search for strategies to improve convergence to actually good maps. </p>
<p>The questions we pose are similar to:</p>
<p>Jeff Ericksson, et al.: Given X, <img src='/latexrender/pictures/f37de6c8678aeeb25c8db5fea63941dc.png' title='x\in H_n(X)' alt='x\in H_n(X)' align='middle' />, how do we find a good representative <img src='/latexrender/pictures/469abcb4c4e81c81a68bea82ff6de380.png' title='\xi\in x' alt='\xi\in x' align='middle' />?</p>
<p>Finding good maps is really about finding good representatives in <img src='/latexrender/pictures/b2dd1894936c89847097bfec74edcae6.png' title='Hom(C_*X,C_*Y)' alt='Hom(C_*X,C_*Y)' align='middle' />. Given simplicial bases <img src='/latexrender/pictures/503a61d501d42064de556150d75e1fa3.png' title='\{\sigma_i\}\subseteq X, \{\eta_i\}\subseteq Y' alt='\{\sigma_i\}\subseteq X, \{\eta_i\}\subseteq Y' align='middle' /> we can pick out a first basis<br />
<img src='/latexrender/pictures/247a2e3627b8cb8620d00ea6a9b7cd2a.png' title='\varphi_{\sigma_i\eta_j}(\sigma_k)=\delta_{ik}\eta_j' alt='\varphi_{\sigma_i\eta_j}(\sigma_k)=\delta_{ik}\eta_j' align='middle' /> (Kronecker <img src='/latexrender/pictures/77a3b715842b45e440a5bee15357ad29.png' title='\delta' alt='\delta' align='middle' />) for <img src='/latexrender/pictures/43d0b5d9c180f05c90e5b879b74a1ebb.png' title='Hom(C_*X,C_*Y' alt='Hom(C_*X,C_*Y' align='middle' />.</p>
<p>Finally: many problems in data analysis call for analyzing contractible spaces. So if we pick out the notion of a boundary, doing all of this relative to a boundary would give us increased power to use the resulting methods in data analysis.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/12/coordinatization-with-hom-complexes/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 would you [...]]]></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 &#8211; Or &#8220;What I did in my vacation&#8221;</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 entry, [...]]]></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>1-manifolds and curves</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/05/1-manifolds-and-curves/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/05/1-manifolds-and-curves/#comments</comments>
		<pubDate>Sat, 02 May 2009 11:10:16 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=204</guid>
		<description><![CDATA[I have been painfully remiss in keeping this blog up and running lately. I wholeheartedly blame the pretty intense travel schedule I&#8217;ve been on for the last month and a half.
To get back into the game, I start things off with a letter from a reader. Rodolfo Medina write:

Hallo, Michi:
surfing around in internet, looking for [...]]]></description>
			<content:encoded><![CDATA[<p>I have been painfully remiss in keeping this blog up and running lately. I wholeheartedly blame the pretty intense travel schedule I&#8217;ve been on for the last month and a half.</p>
<p>To get back into the game, I start things off with a letter from a reader. Rodolfo Medina write:</p>
<blockquote><p>
Hallo, Michi:</p>
<p>surfing around in internet, looking for an answer to my question, I fell into<br />
your web site.</p>
<p>I&#8217;m looking for an answer to the following question:</p>
<p>my intuitive idea is that a one-dimensional connected topological submanifold<br />
of a topological space S should necessarily be the codomain of a curve (if we<br />
define a curve to be a continuous map from an R interval into a topological<br />
space).</p>
<p>Conversely, the codomain of an injective curve, defined in an open R interval,<br />
should necessarily be a one-dimensional topological submanifold of S.</p>
<p>Do you think that&#8217;s true?, and, if so, how could it be demonstrated?  The<br />
difficulty of the first statement is to paste together all charts so to create<br />
a unique homeomorfism.</p>
<p>Thanks for any reply<br />
Rodolfo
</p></blockquote>
<p>So, let&#8217;s see if we can assemble an answer. I started writing an email answer, which started ballooning way out of control; so after having checked some details with a colleague, I actually have an answer.</p>
<p>The question is in two parts. The first is whether any connected 1-dimensional topological manifold is a curve, viz. an image of an open interval under a continuous map. </p>
<p>This follows since the manifold is second countable, so we can pick a basis for the topology where each piece looks like an open interval, and just glue them together in order to find the curve parametrization.</p>
<p>The second is whether any image of an open interval is a topological 1-manifold.</p>
<p>For this, the answer is no. Consider the map illustrated by the following picture:<br />
<object type="image/svg+xml" data="http://blog.mikael.johanssons.org/wp-content/nonmanifoldcurve.svg" width="100" height="100" title="A nonmanifold curve" /></p>
<p>Note that this is non-self-intersecting since the loop never really reaches the curve, it only ever comes infinitesimally close. However, since it comes so close, any neighbourhood of the corresponding meeting point will look something like this:<br />
<object type="image/svg+xml" data="http://blog.mikael.johanssons.org/wp-content/nonmanifoldcurvelocal.svg" width="100" height="100" title="A nonmanifold curve, zoomed in" /><br />
and hence will never be homeomorphic to an interval. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/05/1-manifolds-and-curves/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Applied knot theory</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/03/applied-knot-theory/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/03/applied-knot-theory/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 01:41:45 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Knot theory]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=196</guid>
		<description><![CDATA[Tech note: All figures herewithin are produced in SVG. If you cannot see them, I recommend you figure out how to view SVGs in your browser. 
A few weeks ago, my friend radii was puzzling in his server hall. He asked if it was possible to prove that what he wanted to do was impossible, [...]]]></description>
			<content:encoded><![CDATA[<p>Tech note: All figures herewithin are produced in SVG. If you cannot see them, I recommend you figure out how to view SVGs in your browser. </p>
<p>A few weeks ago, my friend radii was puzzling in his server hall. He asked if it was possible to prove that what he wanted to do was impossible, or if he had to remain with his gut feeling. I asked him, and got the following explanation:</p>
<p>He had two strands of something ropelike, both fixed at large furnishings at one end, and fixed in a fixed sized loop at the other. He wanted to take these, and link them fast to each other in this fashion:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/radiiProblem.svg" alt="radii's problem description" /></p>
<p>I started thinking about the problem, and am now convinced I can prove the impossibility he asked for by basic techniques of knot theory. The argument is what I&#8217;ll fill this blog post about.</p>
<p>First observation is that due to the size of the fixtures, we can essentially consider the endpoints fixed. Not only that, but since we cannot thread the loops over the fixtures, there&#8217;s no way to just stick that loose end through any of the loops. So we can basically extract a cube of space and require that all of our modifications be contained completely within this cube, and then stick the endpoints just outside that cube.</p>
<p>This is something called a <em>framed knot</em>, and a popular object of study. My argument is going to manage to steer basically entirely clear of this, though, and I&#8217;ll just mention it as an extra property to remember.</p>
<p>The second observation is that the size of the loops is basically irrelevant. So we can make the length of the single strand part as small as we like, and as close to the fixed end as we like. Hence, for all purposes, we essentially want to produce a link like this:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/radiiReformulation.svg" alt="Reformulation of radii's problem" /></p>
<p>And this is essentially the problem I will approach. Now, I&#8217;m going to prove the impossibility by a method similar to how we prove that the <a href="http://en.wikipedia.org/wiki/Trefoil_knot">trefoil</a> and <a href="http://en.wikipedia.org/wiki/Unknot">unknot</a> are different; using three-colorability.</p>
<p>Equality of knots is basically equivalent to being able to go from the drawing of one knot to the drawing of another knot by the <a href="http://en.wikipedia.org/wiki/Reidemeister_move">Reidemeister moves</a>. I warmly recommend the wikipedia page for a first glance &#8211; these turn out to be absolutely central for constructing knot invariants.</p>
<p>For the trefoil argument, we start with discussing coloration of knots. Given three colors: red, green and blue, we may color each strand in a knot diagram with one of the colors. We require that at every crossing, each strand is either the same color, or different color. Obviously, every knot, including the unknot, can be colored in all the same color. And it turns out that the Reidemeister moves are compatible with knot coloration. The proof of this is entirely pictorial; up to a permutation of the colors, the following are all the options we have:<br />
Reidemeister I:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/reidemeister1.svg" alt="The first Reidemeister move, colorized" /></p>
<p>Reidemeister II:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/reidemeister2_1.svg" alt="The second Reidemeister move, monochromatic" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister2_2.svg" alt="The second Reidemeister move, colorized" /></p>
<p>Reidemeister III:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_1.svg" alt="The third Reidemeister move" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_2.svg" alt="The third Reidemeister move" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_3.svg" alt="The third Reidemeister move" /><br />
<embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_4.svg" alt="The third Reidemeister move" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_5.svg" alt="The third Reidemeister move" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_6.svg" alt="The third Reidemeister move" /><br />
<embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_7.svg" alt="The third Reidemeister move" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_8.svg" alt="The third Reidemeister move" /> <embed src="http://mikael.johanssons.org/radiiKnot/reidemeister3_9.svg" alt="The third Reidemeister move" /></p>
<p>The take home message is that for every crossing configuration, with fixed frame outside, all Reidemeister moves respect the colors at the frame.</p>
<p>So, how may we apply this to our problem? We still have the characterization of knot equality by finding sequences of Reidemeister moves. So we&#8217;ll start with the unknotted version of radii&#8217;s problem, and a chosen coloration:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/radiiUntiedColored.svg" alt="Colored untied version of radii's problem" /></p>
<p>Notice that in the diagrams above, the only way to introduce a new color is to already have at least two colors present. Hence, any Reidemeister moves made on this untied configuration will stay entirely green.</p>
<p>However, the target configuration does have this coloration:<br />
<embed src="http://mikael.johanssons.org/radiiKnot/radiiColored.svg" alt="Colored version of radii's problem" /><br />
Notice that the fixture coloration is identical to the one in the unknotted version, but that this version has all colors represented. However, since the Reidemeister moves cannot possibly introduce a new color starting in the untied version, they can never arrive at this particular configuration.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/03/applied-knot-theory/feed/</wfw:commentRss>
		<slash:comments>7</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 combinatoricists). He [...]]]></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>So that must mean I&#8217;ve been a mathematician since 2005?</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/12/so-that-must-mean-ive-been-a-mathematician-since-2005/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/12/so-that-must-mean-ive-been-a-mathematician-since-2005/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 03:03:02 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Communicating science]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=185</guid>
		<description><![CDATA[http://www.thesun.co.uk/sol/homepage/features/article2011061.ece
This is a rather atrocious article giving yet another ad hoc &#8220;formula&#8221; to compute some numeric measurement of something-or-other. In this particular case, it&#8217;s about cleavage, and how to avoid showing too much of it, but these &#8220;formulae&#8221; plague us every time some journalist wants to math up their reporting.
What caught my eye in this [...]]]></description>
			<content:encoded><![CDATA[<p>http://www.thesun.co.uk/sol/homepage/features/article2011061.ece</p>
<p>This is a rather atrocious article giving yet another ad hoc &#8220;formula&#8221; to compute some numeric measurement of something-or-other. In this particular case, it&#8217;s about cleavage, and how to avoid showing too much of it, but these &#8220;formulae&#8221; plague us every time some journalist wants to math up their reporting.</p>
<p>What caught my eye in this particular case was the people they lined up to back up the story.</p>
<blockquote><p>
Mathematician William Hartston, who holds an MA in Maths from Cambridge University, reckons this will save a lot of showbiz blushes on the red carpet.</p>
<p>“A girl can use this formula to see whether her outfit is counted as decent,” says William, author of Drunken Goldfish and Other Irrelevant Scientific Research.
</p></blockquote>
<p>So. He has a Masters in mathematics. Big whoop. Doesn&#8217;t seem to make him more able to distinguish nonsense when he sees it.</p>
<p>Oh, and their arithmetic is plain wrong &#8211; it doesn&#8217;t do what they claim it would. They try to apply it with the computation given by <i>0&#215;70x(20&#215;5+32)/75 = 123.2</i>, and disregard, completely, the fact that that zero up front means the whole thing is zero. I&#8217;ve tried, and I cannot at a first shot figure out what they THINK they are doing.</p>
<p>This rant was brought to you from a day filled with nothing done and an increasing feeling that I should do more.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/12/so-that-must-mean-ive-been-a-mathematician-since-2005/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>More on Lichtenstein</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/10/more-on-lichtenstein/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/10/more-on-lichtenstein/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 22:03:38 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=183</guid>
		<description><![CDATA[It turns out that there is even more to say on the communes of Lichtenstein.

First of all, there is a 5-clique in the communal graph, as Brian Hayes pointed out. But there are two different excluded subgraphs for planarity &#8211; so if we aren&#8217;t looking specifically for the chromatic number, but rather how this graph [...]]]></description>
			<content:encoded><![CDATA[<p>It turns out that there is even more to say on <a href="http://blog.mikael.johanssons.org/archive/2008/10/on-the-chromatic-number-of-lichtenstein/">the communes of Lichtenstein.<br />
</a><br />
First of all, there is a 5-clique in the communal graph, as Brian Hayes pointed out. But there are two different excluded subgraphs for planarity &#8211; so if we aren&#8217;t looking specifically for the chromatic number, but rather how this graph fails to be a &#8220;normal&#8221; land map, we might want to see whether it realizes BOTH.</p>
<p>It turns out that it does.</p>
<p>The following are two highlighted versions of the Liechtenstein communal graph.</p>
<p><img src="http://blog.mikael.johanssons.org/wp-content/liechtenstein-k5.png"><br />
The embedded K5 with edges in blue.</p>
<p><img src="http://blog.mikael.johanssons.org/wp-content/liechtenstein-k33.png"><br />
The embedded K33 with blue and red vertices.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/10/more-on-lichtenstein/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On the chromatic number of Lichtenstein</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/10/on-the-chromatic-number-of-lichtenstein/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/10/on-the-chromatic-number-of-lichtenstein/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 18:41:17 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=182</guid>
		<description><![CDATA[Following the featuring of the internal political structure of Lichtenstein on the Strange Maps blog, Brian Hayes asks for the chromatic number of Lichtenstein.
Rahul pointed out that I made errors in transferring the map to a graph. Specifically, I missed the borders Schellenberg-Eschen and Vaduz-Triesen. The post below changes accordingly.
Warning: This post DOES contain spoilers [...]]]></description>
			<content:encoded><![CDATA[<p>Following the featuring of the <a href="http://strangemaps.wordpress.com/2008/10/24/322-the-claves-of-liechtenstein">internal political structure of Lichtenstein</a> on the <a href="http://strangemaps.wordpress.com">Strange Maps</a> blog, Brian Hayes asks for the <a href="http://bit-player.org/2008/the-chromatic-number-of-liechtenstein">chromatic number of Lichtenstein</a>.</p>
<p><i>Rahul pointed out that I made errors in transferring the map to a graph. Specifically, I missed the borders Schellenberg-Eschen and Vaduz-Triesen. The post below changes accordingly.</i></p>
<p>Warning: This post DOES contain spoilers to Brian&#8217;s question. If you do want to investigate it yourself, you&#8217;ll need to stop reading now. Apologies to those on my planet feeds.</p>
<p>As a first step, we need to build a graph out of it. I labeled each region in turn with the exclaves numbered higher than the &#8220;main&#8221; region of each organizational unit. And then I build a .dot file to capture them all:</p>
<pre>
graph Lichtenstein {
  Ruggell -- Schellenberg
  Ruggell -- Gamprin1
  Schellenberg -- Mauren
  Schellenberg -- Eschen1
  Mauren -- Eschen1
  Gamprin1 -- Eschen2
  Gamprin1 -- Vaduz2
  Gamprin1 -- Schaan1
  Gamprin1 -- Planken3
  Gamprin1 -- Eschen1
  Eschen1 -- Gamprin2
  Eschen1 -- Planken1
  Eschen2 -- Schaan1
  Vaduz3 -- Schaan1
  Vaduz2 -- Schaan1
  Planken3 -- Schaan1
  Planken2 -- Schaan1
  Schaan1 -- Planken1
  Schaan1 -- Planken4
  Schaan1 -- Vaduz1
  Gamprin2 -- Eschen3
  Eschen3 -- Vaduz4
  Eschen3 -- Schaan2
  Vaduz4 -- Schaan2
  Vaduz4 -- Planken1
  Schaan2 -- Planken1
  Planken1 -- Schaan3
  Vaduz1 -- Triesenberg1
  Vaduz1 -- Triesen
  Planken4 -- Triesenberg1
  Planken4 -- Balzers2
  Balzers2 -- Vaduz5
  Balzers2 -- Schaan4
  Vaduz5 -- Schaan4
  Schaan4 -- Triesenberg1
  Schaan4 -- Vaduz6
  Schaan4 -- Triesenberg2
  Triesenberg1 -- Vaduz6
  Triesenberg1 -- Triesen
  Triesenberg1 -- Balzers3
  Triesen -- Balzers3
  Triesen -- Balzers1
  Triesen -- Schaan5
  Vaduz6 -- Schaan5
  Triesenberg2 -- Schaan5
}
</pre>
<p>Compiling this, we get the graph<br />
<img src="http://blog.mikael.johanssons.org/wp-content/liechtenstein-claves.png"></p>
<p>Now, with this it is an easy job to get the adjacency graph for the communes. We can just delete all numbers in the above dot file. Graphing that, we get instead<br />
<img src="http://blog.mikael.johanssons.org/wp-content/liechtenstein-compacted.png"></p>
<p>Note, however, that the massive duplication of adjacency edges makes this rather hard to read. So we can just amalgamate all those edges into one single edge each. So in the end, the Liechtenstein graph turns out to be<br />
<img src="http://blog.mikael.johanssons.org/wp-content/liechtenstein-sorted.png"></p>
<p>Now, as Brian points out, there is a 5-clique in this map, given by Schaan, Balzers, Vaduz, Planken, Triesenberg. </p>
<p><i>Edited</i>: Michael Lugo pointed out in the comments that my exclusion criterion for 6-cliques is obviously and trivially false. Discussion below here changed appropriately</p>
<p>If there were a 6-clique in the map, there would have to be 6 communes each of which have at least 5 edges connected to them. We can construct the table of degrees for all communes, to see whether this helps:<br />
Balzers: 5<br />
Eschen: 6<br />
Gamprin: 5<br />
Mauren: 2<br />
Planken: 6<br />
Ruggell: 2<br />
Schaan: 7<br />
Schellenberg: 3<br />
Triesen: 4<br />
Triesenberg: 5<br />
Vaduz: 7</p>
<p>So, we have enough edges in Balzers, Eschen, Gamprin, Planken, Schaan, Triesenberg and Vaduz. This gives us 7 candidates for a 6-clique. Thus if two of these have too many edges outside this group, we know that there cannot be a 6-clique in the commune-graph. </p>
<p>Now note that Triesenberg borders to Triesen, so at most 4 of those 5 edges can be within a 6-clique. Also, Gamprin borders to Ruggell, so at most 4 of Gamprin&#8217;s 5 edges can be within a 6-clique. Thus the graph contains no 6-cliques.</p>
<p>Does this, though, mean that we can construct a 5-coloring of the graph? Try this on:<br />
<img src="http://blog.mikael.johanssons.org/wp-content/liechtenstein-colored.png"></p>
<p>I would recolor the Liechtenstein map using this color choice, but I haven&#8217;t gotten around to installing a decent picture editing program just yet. That&#8217;ll have to wait.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/10/on-the-chromatic-number-of-lichtenstein/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cup products in simplicial cohomology</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/09/cup-products-in-simplicial-cohomology/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/09/cup-products-in-simplicial-cohomology/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 00:12:20 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=181</guid>
		<description><![CDATA[This post is a walkthrough through a computation I just did &#8211; and one of the main reasons I post it is for you to find and tell me what I&#8217;ve done wrong. I have a nagging feeling that the cup product just plain doesn&#8217;t work the way I tried to make it work, and [...]]]></description>
			<content:encoded><![CDATA[<p>This post is a walkthrough through a computation I just did &#8211; and one of the main reasons I post it is for you to find and tell me what I&#8217;ve done wrong. I have a nagging feeling that the cup product just plain doesn&#8217;t work the way I tried to make it work, and since I&#8217;m trying to understand cup products, I&#8217;d appreciate any help anyone has.</p>
<p>I&#8217;ve picked out the examples I have in order to have two spaces with the same Betti numbers, but with different cohomological ring structure.</p>
<h2>Sphere with two handles</h2>
<p>I choose a triangulation of the sphere with two handles given the boundary of a tetrahedron spanned by the nodes a,b,c,d and the edges be, ef, bf and cg, ch, gh spanning two triangles.</p>
<p>We get a cochain complex on the form<br />
<img src='/latexrender/pictures/bcaf78d120614a4d1552487d7aaeda95.png' title='0 \to \mathbb{Z}^8 \to \mathbb{Z}^{12} \to \mathbb{Z}^4 \to 0' alt='0 \to \mathbb{Z}^8 \to \mathbb{Z}^{12} \to \mathbb{Z}^4 \to 0' align='middle' /><br />
with the codifferential given as<br />
<img src='/latexrender/pictures/227ea1c8105ebaa143111b7fa79d4b8b.png' title='&#10;\begin{pmatrix}&#10;1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;1 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;1 &amp; 0 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; 0 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; -1 &amp; 0 &amp; 0\\&#10;0 &amp; 0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; -1 &amp; 0\\&#10;0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; -1\\&#10;0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; -1 &amp; 0 &amp; 0\\&#10;0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; -1\\&#10;\end{pmatrix}&#10;' alt='&#10;\begin{pmatrix}&#10;1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;1 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;1 &amp; 0 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; 0 &amp; 0 &amp; -1 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; -1 &amp; 0 &amp; 0\\&#10;0 &amp; 0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0\\&#10;0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; -1 &amp; 0\\&#10;0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; -1\\&#10;0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; -1 &amp; 0 &amp; 0\\&#10;0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; -1\\&#10;\end{pmatrix}&#10;' align='middle' /><br />
and<br />
<img src='/latexrender/pictures/36f0923f0595df1a31aae2ff60145bcc.png' title='&#10;\begin{pmatrix}&#10;1 &amp; -1 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;1 &amp; 0 &amp; -1 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;0 &amp; 0 &amp; 0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;\end{pmatrix}&#10;' alt='&#10;\begin{pmatrix}&#10;1 &amp; -1 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;1 &amp; 0 &amp; -1 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;0 &amp; 0 &amp; 0 &amp; 1 &amp; -1 &amp; 0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\&#10;\end{pmatrix}&#10;' align='middle' /></p>
<p>Computing nullspaces and images, we get a one-dimensional <img src='/latexrender/pictures/9f5d4f78848507a34947d29e7ea37069.png' title='H^0' alt='H^0' align='middle' />, generated by <img src='/latexrender/pictures/cd8f82c760ea2499f960e5a858cc8291.png' title='a^*+b^*+c^*+d^*+e^*+f^*+g^*+h^*' alt='a^*+b^*+c^*+d^*+e^*+f^*+g^*+h^*' align='middle' />, a two-dimensional <img src='/latexrender/pictures/a588cbba9250f43512d6ae25be83b02f.png' title='H^1' alt='H^1' align='middle' /> with one basis given by <img src='/latexrender/pictures/cedc398d609a7c3b3e57b07d5d7ce684.png' title='ef^*' alt='ef^*' align='middle' /> and <img src='/latexrender/pictures/4b890943392a9607ecf861c9ab43825b.png' title='gh^*' alt='gh^*' align='middle' />, and a one-dimensional <img src='/latexrender/pictures/ad119f6b80e1bfbffd793099bdef09e6.png' title='H^2' alt='H^2' align='middle' /> with the linear dual of any of the four 2-cells as an acceptable basis choice, for instance <img src='/latexrender/pictures/0c0b606dc6fd89c6ebe8a2ea9ea5cea3.png' title='bcd^*' alt='bcd^*' align='middle' />. Throughout, given a simplex <img src='/latexrender/pictures/a2ab7d71a0f07f388ff823293c147d21.png' title='\sigma' alt='\sigma' align='middle' /> I write <img src='/latexrender/pictures/b5d01f28c8e00d1d814179db8e835844.png' title='\sigma^*' alt='\sigma^*' align='middle' /> for the functional <img src='/latexrender/pictures/8405e6c7584ed50c8c88ea38bff99a75.png' title='C_*(X)\to\mathbb Z' alt='C_*(X)\to\mathbb Z' align='middle' /> that takes <img src='/latexrender/pictures/8ce66c57a003bef8c3d79ec146c6237f.png' title='\sigma\mapsto 1' alt='\sigma\mapsto 1' align='middle' /> and <img src='/latexrender/pictures/1d3638692b043a243d78a9f74aaee67b.png' title='\tau\mapsto 0' alt='\tau\mapsto 0' align='middle' /> for all other simplices <img src='/latexrender/pictures/a6f317b268ae825d94f832f970af607c.png' title='\tau' alt='\tau' align='middle' />.</p>
<p>Now, the Encyclopedia of Topology, volume II has a paper by Viro and Fuchs on homology and cohomology. They state a direct construction of the cup product as defined by the following:<br />
<img src='/latexrender/pictures/1a1e88c483663493d790128ec635ec7d.png' title='[c_1\cup c_2](\sigma) = c_1(\sigma_{0\ldots q_1})c_2(\sigma_{q_1\ldots q_1+q_2})' alt='[c_1\cup c_2](\sigma) = c_1(\sigma_{0\ldots q_1})c_2(\sigma_{q_1\ldots q_1+q_2})' align='middle' /> where the q:s are the degrees of the c:s. They also state that (at least if X is connected) any degree 0 coclass acts as identity under the cup product.</p>
<p>So, any product of something in <img src='/latexrender/pictures/9f5d4f78848507a34947d29e7ea37069.png' title='H^0' alt='H^0' align='middle' /> with anything else is already clear. And any product of a degree 1 or 2 coclass with a degree 2 coclass will have to vanish &#8211; since there isn&#8217;t anything for it to possibly hit. Remains the three possible products of two coclasses both of degree 1.</p>
<p>Now, by the definition of the coclasses, we need something that is an equivalence class of linear duals of 2-cells to split into things that only operate on the two handles. However, these are geometrically disjoint &#8211; so any cell we could feed into such a product would vanish on the components. For instance,<br />
<img src='/latexrender/pictures/4b42e7507335cbdae6472608951f04af.png' title='(ef^*)\cup(ef^*)(bcd)=(ef^*)(bc)\cdot(ef^*)(cd)=0' alt='(ef^*)\cup(ef^*)(bcd)=(ef^*)(bc)\cdot(ef^*)(cd)=0' align='middle' /></p>
<p>So all the higher degree cohomology products have to vanish. </p>
<h2>Torus</h2>
<p>We pick a triangulation of the torus with 9 vertices, 27 one-cells and 18 2-cells, given as the identification space of a square, in a usual manner. It&#8217;s going to be obnoxious to write down boundary maps, and list all cells, so I&#8217;ll just refer you to the following picture instead:<br />
<img src="http://blog.mikael.johanssons.org/wp-content/torus.png" alt="Torus triangulation" /></p>
<p>Now, setting up the same computations to get the cohomology classes, we arrive at a one-dimensional class in degree zero, represented by the sum of all duals of all vertices, two classes in degree one, with representatives given, for instance, by <img src='/latexrender/pictures/4b87203741ef79bc17ab33cfc69efad9.png' title='bc^*-ce^*-ci^*-di^*+ef^*-fh^*-fi^*-gi^*' alt='bc^*-ce^*-ci^*-di^*+ef^*-fh^*-fi^*-gi^*' align='middle' /> and <img src='/latexrender/pictures/0841a7afbf95e2542bf2429237825ec4.png' title='dg^*+di^*+eg^*+eh^*+fh^*+fi^*' alt='dg^*+di^*+eg^*+eh^*+fh^*+fi^*' align='middle' />, and one class in degree two, represented by the dual of any 2-cell &#8211; for instance <img src='/latexrender/pictures/61cca358a7c0e91d409590d5ad2ed878.png' title='fhi^*' alt='fhi^*' align='middle' />.</p>
<p>Now is where I find things get tricky. Again, we get the 0-degree class acting as, essentially, an identity. And the only products that could possibly be nontrivial now would be products of two classes of degree 1. So let&#8217;s call the classes <img src='/latexrender/pictures/2c4cf6962f885c2c75ab11ce45063565.png' title='[u]' alt='[u]' align='middle' /> and <img src='/latexrender/pictures/ffc86d011359d705c53201cf057f7662.png' title='[v]' alt='[v]' align='middle' />, and lets call the degree 2 class <img src='/latexrender/pictures/53cba3c292cd4b1992099a31bbf472b2.png' title='[w]' alt='[w]' align='middle' />.<br />
Using the Viro-Fuchs construction of the cup product, I should be able to say that if we consider <img src='/latexrender/pictures/72a79d50bc842493df185bd2768c58ba.png' title='[u]\cup[u](bce) = u(bc)\cdot u(ce) = 1\cdot(-1) = -1' alt='[u]\cup[u](bce) = u(bc)\cdot u(ce) = 1\cdot(-1) = -1' align='middle' /> and therefore <img src='/latexrender/pictures/220d8698356dec875707f64d4ccfbc76.png' title='[u]\cup[v]=[w]' alt='[u]\cup[v]=[w]' align='middle' /> (there is some reference to the codifferential matrices hidden in the signs here), and similarily, by considering the simplex idg (= dgi with a cyclic permutation) twice we would get <img src='/latexrender/pictures/4667256dc8983cf8fcd978d17188d4fb.png' title='[u]\cup[v]=[v]\cup[v]=[w]' alt='[u]\cup[v]=[v]\cup[v]=[w]' align='middle' />.</p>
<p>This, somehow, feels fishy. Could anyone check my reasoning for me, please?</p>
<p><i>Edited to add:</i> indeed this was fishy. The kind of blatant reordering I did to compute with dgi isn&#8217;t permissible. Also, we know that the square of a degree 1 coclass has to vanish, since the cohomology ring is graded commutative. However, we&#8217;re not far from the truth: If we want to compute <img src='/latexrender/pictures/5888ea266bb3b0ed1bd88f2f3d435ca7.png' title='[u]\cup[v]' alt='[u]\cup[v]' align='middle' />, we should look at all pairs of coclasses in the expression for each, and look for pairs that &#8220;connect&#8221; to form a valid 2-cell. So, from u we can immediately discard bc, ci, di, fh, fi and gi, since nothing in v starts with c,h or i. Remains to check which of the cells ce and ef connect to anything at all. We get, in the end, the pairings<br />
ce,eg<br />
ce,eh<br />
ef,fh<br />
ef,fi<br />
corresponding to the resulting potential 2-coclasses <img src='/latexrender/pictures/2164ddac0a0711d08404d3555a0788b2.png' title='ceg^*' alt='ceg^*' align='middle' />, <img src='/latexrender/pictures/496eeaf463be9e8877f9d99c8157d11a.png' title='ceh^*' alt='ceh^*' align='middle' />, <img src='/latexrender/pictures/64d8469aa6e2a82ee91d6e0bc6913fe3.png' title='efh^*' alt='efh^*' align='middle' /> and <img src='/latexrender/pictures/9458cb133e3b130d3505868fb648034d.png' title='efi^*' alt='efi^*' align='middle' />. However, looking over our sketch again, we see that the cells ceg, ceh and efi are absent from our triangulation of the torus. Hence, the only potential 2-coclass representative surviving is <img src='/latexrender/pictures/64d8469aa6e2a82ee91d6e0bc6913fe3.png' title='efh^*' alt='efh^*' align='middle' />, which represents the actual cup product, yielding <img src='/latexrender/pictures/31920f31875f2808382c6364547d3bf1.png' title='[u]\cup[v]=[efh^*]' alt='[u]\cup[v]=[efh^*]' align='middle' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/09/cup-products-in-simplicial-cohomology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R and topological data analysis</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/08/r-and-topological-data-analysis/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/08/r-and-topological-data-analysis/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 15:38:00 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=179</guid>
		<description><![CDATA[This is extremely early playing around. It touches on things I&#8217;m going to be working with in Stanford, but at this point, I&#8217;m not even up on toy level.
We&#8217;ll start by generating a dataset. Essentially, I&#8217;ll take the trefolium, sample points on the curve, and then perturb each point ever so slightly.

idx &#60;- 1:2000
theta &#60;- [...]]]></description>
			<content:encoded><![CDATA[<p>This is extremely early playing around. It touches on things I&#8217;m going to be working with in Stanford, but at this point, I&#8217;m not even up on toy level.</p>
<p>We&#8217;ll start by generating a dataset. Essentially, I&#8217;ll take the trefolium, sample points on the curve, and then perturb each point ever so slightly.</p>
<div class="dean_ch" style="white-space: wrap;">
idx &lt;- 1:2000<br />
theta &lt;- idx*2*pi/2000<br />
a &lt;- cos(3*theta)<br />
x &lt;- a*cos(theta)<br />
y &lt;- a*sin(theta)<br />
xper &lt;- rnorm(2000)<br />
yper &lt;- rnorm<br />
xd &lt;- x + xper/100<br />
yd &lt;- y + yper/100<br />
cd &lt;- cbind(xd,yd)<br />
&nbsp;</div>
<p>As a result, we get a dataset that looks like this:<br />
<img src="http://blog.mikael.johanssons.org/wp-content/uploads/2008/08/trifolium_data.png" alt="Trifolium data" /></p>
<p>So, let&#8217;s pick a sample from the dataset. What I&#8217;d really want to do now would be to do the witness complex construction, but I haven&#8217;t figured enough out about how R ticks to do quite that. So we&#8217;ll pick a sample and then build the 1-skeleton of the Rips-Vietoris complex using Euclidean distance between points. This means, we&#8217;ll draw a graph on the dataset with an edge between two sample points whenever they are within &epsilon; from each other.</p>
<p>So we pick a sample from this sample. Every 31 points might be good. (number arrived at by guessing wildly, and drawing the resulting images until they looked pretty enough)</p>
<div class="dean_ch" style="white-space: wrap;">
csamp &lt;- cd[seq(1,dim(csamp)[1],31),]<br />
&nbsp;</div>
<p>We&#8217;d get, from this, the following result:<br />
<img src="http://blog.mikael.johanssons.org/wp-content/uploads/2008/08/trifolium_sample.png" alt="Trifolium sample" /></p>
<p>Now, we&#8217;ll want to build the corresponding skeleton. Let&#8217;s do it for a few different &epsilon;s to demonstrate the difference.</p>
<div class="dean_ch" style="white-space: wrap;">
d &lt;- function(x,y,z,w) { sqrt((x-z)^2+(y-w)^2) }<br />
par(mfrow=c(2,2))<br />
eps &lt;- c(0.05,0.1,0.15,0.2)<br />
cols &lt;- c(&quot;cyan&quot;,&quot;green&quot;,&quot;yellow&quot;,&quot;red&quot;)<br />
for (ei in 1:length(eps)) {<br />
&nbsp; plot(cd,col=&quot;gray&quot;)<br />
&nbsp; points(csamp,col=&quot;blue&quot;)<br />
&nbsp; title(eps[ei])<br />
&nbsp; for (i in 1:dim(csamp)[1]) {<br />
&nbsp; &nbsp; for (j in 1:dim(csamp)[1]) {<br />
&nbsp; &nbsp; &nbsp; x &lt;- csamp[i,1]; y &lt;- csamp[i,2]<br />
&nbsp; &nbsp; &nbsp; z &lt;- csamp[j,1]; w &lt;- csamp[j,2]<br />
&nbsp; &nbsp; &nbsp; e &lt;- eps[ei]<br />
&nbsp; &nbsp; &nbsp; if(d(x,y,z,w) &lt; 2*e) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; segments(x,y,z,w,col=cols[ei])<br />
&nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp; }<br />
}<br />
&nbsp;</div>
<p>The result is:<br />
<img src="http://blog.mikael.johanssons.org/wp-content/uploads/2008/08/trifolium_skeleta.png" alt="Trifolium skeleta" /></p>
<p>We notice that as the radius we observe grows, we connect all the loops, but by the time the loops are completely connected, there are also cross connections forming toward the middle. However, with any luck, these cross connections will be so short-lived, in terms of the radii we use, so that the homology classes we extract from the Rips-Vietoris complexes are noticably more persistent.</p>
<p>Doing the corresponding computation relies on me figuring enough out to use the Plex software suite, or writing my own, and thus will be subject of a much later blog post. This one was mainly &#8220;Look &#8211; I use R&#8221; and &#8220;Look &#8211; pretty pictures&#8221;. Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/08/r-and-topological-data-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RIP Henri Cartan</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/08/rip-henri-cartan/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/08/rip-henri-cartan/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 17:29:03 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=178</guid>
		<description><![CDATA[As John Armstrong said, I didn&#8217;t know he was still alive!
On the algebraic topology mailing list, the announcement came today that Henri Cartan, once co-founder of Nicholas Bourbaki, died August 13, 2008:

    La Société Mathématique de France (SMF) a la tristesse d’annoncer le décès d’Henri Cartan survenu le 13 août 2008 à [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://unapologetic.wordpress.com/2008/08/22/he-was-still-alive/">John Armstrong</a> said, I didn&#8217;t know he was still alive!</p>
<p>On the algebraic topology mailing list, the announcement came today that Henri Cartan, once co-founder of Nicholas Bourbaki, died August 13, 2008:</p>
<blockquote><p>
    La Société Mathématique de France (SMF) a la tristesse d’annoncer le décès d’Henri Cartan survenu le 13 août 2008 à Paris à l’age de 104 ans. Auteur d’une oeuvre scientifique considérable, membre fondateur du groupe Bourbaki, Henri Cartan a initié des générations de mathématiciens à la pensée mathématique, à son exposition et à son écriture. Président de la SMF en 1950, il a joué dès cette période un rôle de premier plan dans la vie mathématique mondiale. Européen de la première heure, il a fondé en 1957 l’Association européenne des enseignants et proposé dès lors la création d’un Livret Européen de l’Étudiant.<br />
    Militant des droits de l’homme, il a participé à la création du Comité des mathématiciens et oeuvré pour la libération de mathématiciens injustement emprisonnés à travers le monde.</p>
<p>    C’est avec une grande émotion que la Société Mathématique de France salue la mémoire du mathématicien éminent, de l’homme d’une très grande rigueur morale et de l’humaniste que fut Henri Cartan.</p>
<p>    Un dossier concernant Henri Cartan avait été réuni lors de la journée organisée par l’ENS et la SMF à l’occasion de son centenaire :<br />
http://smf.emath.fr/VieSociete/Rencontres/JourneeCartan/NoticeCartan.html.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/08/rip-henri-cartan/feed/</wfw:commentRss>
		<slash:comments>0</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 topology [...]]]></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>On purity and essence of mathematics</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/06/on-purity-and-essence-of-mathematics/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/06/on-purity-and-essence-of-mathematics/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 11:06:54 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Metablogging]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=171</guid>
		<description><![CDATA[I seem, lately, to be so densely planned that all I can do for my blog is to react on blog posts from Ben Webster at the Secret Blogging Seminar.
He has, recently, written a post inspired by the xkcd comic on purity in the sciences. The comic is funny, and rings true, but Ben brings [...]]]></description>
			<content:encoded><![CDATA[<p>I seem, lately, to be so densely planned that all I can do for my blog is to react on blog posts from Ben Webster at the <a href="http://sbseminar.wordpress.com">Secret Blogging Seminar</a>.</p>
<p>He has, recently, written <a href="http://sbseminar.wordpress.com/2008/06/14/what-is-purity/">a post</a> inspired by the <a href="http://xkcd.com">xkcd</a> comic on <a href="http://xkcd.com/435/">purity in the sciences</a>. The comic is funny, and rings true, but Ben brings up a severe criticism of the premises of the comic that rings back to my own years as a hotheaded undergraduate.</p>
<p>You should read all of Ben&#8217;s post, but if you don&#8217;t, you should at least read the following:</p>
<blockquote><p>
And I think one of the key points here is this: mathematics is not science. Mathematics is often lumped in with science, and is often used by scientists. Mathematicians often know more science than normal people, and certainly scientists know more mathematics. But mathematics and science are fundamentally different activities, as different as making a gun and fighting in a battle. I mean, no one would claim there are no links between those occupations, or that gun-makers don’t pay a lot of attention to how guns are used, but not even a child would mistake one for the other. Putting mathematics on a continuum of purity with sciences is like putting it on a continuum with disciplines of art ordered by “highbrow-ness” (actually, I would argue that the latter captures the nature of mathematics better).
</p></blockquote>
<p>The critique here is pretty close to my own age-old hobby horse: the epistemology of mathematics is fundamentally different from the epistemology of the sciences. I used to use this as an argument for transferring the Department of Mathematics at Stockholm University from the Faculty of Sciences to the Faculty of Humanities. Nobody really took me serious back then. However, the basic ideas underlying it all reoccurs: both in Ben&#8217;s post, and in <a href="http://pozorvlak.livejournal.com">Pozorvlak&#8217;s</a> excellent shot at <a href="http://pozorvlak.livejournal.com/107454.html">classifying academic disciplines by their epistemology</a>. Pozorvlak expands on his treatment of it all, but if we restrict it to the case Ben discusses, his point is basically this:<br />
Mathematics deals with statements that can be proven.<br />
Science deals with statements that cannot be proven, but can be falsified.</p>
<p>These two types of statements lead pretty immediately to different ideas of what <i>truth</i> is &#8211; and what knowledge is and all sorts of deep philosophical (as in cannot be proven, cannot be falsified, cannot even find circumstantial evidence for) questions dealing with the meta-level of academic research.</p>
<p>Nowadays, my University has the Mathematics department placed in the Faculty for Mathematics and Computer Science &#8211; and I have much less objections to this state of affairs.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/06/on-purity-and-essence-of-mathematics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
