<?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; PhD</title>
	<atom:link href="http://blog.mikael.johanssons.org/archive/category/phd/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikael.johanssons.org</link>
	<description>Because my LiveJournal is too silly</description>
	<lastBuildDate>Sat, 12 Nov 2011 15:09:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Dr rer nat, Magna cum laude</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/07/dr-rer-nat-magna-cum-laude/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/07/dr-rer-nat-magna-cum-laude/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 13:43:39 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Postdoc Carnival]]></category>

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

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

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/01/building-my-academic-persona/</guid>
		<description><![CDATA[http://arxiv.org/abs/0707.1637 Just got accepted for publication in the Journal of Homotopy and Related Structures. Damn, this feels good!]]></description>
			<content:encoded><![CDATA[<p>http://arxiv.org/abs/0707.1637</p>
<p>Just got accepted for publication in the Journal of Homotopy and Related Structures.</p>
<p>Damn, this feels good!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/01/building-my-academic-persona/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Papers status</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/12/papers-status/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/12/papers-status/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 09:34:49 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[PhD]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/12/papers-status/</guid>
		<description><![CDATA[I just received my first ever referee&#8217;s report. Yikes! Suffice to say, the report did not, as some I&#8217;ve seen blogged about, tear me a new one. Far from it &#8211; it was civil, kind, and pointed out several areas where my article text overlapped known arguments from other people and was generally superfluous as [...]]]></description>
			<content:encoded><![CDATA[<p>I just received my first ever referee&#8217;s report. Yikes!</p>
<p>Suffice to say, the report did not, as some I&#8217;ve seen blogged about, tear me a new one. Far from it &#8211; it was civil, kind, and pointed out several areas where my article text overlapped known arguments from other people and was generally superfluous as well as several areas where my article was too curt and didn&#8217;t actually spell out the new ideas sticking in it.</p>
<p>Also, making the relation of my results and those I rely on to the results of the Grand Old Man in applying <img src='/latexrender/pictures/aaac3503d31e7b6b4050353569133bd2.png' title='A_\infty' alt='A_\infty' align='middle' />-techniques in group cohomology explicit and discuss these in more detail was requested.</p>
<p>I know I couldn&#8217;t expect to write The Perfect Article as my first submission ever. And it&#8217;s not a flat out denial. And it brings constructive comments about how to make this a better article. Still, I think my ego needs a little bit of training to learn to cope with this part of the review process.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/12/papers-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progress</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/09/progress/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/09/progress/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 03:25:10 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/09/progress/</guid>
		<description><![CDATA[dynkin:~/magma> magma Magma V2.14-D250907 Wed Sep 26 2007 13:19:51 on dynkin [Seed = 1] Type ? for help. Type -D to quit. Loading startup file "/home/mik/.magmarc" > Attach("homotopy.m"); > Attach("assoc.m"); > Aoo := ConstructAooRecord(DihedralGroup(4),10); > S := CohomologyRingQuotient(Aoo`R); > CalculateHighProduct(Aoo,[x,y,x,y]); z > exit; Total time: 203.039 seconds, Total memory usage: 146.18MB And this is one [...]]]></description>
			<content:encoded><![CDATA[<pre>
dynkin:~/magma> magma
Magma V2.14-D250907   Wed Sep 26 2007 13:19:51 on dynkin   [Seed = 1]
Type ? for help.  Type <Ctrl>-D to quit.

Loading startup file "/home/mik/.magmarc"

> Attach("homotopy.m");
> Attach("assoc.m");
> Aoo := ConstructAooRecord(DihedralGroup(4),10);
> S<x,y,z> := CohomologyRingQuotient(Aoo`R);
> CalculateHighProduct(Aoo,[x,y,x,y]);
z
> exit;
Total time: 203.039 seconds, Total memory usage: 146.18MB
</pre>
<p>And this is one major reason for the lack of updates recently.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/09/progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today seems to be a day for posting&#8230;</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/07/today-seems-to-be-a-day-for-posting/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/07/today-seems-to-be-a-day-for-posting/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 19:20:21 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Metablogging]]></category>
		<category><![CDATA[PhD]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/07/today-seems-to-be-a-day-for-posting/</guid>
		<description><![CDATA[ComplexZeta asked me about the origins of my intuitions for homological algebra in my recent post. The answer got a bit lengthy, so I&#8217;ll put it in a post of its own. I find Weibel very readable &#8211; once the interest is there. It&#8217;s a good reference, and not as opaque as, for instance, the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://complexzeta.wordpress.com">ComplexZeta</a> <a href="http://blog.mikael.johanssons.org/archive/2007/07/the-why-and-the-what-of-homological-algebra/">asked me about the origins of my intuitions</a> for homological algebra in my recent post. The answer got a bit lengthy, so I&#8217;ll put it in a post of its own.</p>
<p>I find Weibel very readable &#8211; once the interest is there. It&#8217;s a good reference, and not as opaque as, for instance, the MacLane + Hilton-Stammbach couplet can be at points.</p>
<p>The interest, however, is something I blame my alma mater for. Once upon a time, Jan-Erik Roos went to Paris and studied with Grothendieck. When he got back, he got a professorship at Stockholm University without having finished his PhD. He promptly made sure that nowadays (when he&#8217;s an Emeritus stalking the halls) there is not a single algebraist at Stockholm University without some sort of intuition for homological algebra.</p>
<p>So, my MSc advisor, Jörgen Backelin, gave me a subject building on from things that he touched in his PhD thesis, since I was obviously interested in combinatorics. And as such, nothing fits me better than looking at Ext and Tor over monomial rings (corresponding to coordinate hyperplane varieties&#8230;)</p>
<p>The other Very Interesting teacher, Jan-Erik Björk, at that university held a course in homological algebra that I attended. It was very handwavy, but with enough of deep understanding underneath that some things just clicked into place.</p>
<p>The story goes on. All in all, out of my 5 years at Stockholm University, at least 3 was spent doing homological algebra in addition to whatever else I was doing, and they were spent in a tight clique of undergrads and early grad students that all shared a high interest in the subject matter. In my transcript, I have an imposing distribution of  courses:</p>
<table>
<tr>
<th>General subject area</th>
<th>Credits</th>
</tr>
<tr>
<td>Basics/Algebra and Combinatorics</td>
<td>35</td>
</tr>
<tr>
<td>Basics/Calculus</td>
<td>25</td>
</tr>
<tr>
<td>Basics/Other</td>
<td>5</td>
</tr>
<tr>
<td>Advanced/Homological stuff</td>
<td>15+20</td>
</tr>
<tr>
<td>Advanced/Algebra</td>
<td>30</td>
</tr>
<tr>
<td>Advanced/Combinatorics</td>
<td>10</td>
</tr>
<tr>
<td>Advanced/Other</td>
<td>5</td>
</tr>
</table>
<p>where one credit corresponds to one week of fulltime study, roughly. The +20 for homological stuff is for my thesis project, which was on homological algebra, but wasn&#8217;t a lecture course. I also have some 5 or 10 points of homological stuff I never got exams done for. So all in all, I spent about a year fulltime with only homological algebra (slightly more distributed in time), and a year fulltime with only algebra of sorts that were not explicitly homological in nature.</p>
<p>And as they say, practice does make perfect. I have, from the various lecture courses I took, an intuition for the category of chain complexes, and for the derived category. I have an understanding for the basics of model categories. I have studied Operads and PROPs with Sergei Merkulov, and seen what happens when you take the basic stance that &#8220;We want to equate a structure with its free resolution&#8221;, and then run for the hills with it.</p>
<p>The other week I was discussing my graduation plans with my advisor, and he asked what my Rigorosum was going to be about. I told him I expected to do it in homological algebra, and he answered that he wasn&#8217;t certain that there was anyone available who&#8217;d be capable to accurately test my knowledge of the field. He is a group cohomologist, and he outblazes me when it comes to intuition for that &#8211; and especially when it comes to the topological notions in the field.</p>
<p>I, however, am comfortable thinking about differential graded modules and dg-algebras, and doing homological algebra with these. And this seems to place me, possibly, as the single person in my state with a good working knowledge of modern homological algebra.</p>
<p>The things I talked about in the post this follows up on are current knowledge. None of it is particularily original, but the presentation is a result of my personal history. You might very well get similar presentations if you ask my course mates from Stockholm University &#8211; but then, that school has a very special athmosphere when it comes to homological algebra.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/07/today-seems-to-be-a-day-for-posting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Slumps and crunches</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/07/slumps-and-crunches/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/07/slumps-and-crunches/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 18:59:03 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Administrative]]></category>
		<category><![CDATA[Carnival of Mathematics]]></category>
		<category><![CDATA[PhD]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/07/slumps-and-crunches/</guid>
		<description><![CDATA[This term of teaching ends next week. When I got back from T&#8217;bilisi, just over a month ago, I had research leads that I expect will end in three different publications. I was slated with writing one LARP report for a swedish gaming magazine, and a series of various popular mathematics articles for the local [...]]]></description>
			<content:encoded><![CDATA[<p>This term of teaching ends next week.</p>
<p>When I got back from T&#8217;bilisi, just over a month ago, I had research leads that I expect will end in three different publications.</p>
<p>I was slated with writing one LARP report for a swedish gaming magazine, and a series of various popular mathematics articles for the local student-run mathematics magazine here.</p>
<p>All in all, very many things converged this June/July for me.</p>
<p>It has started paying off though &#8211; the gaming article is published, and yesterday I submitted the first of the T&#8217;bilisi articles to the <a href="http://rmi.acnet.ge/jhrs/"> Journal of Homotopy and Related Structures</a> as well as to the arXiv.</p>
<p>I now am listed on the arXiv with three papers, out of which <a href="http://arxiv.org/abs/math/0502348">one is already published</a>, <a href="http://arxiv.org/abs/math/0610374">one is rejected</a> (not unjustly so), and one is <a href="http://arxiv.org/abs/0707.1637">just submitted for review</a>.</p>
<p>Note that the name changed for the last paper. I am cheating a very little bit &#8211; August 25th, I will marry the most marvelous woman I have ever met, and will &#8211; among other reasons for the sake of academic unicity &#8211; take her last name in addition to my own.</p>
<p>Aaaaanyway. This is my excuse for having missed .. what is it? three carnival issues?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/07/slumps-and-crunches/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Enumerating the Saneblidze-Umble diagonal in Haskell</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/06/enumerating-the-saneblidze-umble-diagonal-in-haskell/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/06/enumerating-the-saneblidze-umble-diagonal-in-haskell/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 14:47:02 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/06/enumerating-the-saneblidze-umble-diagonal-in-haskell/</guid>
		<description><![CDATA[IMPORTANT: Note that the implementation herein is severely flawed. Do not use this. One subject I spent a lot of time thinking about this spring was taking tensor products of A&#8734;-algebras. This turns out to actually already being solved &#8211; having a very combinatorial and pretty neat solution. Recall that we can describe ways to [...]]]></description>
			<content:encoded><![CDATA[<p><i>IMPORTANT: Note that the implementation herein is severely flawed. Do not use this.</i></p>
<p>One subject I spent a lot of time thinking about this spring was taking tensor products of A<sub>&infin;</sub>-algebras. This turns out to actually already being solved &#8211; having a very combinatorial and pretty neat solution.</p>
<p>Recall that we can describe ways to associate operations and homotopy of associators by a sequence of polyhedra K<sub>n</sub>, n=2,3,.., called the associahedra. An A<sub>&infin;</sub>-algebra can be defined as being a map from the <i>cellular chains on the Associahedra</i> to <i>n</i>-ary endomorphisms of a graded vector space.</p>
<p>If this was incomprehensible to you, no matter for this post. The essence is that by figuring out how to deal with these polyhedra, we can figure out how to deal with A<sub>&infin;</sub>-algebras.</p>
<p>A tensor product of algebras is basically the direct product of the polyhedra, and we can get precisely the thing we want if only we find a map from the cellular chains on K<sub>n</sub> to the cellular chains on K<sub>n</sub>xK<sub>n</sub> fulfilling a few neat properties.</p>
<p>This map is what is known in the literature as the Saneblidze-Umble diagonal from the people who presented it in a paper from the late 90s. They describe in that paper, and more clearly in a later paper, how to actually get hold of one map with the right properties. The road goes over basic matrices, derived matrices and connecting matrices to trees describing associations. I&#8217;d like to take this opportunity to work through the implementation I just wrote of an enumerator for these, displaying the code and discussing it a little bit.</p>
<p>This post will be written as literate Haskell, so copy the text into a file, and then just save it as <code>SaneblidzeUmble.lhs</code> and you&#8217;re ready to go.</p>
<p>So, we will build a module named SaneblidzeUmble that shall contain the code:</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; <span class="kw1">module</span> SaneblidzeUmble <span class="kw1">where</span><br />
&nbsp;</div>
<p>We&#8217;re going to juggle a lot with lists, and a little with potentially failing calculations, so we&#8217;re going to include a couple of standard utility function sets too.</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; <span class="kw1">import</span> Data.List<br />
&gt; <span class="kw1">import</span> Data.<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Maybe"><span class="kw4">Maybe</span></a><br />
&nbsp;</div>
<h2>Permutations and staircase matrices</h2>
<p>The issue we&#8217;ll want to solve in the end is to enumerate all the terms entering into a diagonal on K<sub>n</sub>xK<sub>n</sub> for one fixed <i>n</i>. These terms are, using the later to be mentioned terms, in correspondence to derived matrices of staircase matrices with entries from [1,..,n-1]. A <i>staircase matrix</i> is one with one entry for each diagonal (parallel to the main diagonal), and such that along each row and column, all entries are adjacent and strictly increasing down and to the right. </p>
<p>As an example, we have the matrix</p>
<pre>
.14
25.
3..
</pre>
<p>Given a permutation of [1,..,n-1], we can write the images in the order they occur, and then just take this as a description of the entries from lower left to upper right of a staircase matrix. </p>
<p>It turns out that the basic matrices involved in this process are in bijection to permutations of [1,..,n-1] by placing the digits into the matrix, going up whenever the next entry is lower, and going to the right whenever it is larger.</p>
<p>Thus, the example above is given by the permutation (32514).</p>
<p>So, to handle this, we need to be able to list all permutations as well as pick out all rising and all falling part runs of a permutation</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; <span class="kw1">type</span> Permutation <span class="br0">&#91;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Int"><span class="kw4">Int</span></a><span class="br0">&#93;</span><br />
&gt; permutations :: <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Int"><span class="kw4">Int</span></a> -&gt; <span class="br0">&#91;</span>Permutation<span class="br0">&#93;</span><br />
&gt; permutations n = permuteList <span class="br0">&#91;</span><span class="nu0">1</span>..n<span class="br0">&#93;</span></p>
<p>&gt; permuteList :: <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Eq"><span class="kw4">Eq</span></a> a =&gt; <span class="br0">&#91;</span>a<span class="br0">&#93;</span> -&gt; <span class="br0">&#91;</span><span class="br0">&#91;</span>a<span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; permuteList <span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span><br />
&gt; permuteList <span class="br0">&#91;</span>a<span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#91;</span>a<span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; permuteList list = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:concatMap"><span class="kw3">concatMap</span></a> <span class="br0">&#40;</span>\x -&gt; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> <span class="br0">&#40;</span>x:<span class="br0">&#41;</span> <span class="br0">&#40;</span>permuteList <span class="br0">&#40;</span>l \\ <span class="br0">&#91;</span>x<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> list<br />
&nbsp;</div>
<p>This is almost readable as it stands. The permutations of [1..n] are just the permutations of the list [1..n].<br />
There are no permutations of an empty list, the list with one element has one permutation of itself, and for any larger list we pick out one element at the time, permute the rest and prepend this element. The collected results are compiled into a single long list and returned.</p>
<p>Solves, by recursion, neatly and with a lot of connection to the mathematical thought behind it our problems.</p>
<p>Now, for the chopping permutations into monotonic runs, I&#8217;ll solve it all in a manner slightly decreasing the amount of code repetition. We have a &#8220;factory function&#8221;</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; monotonic :: <span class="br0">&#40;</span>a -&gt; a -&gt; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Bool"><span class="kw4">Bool</span></a><span class="br0">&#41;</span> <span class="br0">&#91;</span>a<span class="br0">&#93;</span> -&gt; <span class="br0">&#91;</span><span class="br0">&#91;</span>a<span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; monotonic _ <span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span><br />
&gt; monotonic _ <span class="br0">&#91;</span>x<span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#91;</span>x<span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; monotonic lt <span class="br0">&#40;</span>x:y:etc<span class="br0">&#41;</span> = <span class="kw1">if</span> lt x y <br />
&gt; &nbsp; &nbsp; <span class="kw1">then</span> <span class="br0">&#40;</span>x:s<span class="br0">&#41;</span>:ss<br />
&gt; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#91;</span>x<span class="br0">&#93;</span>:<span class="br0">&#40;</span>s:ss<span class="br0">&#41;</span><br />
&gt; &nbsp; <span class="kw1">where</span> <span class="br0">&#40;</span>s:ss<span class="br0">&#41;</span> = monotonic lt <span class="br0">&#40;</span>y:etc<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>and two use cases of this</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; risers = monotonic <span class="br0">&#40;</span>&lt;=<span class="br0">&#41;</span><br />
&gt; fallers = monotonic <span class="br0">&#40;</span>&gt;=<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>Using this, we can build the matrix out of a given permutation. The only really interesting thing for the diagonal about such a matrix is the contents of the rows and of the columns, so we shall just use that. This means we can represent a matrix as the list of rows and the list of columns. Since row and columns &#8220;look basically the same&#8221;, they&#8217;ll be represented by the same type. So we have</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; <span class="kw1">type</span> Row <span class="br0">&#91;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Int"><span class="kw4">Int</span></a><span class="br0">&#93;</span><br />
&gt; buildMatrix :: Permutation -&gt; <span class="br0">&#40;</span><span class="br0">&#91;</span>Row<span class="br0">&#93;</span>,<span class="br0">&#91;</span>Row<span class="br0">&#93;</span><span class="br0">&#41;</span><br />
&gt; buildMatrix p = <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> sort <span class="br0">&#40;</span>fallers p<span class="br0">&#41;</span>, <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:reverse"><span class="kw3">reverse</span></a> <span class="br0">&#40;</span>risers p<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp;</div>
<p>The reason we use map sort and reverse is to make the result fit with the conventions chosen by Saneblidze and Umble. Note: when actually reading the results, users should take care to read the Columns backwards.</p>
<h2>Deriving staircase matrices</h2>
<p>Deriving the matrices is done with so called moves. We have a downward move, and a rightward move &#8211; both consisting of picking a subset of elements in one row or one column, and pushing them over to the next &#8211; given the condition that all the moved elements have to be larger than the largest they move over to. They also have to move to empty positions, but the ordering conditions for the staircase matrices will guarantee that if they really are larger, then the corresponding position is already empty.</p>
<p>So, we can write a a function that gives us all the subsets of the first column/row that might possibly be moved to the second in a given column/row-list of a matrix</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; listMovable :: <span class="br0">&#91;</span>Row<span class="br0">&#93;</span> -&gt; <span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Int"><span class="kw4">Int</span></a><span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; listMovable <span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span><br />
&gt; listMovable <span class="br0">&#91;</span>a<span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span><br />
&gt; listMovable <span class="br0">&#40;</span>a:b:<span class="kw1">as</span><span class="br0">&#41;</span> = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span class="kw3">filter</span></a> <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:not"><span class="kw3">not</span></a>.<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:null"><span class="kw3">null</span></a><span class="br0">&#41;</span> $ subsets <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span class="kw3">filter</span></a> <span class="br0">&#40;</span>&gt;<span class="br0">&#40;</span>m b<span class="br0">&#41;</span><span class="br0">&#41;</span> a<span class="br0">&#41;</span> <span class="kw1">where</span><br />
&gt; &nbsp; m <span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="nu0">0</span><br />
&gt; &nbsp; m b = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:maximum"><span class="kw3">maximum</span></a> b<br />
&nbsp;</div>
<p>This function picks out all the subsets of elements that fulfill the requirement of being larger than the largest element of the next row. But hang on &#8211; this <code>subset</code>-function actually isn&#8217;t defined yet. No worries &#8211; it&#8217;s easily done:</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; subsets :: <span class="br0">&#91;</span>a<span class="br0">&#93;</span> -&gt; <span class="br0">&#91;</span><span class="br0">&#91;</span>a<span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; subsets <span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; subsets <span class="br0">&#40;</span>a:<span class="kw1">as</span><span class="br0">&#41;</span> = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> <span class="br0">&#40;</span>a:<span class="br0">&#41;</span> <span class="br0">&#40;</span>subsets <span class="kw1">as</span><span class="br0">&#41;</span> ++ subsets <span class="kw1">as</span><br />
&nbsp;</div>
<p>Again, we define everything recursively, relying on a base case of &#8220;blinding&#8221; simplicity, and end up with a very mathematical looking description. Here, the subsets of the empty set is just the empty set itself, and the subsets of any set with one element existing in it consists of the subsets containing that element and those that do not contain it. We simply list first those with and then those without. </p>
<p>Now, for the actual deriving move, we might run into a host of trouble, so we&#8217;ll just let it be able to return an error condition. It first checks a few possible error cases, and then writes down the actual move by picking out the rows it needs, modifying those, and putting it all together again in the end.</p>
<p>Supposing we have some set <i>m</i> we want to move, and we have a list of the rows where it could be moved, then we&#8217;ll want to first check whether all of <i>m</i> is in a single row together. Thus, for each row, we pick out all elements that are in our set <i>m</i>. But we don&#8217;t really care for what the elements are &#8211; we only need the number in each. So we compile a list of the lengths of these filtered out pieces.</p>
<p>We shall require the number of rows that have all the pieces we want to move to be 1, and also for that single row to have a good position within the matrix.</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; moveDerivate :: <span class="br0">&#91;</span>Row<span class="br0">&#93;</span> -&gt; <span class="br0">&#91;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Int"><span class="kw4">Int</span></a><span class="br0">&#93;</span> -&gt; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Maybe"><span class="kw4">Maybe</span></a> <span class="br0">&#91;</span>Row<span class="br0">&#93;</span><br />
&gt; moveDerivate rows <span class="br0">&#91;</span><span class="br0">&#93;</span> = Nothing<br />
&gt; moveDerivate rows m = returnVal <span class="kw1">where</span><br />
&gt; &nbsp; movableInRow = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span class="kw3">filter</span></a> <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:flip"><span class="kw3">flip</span></a> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:elem"><span class="kw3">elem</span></a> m<span class="br0">&#41;</span><span class="br0">&#41;</span> tr<br />
&gt; &nbsp; numberMovableInRow = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> movableInRow<br />
&gt; &nbsp; countRowsWithMovable = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span class="kw3">filter</span></a> <span class="br0">&#40;</span>==<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> m<span class="br0">&#41;</span> numberMovableInRow<span class="br0">&#41;</span><br />
&gt; &nbsp; indexRow = findIndex <span class="br0">&#40;</span>==<a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> m<span class="br0">&#41;</span> numberMovableInRow<br />
&gt; &nbsp; returnVal <br />
&gt; &nbsp; &nbsp; | countRowsWithMovable /= <span class="nu0">1</span> = Nothing<br />
&gt; &nbsp; &nbsp; | isNothing indexRow = Nothing<br />
&gt; &nbsp; &nbsp; | index &gt; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> rows &#8211; <span class="nu0">2</span> = Nothing<br />
&gt; &nbsp; &nbsp; | <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:minimum"><span class="kw3">minimum</span></a> m &lt; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:maximum"><span class="kw3">maximum</span></a> <span class="br0">&#40;</span>rows !! index<span class="br0">&#41;</span> = Nothing<br />
&gt; &nbsp; &nbsp; | <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:otherwise"><span class="kw3">otherwise</span></a> = moveThem rows m index<br />
&gt; &nbsp; &nbsp; <span class="kw1">where</span><br />
&gt; &nbsp; &nbsp; &nbsp; index = fromJust indexRow<br />
&gt; &nbsp; &nbsp; &nbsp; moveThem rows m idx = Just $ <br />
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:take"><span class="kw3">take</span></a> index rows<span class="br0">&#41;</span> ++ <br />
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span><span class="br0">&#40;</span>rows !! index<span class="br0">&#41;</span> \\ m<span class="br0">&#93;</span> ++<br />
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span><span class="br0">&#40;</span>sort <span class="br0">&#40;</span>rows !! <span class="br0">&#40;</span>index + <span class="nu0">1</span><span class="br0">&#41;</span> ++ m<span class="br0">&#41;</span><span class="br0">&#93;</span> ++<br />
&gt; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:drop"><span class="kw3">drop</span></a> <span class="br0">&#40;</span>index<span class="nu0">+2</span><span class="br0">&#41;</span> rows<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>That monstrous expression at the end is known as a guard expression. It works through the cases until something actually is true, and then returns whatever is after the equal sign as the value. The conditions I listed weed out all the pathologies, and lets the program pick out something sensible whenever possible.</p>
<p>So, we can list all possibilities of one row, and we can move them. This should be enough to simply generate all derived matrices, right? Let&#8217;s start simple. Let&#8217;s start with all we can do on one side of the pair &#8211; either all possible down moves or all possible right moves (they are essentially the same anyway&#8230;)</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; derivedRows :: <span class="br0">&#91;</span>Rows<span class="br0">&#93;</span> -&gt; <span class="br0">&#91;</span><span class="br0">&#91;</span>Rows<span class="br0">&#93;</span><span class="br0">&#93;</span><br />
&gt; derivedRows m = derivedAcc <span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#91;</span>m<span class="br0">&#93;</span> <span class="kw1">where</span><br />
&gt; &nbsp; derivedAcc out <span class="br0">&#91;</span><span class="br0">&#93;</span> = out<br />
&gt; &nbsp; derivedAcc out <span class="br0">&#40;</span>q:queue<span class="br0">&#41;</span> = derivedAcc <span class="br0">&#40;</span>out++<span class="br0">&#91;</span>q<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#40;</span>queue++rest<span class="br0">&#41;</span> <span class="kw1">where</span><br />
&gt; &nbsp; &nbsp; movables = <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:concatMap"><span class="kw3">concatMap</span></a> listMovable . tails<span class="br0">&#41;</span> q<br />
&gt; &nbsp; &nbsp; rest = mapMaybe <span class="br0">&#40;</span>moveDerivate q<span class="br0">&#41;</span> movables<br />
&nbsp;</div>
<p>Guiding you through this piece of code &#8211; when encountered with a list of rows, we look at each starting point, list all the possibly movable sets at that point, and move the corresponding sets, placing all the results at the back of a queue that we work through. Once the queue is empty, we know we have worked through all the results from all the moves we could find, and that no others can be found.</p>
<p>So, if we have our pair of row-lists? We first move to the right, and then down. At each point, we keep the other half fixed, and simply add it on to all the results of moving in the first part.  </p>
<div class="dean_ch" style="white-space: wrap;">
&gt; derivedMatrices :: <span class="br0">&#40;</span><span class="br0">&#91;</span>Rows<span class="br0">&#93;</span>,<span class="br0">&#91;</span>Rows<span class="br0">&#93;</span><span class="br0">&#41;</span> -&gt; <span class="br0">&#91;</span><span class="br0">&#40;</span><span class="br0">&#91;</span>Rows<span class="br0">&#93;</span>,<span class="br0">&#91;</span>Rows<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><br />
&gt; derivedMatrices matrix@<span class="br0">&#40;</span>m1,m2<span class="br0">&#41;</span> = nub <span class="br0">&#40;</span>derivedFirst <span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#91;</span>matrix<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="kw1">where</span><br />
&gt; &nbsp; derivedFirst matrices <span class="br0">&#91;</span><span class="br0">&#93;</span> = derivedSecond <span class="br0">&#91;</span><span class="br0">&#93;</span> matrices<br />
&gt; &nbsp; derivedFirst out <span class="br0">&#40;</span><span class="br0">&#40;</span>q1,q2<span class="br0">&#41;</span>:queue<span class="br0">&#41;</span> = derivedFirst <span class="br0">&#40;</span>out++new<span class="br0">&#41;</span> queue <span class="kw1">where</span><br />
&gt; &nbsp; &nbsp; new = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:flip"><span class="kw3">flip</span></a> <span class="br0">&#40;</span>,<span class="br0">&#41;</span> q2<span class="br0">&#41;</span> <span class="br0">&#40;</span>derivedRows q1<span class="br0">&#41;</span><br />
&gt; &nbsp; derivedSecond matrices <span class="br0">&#91;</span><span class="br0">&#93;</span> = matrices<br />
&gt; &nbsp; derivedSecond out <span class="br0">&#40;</span><span class="br0">&#40;</span>q1,q2<span class="br0">&#41;</span>:queue<span class="br0">&#41;</span> = derivedSecond <span class="br0">&#40;</span>out++new<span class="br0">&#41;</span> queue <span class="kw1">where</span><br />
&gt; &nbsp; &nbsp; new = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> <span class="br0">&#40;</span><span class="br0">&#40;</span>,<span class="br0">&#41;</span> q1<span class="br0">&#41;</span> <span class="br0">&#40;</span>derivedRows q2<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>This first works through one direction, taking all derived rows, and tacking on the constant second half, then when that&#8217;s done, changes to the same but for the other half of the pair.</p>
<p>Now, we&#8217;re almost able to state what a specific diagonal looks like. There is only one more thing to handle: we might not want the results of a particular computation. More specifically, we recognize something we do not want by it having a row that isn&#8217;t consecutive, not even when including previously occurring rows. So, we need to check that.</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; checkTree :: <span class="br0">&#91;</span>Row<span class="br0">&#93;</span> -&gt; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Bool"><span class="kw4">Bool</span></a><br />
&gt; checkTree rows = checkAcc <span class="br0">&#91;</span><span class="br0">&#93;</span> rows <span class="kw1">where</span><br />
&gt; &nbsp; checkAcc seen <span class="br0">&#91;</span><span class="br0">&#93;</span> = True<br />
&gt; &nbsp; checkAcc seen <span class="br0">&#40;</span><span class="br0">&#91;</span><span class="br0">&#93;</span>:morerows<span class="br0">&#41;</span> = checkAcc seen morerows<br />
&gt; &nbsp; checkAcc seen <span class="br0">&#40;</span>row:morerows<span class="br0">&#41;</span> <br />
&gt; &nbsp; &nbsp; | isOK = checkAcc newseen morerows<br />
&gt; &nbsp; &nbsp; | <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:otherwise"><span class="kw3">otherwise</span></a> = False<br />
&gt; &nbsp; &nbsp; <span class="kw1">where</span><br />
&gt; &nbsp; &nbsp; &nbsp; newseen = seen ++ row<br />
&gt; &nbsp; &nbsp; &nbsp; minimal = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:minimum"><span class="kw3">minimum</span></a> newseen<br />
&gt; &nbsp; &nbsp; &nbsp; maximal = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:maximum"><span class="kw3">maximum</span></a> newseen<br />
&gt; &nbsp; &nbsp; &nbsp; <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> = maximal-minimal<span class="nu0">+1</span><br />
&gt; &nbsp; &nbsp; &nbsp; isOK = <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> == <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:length"><span class="kw3">length</span></a> newseen<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>Now it&#8217;s just a matter of putting the pieces together</p>
<div class="dean_ch" style="white-space: wrap;">
&gt; diagonalTerms :: <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Int"><span class="kw4">Int</span></a> -&gt; <span class="br0">&#91;</span><span class="br0">&#40;</span><span class="br0">&#91;</span>Row<span class="br0">&#93;</span>,<span class="br0">&#91;</span>Row<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><br />
&gt; diagonalTerms n = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter"><span class="kw3">filter</span></a> checkTrees allMatrices <span class="kw1">where</span><br />
&gt; &nbsp; checkTrees <span class="br0">&#40;</span>t1,t2<span class="br0">&#41;</span> = checkTree t1 &amp;&amp; checkTree <span class="br0">&#40;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:reverse"><span class="kw3">reverse</span></a> t2<span class="br0">&#41;</span><br />
&gt; &nbsp; allMatrices = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:concatMap"><span class="kw3">concatMap</span></a> derivedMatrices matrices<br />
&gt; &nbsp; matrices = <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:map"><span class="kw3">map</span></a> buildMatrix <span class="br0">&#40;</span>permutations n<span class="br0">&#41;</span><br />
&nbsp;</div>
<p>Previously, a student of Ron Umble has done an implementation of the same task in C++. This cannot, according to Umble, handle anything larger than n=5. This Haskell implementation, while being surprisingly short and readable, has on my (64 bit, modern, high memory) workstation been able to meet the following execution parameters:</p>
<table border="1" width="75%" halign="center">
<tr>
<th width="10%">n</th>
<th>number of terms</th>
<th>execution time</th>
<th>memory used</th>
</tr>
<tr>
<td>5</td>
<td>46</td>
<td>0.02 s</td>
<td>4M</td>
</tr>
<tr>
<td>6</td>
<td>124</td>
<td>0.33 s</td>
<td>62M</td>
</tr>
<tr>
<td>7</td>
<td>335</td>
<td>8.77 s</td>
<td>1.9G</td>
</tr>
<tr>
<td>8</td>
<td>911</td>
<td>1020 s</td>
<td>441G</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/06/enumerating-the-saneblidze-umble-diagonal-in-haskell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going to T&#8217;bilisi</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/05/going-to-tbilisi/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/05/going-to-tbilisi/#comments</comments>
		<pubDate>Fri, 25 May 2007 12:37:00 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/05/going-to-tbilisi/</guid>
		<description><![CDATA[In about 23 hours, I&#8217;ll step on to the train in Jena, heading for T&#8217;bilisi, Georgia. On Monday, I&#8217;ll give a talk on my research into -structures in group cohomology. If you&#8217;re curious, I already put the slides up on the web. I&#8217;ll try to blog from T&#8217;bilisi, but I don&#8217;t know what connectivity I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>In about 23 hours, I&#8217;ll step on to the train in Jena, heading for T&#8217;bilisi, Georgia.</p>
<p>On Monday, I&#8217;ll give a talk on my research into <img src='/latexrender/pictures/aaac3503d31e7b6b4050353569133bd2.png' title='A_\infty' alt='A_\infty' align='middle' />-structures in group cohomology. If you&#8217;re curious, I already put the <a href=http://www.minet.uni-jena.de/~mik/tbilisi.pdf>slides</a> up on the web.</p>
<p>I&#8217;ll try to blog from T&#8217;bilisi, but I don&#8217;t know what connectivity I&#8217;ll have at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/05/going-to-tbilisi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Retrospection 2006</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/12/retrospection-2006/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/12/retrospection-2006/#comments</comments>
		<pubDate>Sat, 30 Dec 2006 18:31:57 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/12/retrospection-2006/</guid>
		<description><![CDATA[Inspired by other bloggers on Planet Haskell, I thought I&#8217;d just sit down and write a retrospection post, reviewing the past year &#8211; primarily from angles such as mathematics, computers and my generic life situation. It divides neatly into two different sections: the months as a commercial programmer and the months as PhD student and [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by other bloggers on <a href="http://planet.haskell.org">Planet Haskell</a>, I thought I&#8217;d just sit down and write a retrospection post, reviewing the past year &#8211; primarily from angles such as mathematics, computers and my generic life situation.</p>
<p>It divides neatly into two different sections: the months as a commercial programmer and the months as PhD student and academic careerist. </p>
<p>The year began still working for Teleca Systems, and with security consulting for Stockholm-based firms and frequent trips back home.</p>
<p>Then as the year went on and my PhD applications grew more and more, I started getting results. I got invited to Bonn for an interview with the Homology and Homotopy graduate school program &#8211; which was in the end turned down because I was more of a homological algebraist than a topologist. And the week after that, I was invited to Jena for an interview for a position doing PhD work on computational homological algebra. The interview went well, the potential advisor was nice (and a once-roleplaying gamer to sweeten the deal more) and I got the position just a few days later.</p>
<p>While in Switzerland.</p>
<p>Skiing.</p>
<p>On a weeklong luxurious conference in operad theory at a skiing resort in the western part of the swiss alps. Lots of skiing, fantastic food, lots of REALLY COOL people (I&#8217;m looking at you, pozorvlak, among others) and lots of fascinating mathematics.</p>
<p>As I returned there, it was time to wrap up my position with Teleca, disengage from all my duties, document everything I had done, train everyone else in my stuff, and get out of there. Preferably before the summer term started. Oh, and get through the bureaucracy involved in getting hired at a German university. It&#8217;s a fascinating experience, I can tell you. Especially when you get asked whether you were involved with the Stasi during communist east Germany.</p>
<p>Freshly hired, I had a week to get my affairs in order, and then got thrown on my first bunch of students. Teaching and reading up on cooooool mathematics for several months, leaving a little bit for visits to Sweden, and then hitting the vacation hard with a long relaxing visit to Sweden, and a marriage proposal.</p>
<p>The summer also saw the Pirate Bay raid, my heightened interest in the politics of privacy, and membership in the Pirate Party, the election, and following the election results explicitly with attention to the Pirate Party results.</p>
<p>After the vacation came conference summer, stretching August through September, with between 2 and 4 conferences depending on how you count them, and a little bit of research. At the end of this, a new term started and with that a new direction for my PhD research. This was, at the same time, the period when I got enamoured with Haskell, read up on it, grew more and more interested, fascinated, captivated.</p>
<p>During the time in Jena, I got involved in a roleplaying troupe, in a mathematical magazine (with two articles published by now!), in a group organizing math camps (participating in one camp), and getting hold, slowly, of a decently sized social circle.</p>
<p>And then the end of the year hit before I knew what happened. It ends tomorrow &#8211; and I have things hanging in idle loops swarming my head like angry bees and waiting to be channeled through my consciousness out on paper and code, and get me running with my research.</p>
<p>That&#8217;s my year in review. How was your?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/12/retrospection-2006/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A&#8734;-algebras and group cohomology</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/11/a-algebras-and-group-cohomology/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/11/a-algebras-and-group-cohomology/#comments</comments>
		<pubDate>Thu, 23 Nov 2006 14:48:08 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/11/a-algebras-and-group-cohomology/</guid>
		<description><![CDATA[In which the author, after a long session sweating blood with his advisor, manages to calculate the A&#8734;-structures on the cohomology algebras and . We will find the A&#8734;-structures on the group cohomology ring by establishing an A&#8734;-quasi-isomorphism to the endomorphism dg-algebra of a resolution of the base field. We&#8217;ll write mi for operations on [...]]]></description>
			<content:encoded><![CDATA[<p>In which the author, after a long session sweating blood with his advisor, manages to calculate the A<sub>&infin;</sub>-structures on the cohomology algebras <img src='/latexrender/pictures/45994768f6c2d91f559436fc7ed79b2b.png' title='H^*(C_4,\mathbb F_2)' alt='H^*(C_4,\mathbb F_2)' align='middle' /> and <img src='/latexrender/pictures/c77af77f5907fa611b56dca861109dfc.png' title='H^*(C_2\times C_2,\mathbb F_2)' alt='H^*(C_2\times C_2,\mathbb F_2)' align='middle' />.</p>
<p>We will find the A<sub>&infin;</sub>-structures on the group cohomology ring by establishing an A<sub>&infin;</sub>-quasi-isomorphism to the endomorphism dg-algebra of a resolution of the base field. We&#8217;ll write m<sub>i</sub> for operations on the group cohomology, and &mu;<sub>i</sub> for operations on the endomorphism dg-algebra. The endomorphism dg-algebra has &mu;<sub>1</sub>=d and &mu;<sub>2</sub>=composition of maps, and all higher operations vanishing, in all our cases.</p>
<h2>Elementary abelian 2-group</h2>
<p>Let&#8217;s start with the easy case. Following to a certain the notation used in Dag Madsen&#8217;s PhD thesis appendix (the Canonical Source of the A<sub>&infin;</sub>-structures of cyclic group cohomology algebras), and the recipe given in <a href=http://citeseer.ist.psu.edu/keller01infinity.html>A-infinity algebras in representation theory</a>, we may start by stating what we know as we start:</p>
<p><img src='/latexrender/pictures/ded5bd03ad18f15bcb9ee275283084fa.png' title='\Lambda = \mathbb F_2(C_2\times C_2) = \mathbb F_2[a,b]/(a^2,b^2)' alt='\Lambda = \mathbb F_2(C_2\times C_2) = \mathbb F_2[a,b]/(a^2,b^2)' align='middle' /> our group algebra. We can resolve <img src='/latexrender/pictures/f9950a245ab22af8a5d96a7baf6f7289.png' title='\mathbb F_2' alt='\mathbb F_2' align='middle' /> using a neat canonical resolution, derived from the tensor products of the resolutions of the field with modules over the cyclic 2-group. This gives us the resolution<br />
<img src='/latexrender/pictures/eeb7d6b24949bc1c2e4ad7cb894b5455.png' title='&#10;\begin{diagram}&#10;P : &amp; \dots &amp; \rTo &amp; \Lambda^3 &amp; \rTo &amp; \Lambda^2 &amp; \rTo &amp; \Lambda^1 &amp; \rTo &amp; \mathbb F_2 &amp; \rTo &amp; 0&#10;\end{diagram}&#10;' alt='&#10;\begin{diagram}&#10;P : &amp; \dots &amp; \rTo &amp; \Lambda^3 &amp; \rTo &amp; \Lambda^2 &amp; \rTo &amp; \Lambda^1 &amp; \rTo &amp; \mathbb F_2 &amp; \rTo &amp; 0&#10;\end{diagram}&#10;' align='middle' /><br />
where each differential is given by a matrix D with D<sub>i,i</sub>=a and D<sub>i+1,i</sub>=b.</p>
<p>Recall that <img src='/latexrender/pictures/7da89dd7975b8525e3da59092630ea23.png' title='H^*(G,k)=H^*(\Hom_{kG}(P,P))' alt='H^*(G,k)=H^*(\Hom_{kG}(P,P))' align='middle' />. Thus <img src='/latexrender/pictures/6bd0ef434fa45903cba91abb967ebcd7.png' title='\Hom_\Lambda(P,P)' alt='\Hom_\Lambda(P,P)' align='middle' /> is a dg-algebra, whose homology is precisely the group cohomology. </p>
<p>Now, by the minimality theorem (proven by Kadeishvili first, and reproven by a veritable host of mathematicians), there is a quasi-isomorphism of A<sub>&infin;</sub>-algebras <img src='/latexrender/pictures/21d6fc6bcf2b785607c37a3333ff11b7.png' title='H^*A \to A' alt='H^*A \to A' align='middle' /> that lifts the identity in homology. This we can use to figure out the A<sub>&infin;</sub>-structure for our cohomology ring: we know that the <img src='/latexrender/pictures/6bd0ef434fa45903cba91abb967ebcd7.png' title='\Hom_\Lambda(P,P)' alt='\Hom_\Lambda(P,P)' align='middle' /> is an honest-to-glod dg-algebra, and thus has an A<sub>&infin;</sub>-structure with all higher multiplications (by which I mean 3-ary and higher) vanishing. We can also pick representatives for our cohomology ring elements as representatives of homotopy classes of chain maps <img src='/latexrender/pictures/ba7a80fe4b416613ff4416676ab919df.png' title='P_{.}\to P_{.}' alt='P_{.}\to P_{.}' align='middle' />. This gives us a quasi-isomorphism of dg-algebras <img src='/latexrender/pictures/2d3dcc72ea43ffa8b053469dab0263e2.png' title='H^*A\to A' alt='H^*A\to A' align='middle' />, lifting the identity, and which we can augment to an A<sub>&infin;</sub>-quasi-isomorphism.</p>
<p>Which is what we&#8217;ll want to do now.</p>
<p>We&#8217;ll (at this stage) use the fact that we know what <img src='/latexrender/pictures/c77af77f5907fa611b56dca861109dfc.png' title='H^*(C_2\times C_2,\mathbb F_2)' alt='H^*(C_2\times C_2,\mathbb F_2)' align='middle' /> looks like: it&#8217;s the algebra <img src='/latexrender/pictures/dc4692d1e1fc5cf7de6e1253ff1cde88.png' title='\mathbb F_2[x,y]' alt='\mathbb F_2[x,y]' align='middle' />. There are two 1-coclasses, both represented by a morphism <img src='/latexrender/pictures/60955dc3b1e6fb1b27224216d5ab2243.png' title='\Lambda^2\to\mathbb F_2' alt='\Lambda^2\to\mathbb F_2' align='middle' />, namely one composing the projection onto the first factor with the augmentation map, and one composing the projection onto the second factor. We&#8217;ll name the first of these x, and the second y, and note that they lift to chain maps <img src='/latexrender/pictures/ba7a80fe4b416613ff4416676ab919df.png' title='P_{.}\to P_{.}' alt='P_{.}\to P_{.}' align='middle' /> that shave off the first and last summand of <img src='/latexrender/pictures/9f43f697cb3ab97b67d0b80f49b97431.png' title='\Lambda^i' alt='\Lambda^i' align='middle' /> respectively in each degree.</p>
<p>So for our quasi-isomorphism <img src='/latexrender/pictures/edd575ac51d56f878e9c0dba47661c66.png' title='f_\dot' alt='f_\dot' align='middle' />, we now have <img src='/latexrender/pictures/c354bdd39692a0ba3f80f7c733f4e0eb.png' title='f_1' alt='f_1' align='middle' /> sending each <img src='/latexrender/pictures/2a88f64f1f47ca42eb470fd75775e9c9.png' title='x^iy^j' alt='x^iy^j' align='middle' /> to the chain map shaving off the first i and last j components. We also know <img src='/latexrender/pictures/092b8bd09a14d4edc48417d151a2f55c.png' title='m_1,m_2,\mu_1,\mu_2' alt='m_1,m_2,\mu_1,\mu_2' align='middle' />, namely 0, multiplication, differential and composition respectively. The first axiom we&#8217;ll investigate for A<sub>&infin;</sub>-maps states that<br />
<img src='/latexrender/pictures/9c73fc5378735d13a27a14f7d94abfa9.png' title='&#10;f_1(m_1\otimes m_1)+f_1(m_2)+f_2(m_1)+\mu_1(f_2)+\mu_2(f_1\otimes f_1)=0' alt='&#10;f_1(m_1\otimes m_1)+f_1(m_2)+f_2(m_1)+\mu_1(f_2)+\mu_2(f_1\otimes f_1)=0' align='middle' /><br />
But now m<sub>1</sub>=0 and so this reduces to<br />
<img src='/latexrender/pictures/cc0091d24bb29df6056f25072328df4f.png' title='f_1(m_2)+\mu_1(f_2)+\mu_2(f_1\otimes f_1)=0' alt='f_1(m_2)+\mu_1(f_2)+\mu_2(f_1\otimes f_1)=0' align='middle' /><br />
so f<sub>2</sub> is a map such that its differential is equal to the &#8220;commutator&#8221; of f<sub>1</sub> and multiplication.</p>
<p>Now, pick some coclasses u,v. These will map to shaving maps as described above, and their product will map to a shaving map that does just the same as the composition of the individual shaving maps; so if u is x<sup>i</sup>y<sup>j</sup>, and v is x<sup>k</sup>y<sup>l</sup>, then f<sub>1</sub>(u) shaves off i components in the front and j components in the back, and f<sub>1</sub>(v) shaves off k in the front and l in the back. So, the composition of these two maps is the map that drops i+k components from the front, and j+l components from the back. On the other hand f<sub>1</sub>(uv)=f<sub>1</sub>(x<sup>i+k</sup>y<sup>j+l</sup>) is the map that drops i+k components from the front, and j+l components from the back.</p>
<p>So they are the same. And thus we don&#8217;t need to bother with any homotopies, or any higher order operations or higher order maps. We set f<sup>2</sup> to be the zero map, and consider ourself finished and happy. The cohomology is a dg-algebra in its own right, and this is all there is to it in A<sub>&infin;</sub>-terms. And we&#8217;re done.</p>
<p>This result implies, by the way, via a proposition from Keller, that the elementary abelian 2-groups have Koszul group algebras. An argument using restrictions of non-nilpotent coclasses to cyclic subgroups will tell you that these are the only finite groups that have Koszul group algebras.  </p>
<p>With this example.</p>
<h2>Cyclic 4-group</h2>
<p>This is the one canonical example known beforehand in group cohomology. It was calculated by Dag Madsen in his PhD-thesis, and cited ever since. I will perform the same calculation, but in a blinding detail you won&#8217;t find in a thesis or a paper on the subject.</p>
<p>So, for starters, we find ourself with the group algebra<br />
<img src='/latexrender/pictures/64af80f0a4b92f1771ba23c262b493d8.png' title='\Lambda=\mathbb F_2C_4=\mathbb F_2[x]/(x^4)' alt='\Lambda=\mathbb F_2C_4=\mathbb F_2[x]/(x^4)' align='middle' /><br />
and the cohomology ring<br />
<img src='/latexrender/pictures/347d826e2789b83646854fb03209006a.png' title='\Gamma=\mathbb F_2[\xi,\eta]/(\xi^2)' alt='\Gamma=\mathbb F_2[\xi,\eta]/(\xi^2)' align='middle' /><br />
quasi-isomorphic to the endomorphism dg-algebra of a neat resolution<br />
<img src='/latexrender/pictures/d1407503b244dbe981e737892869dee6.png' title='&#10;P:&amp;\dots&amp;\Lambda&amp;\rTo^{x}&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^{x}&amp;\mathbb F_2&amp;\rTo&amp;0' alt='&#10;P:&amp;\dots&amp;\Lambda&amp;\rTo^{x}&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^{x}&amp;\mathbb F_2&amp;\rTo&amp;0' align='middle' /><br />
where c in &Gamma; represent the morphism m&rarr;cm.<br />
Furthermore, as usual, the &mu;<sub>i</sub> are all known, and m<sub>1</sub>=0, and m<sub>2</sub> is the multiplication in &Gamma;. </p>
<p>Once we&#8217;ve choosen representatives for the coclasses in <img src='/latexrender/pictures/6bd0ef434fa45903cba91abb967ebcd7.png' title='\Hom_\Lambda(P,P)' alt='\Hom_\Lambda(P,P)' align='middle' />, we can lift this choice to an A<sub>&infin;</sub>-quasi-isomorphism. In this process, we&#8217;ll find and define the relevant higher multiplications for &Gamma;, thus finding the A<sub>&infin;</sub>-structure for that algebra.</p>
<p>Thus f<sub>1</sub> sends<br />
<img src='/latexrender/pictures/8d20dc93d225edbb80b046dc94ba8022.png' title='1\mapsto\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;&amp;\dEq&amp;&amp;\dEq&amp;&amp;\dEq\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='1\mapsto\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;&amp;\dEq&amp;&amp;\dEq&amp;&amp;\dEq\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
and<br />
<img src='/latexrender/pictures/9730accc44296173c5b9d641e8d679c2.png' title='\xi\mapsto\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\xi\mapsto\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
and<br />
<img src='/latexrender/pictures/bb0a32df50f3dcba87cbbc050ce8cc8f.png' title='\eta\mapsto\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo(4,2)^{1}&amp;&amp;\rdTo(4,2)^{1}&amp;&amp;\rdTo(4,2)^{1}&amp;&amp;\\&#10;\cdots&amp;\rTo_x&amp;\Lambda&amp;\rTo_{x^3}&amp;\Lambda&amp;\rTo_x&amp;\Lambda&amp;\rTo_{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\eta\mapsto\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo(4,2)^{1}&amp;&amp;\rdTo(4,2)^{1}&amp;&amp;\rdTo(4,2)^{1}&amp;&amp;\\&#10;\cdots&amp;\rTo_x&amp;\Lambda&amp;\rTo_{x^3}&amp;\Lambda&amp;\rTo_x&amp;\Lambda&amp;\rTo_{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /></p>
<p>Working through the coherence axioms, the first we encounter is the one defining <img src='/latexrender/pictures/7de62936dedfe1edafd9147c61f6f8ef.png' title='f_2' alt='f_2' align='middle' />. This is the one investigating the relationship between<br />
<img src='/latexrender/pictures/2fc17e88c97ca22aa66103d48e780786.png' title='m_2(f_1\otimes f_1)' alt='m_2(f_1\otimes f_1)' align='middle' /> and <img src='/latexrender/pictures/052268b5afc602919ccfc1c1efdc1392.png' title='f_1(m_2)' alt='f_1(m_2)' align='middle' />. So, we pick <img src='/latexrender/pictures/b82fddc570ec0b1369cd857f82baff92.png' title='u,v\in H^*(C_8,\mathbb F_2)' alt='u,v\in H^*(C_8,\mathbb F_2)' align='middle' />, and investigate the two expressions <img src='/latexrender/pictures/8bebd8ffd50fa42727b1ad1d20b4cf9c.png' title='f_1(u)f_1(v)' alt='f_1(u)f_1(v)' align='middle' /> and <img src='/latexrender/pictures/1d18da9a82b5329e914130db43b4113e.png' title='f_1(uv)' alt='f_1(uv)' align='middle' />. Writing it down in detail tells us that the only point where a difference occurs is if both u and v are odd, and this case we can figure out from the case where u=v=&xi; since &eta; only translates chainmaps higher up in degree.</p>
<p>Now, <img src='/latexrender/pictures/e7cb0fb0b8ab83de4d8aac6f07673e6e.png' title='\xi^2=0' alt='\xi^2=0' align='middle' />, so <img src='/latexrender/pictures/d7ab44207f95fc1219511a1e1e322b46.png' title='f_1(\xi^2)=0' alt='f_1(\xi^2)=0' align='middle' />.<br />
And <img src='/latexrender/pictures/1595294364db0d63a4ef26c952403542.png' title='f_1(\xi)f_1(\xi)' alt='f_1(\xi)f_1(\xi)' align='middle' /> we can read off the following diagram<br />
<img src='/latexrender/pictures/37e90de9adcbd0f6dd3b60096fb874c7.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
and thus we can conclude that <img src='/latexrender/pictures/3cc328f3ba038761c87918edfc0ff05a.png' title='f_1(\xi)f_1(\xi)=\cdot x^2' alt='f_1(\xi)f_1(\xi)=\cdot x^2' align='middle' /> in degree 2. We shall be juggling maps a lot, so I will use the notation (x y z w)[i] for the map in <img src='/latexrender/pictures/6bd0ef434fa45903cba91abb967ebcd7.png' title='\Hom_\Lambda(P,P)' alt='\Hom_\Lambda(P,P)' align='middle' /> that drops i degrees, and where the four last positions are multiplication by x, y, z and w respectively. So, with this notation, we have<br />
f<sub>1</sub>(&eta;)=(1 1 1 1)[2]<br />
f<sub>1</sub>(&xi;)=(1 x<sup>2</sup> 1 x<sup>2</sup>)[1]<br />
f<sub>1</sub>(&xi;)f<sub>1</sub>(&xi;) = (x<sup>2</sup> x<sup>2</sup> x<sup>2</sup> x<sup>2</sup>)[2]</p>
<p>Composing the lowest degree component of the map (x<sup>2</sup> x<sup>2</sup> x<sup>2</sup> x<sup>2</sup>)[2] with the augmentation map, we see that in cohomology, it corresponds to the 0 element. So it is actually homotopic to the image of <img src='/latexrender/pictures/4f599ac31644776059300d3ce2afeba9.png' title='\xi^2' alt='\xi^2' align='middle' /> under f<sub>1</sub>, and this particular homotopy is what we&#8217;ll want <img src='/latexrender/pictures/f868207afcc281443ef32ac07696c46f.png' title='f_2(\xi,\xi)' alt='f_2(\xi,\xi)' align='middle' /> to be. </p>
<p>So we&#8217;ll want a homotopy h, defined by that<br />
dh+hd = (x<sup>2</sup> x<sup>2</sup> x<sup>2</sup> x<sup>2</sup>)[2]<br />
so we can immediately conclude that h needs to be of degree 1, since composition with d will add another degree step. So our h will look something like<br />
<img src='/latexrender/pictures/0c98fae446553ee2be033f613c73e65d.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{h}&amp;&amp;\rdTo^{h}&amp;&amp;\rdTo^{h}&amp;&amp;\rdTo^{h}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{h}&amp;&amp;\rdTo^{h}&amp;&amp;\rdTo^{h}&amp;&amp;\rdTo^{h}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots&#10;\end{diagram}' align='middle' /><br />
and we can check what happens as we chase through the diagram. If we start at an odd-indexed position, we&#8217;ll get the two components<br />
hd(o) = h(x o) = x h(o)<br />
dh(o) = x<sup>3</sup> h(o)<br />
for o of odd degree. If we instead start in an even degree, we get<br />
hd(e) = h(x<sup>3</sup>e) = x<sup>3</sup>h(e)<br />
dh(e) = x h(e)<br />
where e is an element of even degree. By close inspection in the diagram, we note that the expressions involving x<sup>3</sup> all involve h applied on elements of odd degree, and so we&#8217;ll set those to vanish, and fill in the needed values by letting h(e)=x. Thus we get the chain map<br />
h = (x 0 x 0) [1]<br />
or in diagrammatic form<br />
<img src='/latexrender/pictures/71111649f799286d20005b6dc143226d.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots&#10;\end{diagram}' align='middle' /></p>
<p>Thus <img src='/latexrender/pictures/876756d69297a72d9cf32c6e6d2d05c4.png' title='f_2(\xi,\xi)=(x\; 0\; x\; 0)[1]' alt='f_2(\xi,\xi)=(x\; 0\; x\; 0)[1]' align='middle' />, and f<sub>2</sub> on odd and odd elements are all translates of this, and all other parameters to f<sub>2</sub> give us a zero map. This brings us to a point where we can start investigating m<sub>3</sub>.</p>
<p>We can extract f<sub>1</sub>m<sub>3</sub> and m<sub>1</sub>f<sub>3</sub> from the 3rd A<sub>&infin;</sub>-morphism axiom, and put the rest into a map of its own. This will end up to be something supposed to be homotopic to the image of m<sub>3</sub>, and so we can define m<sub>3</sub> and the homotopy once we have them.</p>
<p>The rest of the axiom is<br />
<img src='/latexrender/pictures/933a464d190ff932d9eedb685695c844.png' title='&#10;\Phi_3=m_2(f_1\otimes f_2+f_2\otimes f_1)+f_2(1\otimes m_2+m_2\otimes 1)' alt='&#10;\Phi_3=m_2(f_1\otimes f_2+f_2\otimes f_1)+f_2(1\otimes m_2+m_2\otimes 1)' align='middle' /><br />
(where I am using the fact that we&#8217;re in characteristic 2 extensively)<br />
Applying this on elements x,y,z gives us a possibility to distinguish between cases. </p>
<p>If only one element is of odd degree, then every f<sub>2</sub> occurring will have at least one even argument, and so will vanish.</p>
<p>If two elements are of odd degree, we get the expressions<br />
<img src='/latexrender/pictures/9b3d9d31e1b1fd6b824755c2aa839c15.png' title='f_2(x,y)f_1(z)+f_2(x,yz)' alt='f_2(x,y)f_1(z)+f_2(x,yz)' align='middle' /> for x,y odd<br />
<img src='/latexrender/pictures/85a9b62cc5e8cb5aa2645688d3d3d29b.png' title='f_2(x,yz)+f_2(xy,z)' alt='f_2(x,yz)+f_2(xy,z)' align='middle' /> for x,z odd<br />
<img src='/latexrender/pictures/de8e34480762d24ca344ff73ec0002bd.png' title='f_1(x)f_2(y,z)+f_2(xy,z)' alt='f_1(x)f_2(y,z)+f_2(xy,z)' align='middle' /> for y,z odd.<br />
Each of these vanish if we take the behaviour of f<sub>2</sub> for higher odd coclasses into account: these are just translates of the behaviour defined in f<sub>2</sub>(&xi;,&xi;), and so should vanish, since we defined f<sub>2</sub> on pairs of odd classes to just be translates of the value on &xi; and &xi;.</p>
<p>Remains the case with all three elements of odd degree. Again, higher odd elements behave by translating the behaviour of &xi;, and so it is enough to study the behaviour on &xi;, &xi;, &xi;.</p>
<p>In this case, we get<br />
<img src='/latexrender/pictures/474f71a59f89552ecfb1d3aa3584d88f.png' title='\Phi_3(\xi,\xi,\xi)=f_1(\xi)f_2(\xi,\xi)+f_2(\xi,\xi)f_1(\xi)' alt='\Phi_3(\xi,\xi,\xi)=f_1(\xi)f_2(\xi,\xi)+f_2(\xi,\xi)f_1(\xi)' align='middle' /><br />
which is the sum of the maps given in the following two diagrams<br />
<img src='/latexrender/pictures/6512b7e4214d4e215c6eb8d47a2a8a96.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
and<br />
<img src='/latexrender/pictures/245baf0286942ada56f074af653afd1d.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /></p>
<p>By reading off the diagrams, we note that this sum is the chain map<br />
(x<sup>3</sup> x<sup>3</sup> x<sup>3</sup> x<sup>3</sup>)[2]<br />
and we can further note that this corresponds to the cocycle 0 of degree 2 (since the augmentation composed with x<sup>3</sup> vanishes), so we put m<sub>3</sub>=0, to correspond to what this is homotopic to. And f<sub>3</sub>(&xi;,&xi;,&xi;) needs to be mapped precisely to this homotopy.</p>
<p>So, a homotopy h between 0 and (x<sup>3</sup> x<sup>3</sup> x<sup>3</sup> x<sup>3</sup>)[2] is a map h with<br />
dh+hd = (x<sup>3</sup> x<sup>3</sup> x<sup>3</sup> x<sup>3</sup>)[2]<br />
From the same considerations as above, we can conclude that h will have the two components<br />
hd(o) = h(x o) = x h(o)<br />
dh(o) = x<sup>3</sup> h(o)<br />
for o of odd degree. If we instead start in an even degree, we get<br />
hd(e) = h(x<sup>3</sup>e) = x<sup>3</sup>h(e)<br />
dh(e) = x h(e)<br />
where e is an element of even degree.</p>
<p>Now, this time, since we want the x<sup>3</sup> to occur, we can pick h to be 0 on even degree components and the identity on odd degree components, giving us<br />
h = (0 1 0 1)[1]<br />
and this being the image of f<sub>3</sub>(&xi;,&xi;,&xi;).</p>
<p>Going ever onwards, the next axiom we check is the one, that when we leave m<sub>1</sub>f<sub>4</sub> and f<sub>1</sub>m<sub>4</sub> out of the mix, we&#8217;ll get<br />
<img src='/latexrender/pictures/d1e87935c38bd4e80cb67b489568b30a.png' title='\Phi_4=m_2(f_1\otimes f_3+f_2\otimes f_2+f_3\otimes f_1) + f_2(1\otimes m_3+m_3\otimes 1) \\ + f_3(1\otimes1\otimes m_2+1\otimes m_2\otimes1+m_2\otimes1\otimes1)' alt='\Phi_4=m_2(f_1\otimes f_3+f_2\otimes f_2+f_3\otimes f_1) + f_2(1\otimes m_3+m_3\otimes 1) \\ + f_3(1\otimes1\otimes m_2+1\otimes m_2\otimes1+m_2\otimes1\otimes1)' align='middle' /><br />
and again, we can start looking at cases based on number of odd arguments.</p>
<p>For only one odd argument, all the f<sub>2</sub> and f<sub>3</sub> will vanish. </p>
<p>For two odd arguments, the same thing will happen.</p>
<p>For three odd arguments, we get the expressions<br />
<img src='/latexrender/pictures/bb6a4ca076e5dcdceb6f15c9fd6dd29b.png' title='f_1(x)f_3(y,z,w)+f_3(xy,z,w)' alt='f_1(x)f_3(y,z,w)+f_3(xy,z,w)' align='middle' /> for x even<br />
<img src='/latexrender/pictures/bf7af1d82eeaf409e2140172269a6d6b.png' title='f_3(xy,z,w)+f_3(x,yz,w)' alt='f_3(xy,z,w)+f_3(x,yz,w)' align='middle' /> for y even<br />
<img src='/latexrender/pictures/80394698356caa4a410448a10a028f51.png' title='f_3(x,yz,w)+f_3(x,y,zw)' alt='f_3(x,yz,w)+f_3(x,y,zw)' align='middle' /> for z even<br />
<img src='/latexrender/pictures/192b2dc89f917783c0cf8839343e523a.png' title='f_3(x,y,z)f_1(w)+f_3(x,y,zw)' alt='f_3(x,y,z)f_1(w)+f_3(x,y,zw)' align='middle' /> for w even<br />
where the expressions vanish since all summands in each are the same translations of <img src='/latexrender/pictures/96591aeadb644741aa8a5c9c7a80d9ff.png' title='f_3(\xi,\xi,\xi)' alt='f_3(\xi,\xi,\xi)' align='middle' />.</p>
<p>And for <img src='/latexrender/pictures/b7b0aa7149da261edeffb87d4b5f6e91.png' title='\Phi_4(\xi,\xi,\xi,\xi)' alt='\Phi_4(\xi,\xi,\xi,\xi)' align='middle' /> we get<br />
<img src='/latexrender/pictures/fdda05d9896153b8607c98dc34c0ef17.png' title='f_1(\xi)f_3(\xi,\xi,\xi)+f_2(\xi,\xi)f_2(\xi,\xi)+f_3(\xi,\xi,\xi)f_1(\xi)' alt='f_1(\xi)f_3(\xi,\xi,\xi)+f_2(\xi,\xi)f_2(\xi,\xi)+f_3(\xi,\xi,\xi)f_1(\xi)' align='middle' /></p>
<p>Again, we calculate each summand by using a corresponding diagram, and get the three diagrams<br />
<img src='/latexrender/pictures/6fc924e51ca81e04e124568adfe1f3d8.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
for f<sub>1</sub>f<sub>3</sub> and<br />
<img src='/latexrender/pictures/5094a8db00bbc19c92325b8bc13660da.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{x^2}&amp;&amp;\rdTo^{1}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{1}&amp;&amp;\rdTo^{0}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
for f<sub>3</sub>f<sub>1</sub> and<br />
<img src='/latexrender/pictures/ea21b5db665d1ca2ca524796fddb130d.png' title='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' alt='\begin{diagram}&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}&amp;&amp;\rdTo^{0}&amp;&amp;\rdTo^{x}\\&#10;\cdots&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\Lambda&amp;\rTo^x&amp;\Lambda&amp;\rTo^{x^3}&amp;\cdots\\&#10;\end{diagram}' align='middle' /><br />
for f<sub>2</sub>f<sub>2</sub></p>
<p>Thus we can read off that f<sub>2</sub>f<sub>2</sub> vanishes, and that the complete expression for <img src='/latexrender/pictures/b7b0aa7149da261edeffb87d4b5f6e91.png' title='\Phi_4(\xi,\xi,\xi,\xi)' alt='\Phi_4(\xi,\xi,\xi,\xi)' align='middle' /> is the one we&#8217;d write down as<br />
(1 1 1 1)[2]<br />
which we recognize as <img src='/latexrender/pictures/f8d0dcfb5ab9761f1c793d73f541b116.png' title='f_1(\eta)' alt='f_1(\eta)' align='middle' />, so we set <img src='/latexrender/pictures/b61d483c9bcd17d132faa0dd5d84568e.png' title='m_4(\xi,\xi,\xi,\xi)=\eta' alt='m_4(\xi,\xi,\xi,\xi)=\eta' align='middle' /> and <img src='/latexrender/pictures/75eb581fadd9d93809943dc3d4825f8a.png' title='f_4=f_i=0' alt='f_4=f_i=0' align='middle' />. </p>
<p>And this concludes the calculation of the A<sub>&infin;</sub>-structure on <img src='/latexrender/pictures/45994768f6c2d91f559436fc7ed79b2b.png' title='H^*(C_4,\mathbb F_2)' alt='H^*(C_4,\mathbb F_2)' align='middle' />, and also gives a rather clear hint as to how to do it for <img src='/latexrender/pictures/88756214b1cb3d2c7a4b5ac8a98f5240.png' title='H^*(C_{2^i},\mathbb F_2)' alt='H^*(C_{2^i},\mathbb F_2)' align='middle' /> in general.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/11/a-algebras-and-group-cohomology/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A&#8734; for the layman</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/11/a-for-the-layman/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/11/a-for-the-layman/#comments</comments>
		<pubDate>Tue, 07 Nov 2006 15:18:48 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/11/a-for-the-layman/</guid>
		<description><![CDATA[I recently had reason to describe my PhD work in complete laymans terms while writing letters to my grandparents. This being a good thing to do in order to digest your ideas properly, I thought I might try and write it up here as well. It will, however, push through some 100-odd years of mathematical [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had reason to describe my PhD work in complete laymans terms while writing letters to my grandparents. This being a good thing to do in order to digest your ideas properly, I thought I might try and write it up here as well.</p>
<p>It will, however, push through some 100-odd years of mathematical development rather swiftly. Try to keep up &#8211; I will keep it as light as I can while not losing what I want to say.</p>
<h2>Algebra</h2>
<p>In the 19th century, a number of different mathematical efforts ended up using more or less precisely the same structures, though not really recognizing that they were the same. This recognition came with Cayley, who first brought the first abstract definition of a group.</p>
<p>A group is a set G of elements, with a binary operation *, such that the following relations hold:</p>
<ol>
<li>a*(b*c) = (a*b)*c for any a,b,c in G  (associativity)
<li>There is an element e such that for any a in G e*a=a*e=a  (identity element)
<li>For any a in G, there is an element a&#8217; in G such that a&#8217;*a=a*a&#8217;=e (inverses)
</ol>
<p>This turns out to be just what you needed to merge the studies of symmetries in geometric objects with the study of solvability of polynomial equations, and a number of other various ideas that were floating around. I will put this all on hold for a while, and then return to it at the end of this rant.</p>
<h2>Topology</h2>
<p>At the end of the 19th century and beginning of the 20th century, Henri Poincaré spent some time thinking about geometry, and formulating his ideas in a way that lay the ground stones to the modern study of topology. This was to a large extent done in his <i>Analysis Situs</i>. In his work he considers closed surfaces &#8211; i.e. surfaces without a border, and that are limited in their girth. To be specific, they need to be compact &#8211; which rules out things like the plane, but allows spheres, tori, Klein bottles and such entities. Poincaré considered the question of what essentially different surfaces are possible. We&#8217;re not interested hereby to distinguish between surfaces just because they happen to be scaled differently, but we are interest in distinguishing if they have differences that are independent of scaling factors.</p>
<p>To attack the question, Poincaré studied closed curves on the surface. A closed curve is something that is parametrized by the interval [0,1] and such that it starts and ends in the same point. So, mathematically, it&#8217;s a function <img src='/latexrender/pictures/152743320f95ec69230eebccfddc8151.png' title='f\colon [0,1]\to X' alt='f\colon [0,1]\to X' align='middle' />, with f(0)=f(1). </p>
<p>The normal way to study these entities is to also require all the curves we&#8217;re looking at to start at one specific point x<sub>0</sub>, so we require f(0)=f(1)=x<sub>0</sub>. Should we have two such functions, f and g, we can compose them by taking h(t)=f(2t) during [0,0.5] and h(t)=g(2t-1) during [0.5,1].</p>
<p>Now, the structure we get this way ALMOST ends up being a group as we stated up at the beginning. It isn&#8217;t quite, since we actually see a difference between staying in one place for half the time and then rushing through the race course in double speed for the rest of the time; or for that matter, composing three functions two different ways ends up being different as well; we don&#8217;t think it is the same partition when we do</p>
<table border=1 width=30%>
<tr>
<td width=25% align=center>f</td>
<td width=25% align=center>g</td>
<td width=50% align=center>h</td>
</tr>
</table>
<p>as when we do </p>
<table border=1 width=30%>
<tr>
<td width=50% align=center>f</td>
<td width=25% align=center>g</td>
<td width=25% align=center>h</td>
</tr>
</table>
<p>However, both this associativity as well as the identity element (racing the course in double speed) and inverses (going first one way, then the other) can all be solved if we view two curves as equal if they can be continuously deformed into each other. So we basically end up with a deformation from f to g being a map H(x,t) parametrized, so that H(0,t)=f(t), H(1,t)=g(t), and everything is continuous in all directions.</p>
<p>In classical algebraic topology, we more or less stop at this point, say that two curves are homotopic if they have a homotopy (such an H) between them, and form a group of equivalence classes of curves, called the fundamental group. That&#8217;s all nice, but not quite what I want to go and do.</p>
<p>In fact, I&#8217;m very much interested in this homotopy of associativity. We have the two associativity versions (fg)h and f(gh), depicted above with the tables. And some homotopy H between them. However, when we then look at ways to associate four curves, we get chains of homotopies that need not be the same. To be specific, we can use our homotopies guaranteed from the first step to ensure that<br />
((fg)h)i &#8212; (f(gh))i &#8212; f((gh)i) &#8212; f(g(hi))<br />
and that<br />
((fg)h)i) &#8212; ((fg)(hi)) &#8212; f(g(hi))<br />
where all the &#8212; are homotopies between the differently associated thingies. And these two different paths need in no way be equal. <b>But</b>, if things are nice enough, there&#8217;s going to be a homotopy between these paths. If that&#8217;s the case, then this homotopy will give rise to the faces of a 3-dimensional polygon, where, again, the surface of the polygon represents homotopical paths that need not be equal, but may well be homotopic. This continues on, and on, and on, and a topological space where these homotopies are present all the way up is called an A<sub>&infin;</sub>-space.</p>
<h2>Homological algebra</h2>
<p>With inspiration from the A<sub>&infin;</sub>-spaces, and because it pops up as the cohomology of such spaces (another, much nicer to calculate invariant than the fundamental group and its cousins, the homotopy groups &#8211; since homology and cohomology ends up being mostly linear algebra) there is a theory formulated by Jim Stasheff originally, and revitalized by among others Bernhard Keller dealing with algebras (i.e. algebraic structures where +, -, * and occasionally even / works) that have a set of higher multiplications that take any number of arguments, and not only 2 as normal multiplication does, and then returns something else from the algebra; and that obey axioms that are taken from these homotopies of homotopy paths we had in the last section. There is one axiom built on f(gh) &#8212; (fg)h, there is one axiom built on the homotopy between the two different paths between ((fg)h)i and f(g(hi)), and so on.</p>
<p>The really funky bit pops up when we combine this with cohomology. My advisor and I are interested in a way to do topology on groups; if we have a finite group &#8211; a finite set with an operation that fulfills the axioms from the beginning; we can build an algebra from it, that in some way represents the topological cohomology of a space that was built from the group in a welldefined manner. This cohomology carries some information about the original group, but loses some, so there may be infinitely many groups that give the same cohomology algebra. </p>
<p>However &#8211; if we also know the A<sub>&infin;</sub> structure on the cohomology, if we know all these higher multiplications in addition to knowing the actual cohomology algebra, then we can reconstruct the original cohomology algebra from this data. This statement is at the core of the work done in the study of A<sub>&infin;</sub>-algebras, and my current plans for my PhD is to see whether I can get all the things the theory promises to work for the specific case of group cohomology. There are theorems proven already that it should, probably, work; but this is a case that simply has not been considered so far. Thus just sitting down and working things through may be a significant advance of the state of knowledge in itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/11/a-for-the-layman/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Weekly Report: Parties and lectures</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/10/weekly-report-parties-and-lectures/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/10/weekly-report-parties-and-lectures/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 10:05:21 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Weekly report]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/10/weekly-report-parties-and-lectures/</guid>
		<description><![CDATA[The term has started. In full force. No seating in the lunch cafeteria, lot&#8217;s of people all over the place, lot&#8217;s and lot&#8217;s of new students, and lectures and examples classes kicking off all over the place. I&#8217;m leading an example class this year: linear algebra and geometry part 1 for the maths majors. One [...]]]></description>
			<content:encoded><![CDATA[<p>The term has started. In full force. No seating in the lunch cafeteria, lot&#8217;s of people all over the place, lot&#8217;s and lot&#8217;s of new students, and lectures and examples classes kicking off all over the place.</p>
<p>I&#8217;m leading an example class this year: linear algebra and geometry part 1 for the maths majors. One of six different examples class sessions for the same course. And apparently, my good tradition of going out drinking with my students keeps up: I went to the exchange students term-start party last friday, and while partying with the swedes and finns of the scandinavian Stammtisch on the dance floor, a girl squeezes through the crowds past us and asks me in passing if I&#8217;m not the examples class teacher. Turns out she registered for my class.</p>
<p>First contact with the students is on tuesday morning.</p>
<p>In other news, it was 200 years since Napoleon fought the Prussians and Saxons at Jena-Auerstedt last weekend, and so I went up to the old battle ground and watched a reenactment. The French won. Again. But it was interesting to see a whole field get so covered in gunpowder smoke that you couldn&#8217;t see to the other side.</p>
<p>I have submitted my first article to a journal as a result of my PhD. And I have received a first article to review for the Mathematical Reviews. Now I only have to read the thing. And write about it.</p>
<p>For those interested, my next Sweden visit is over christmas. I&#8217;m landing at Arlanda on the 20th of December, and leaving 10th of January. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/10/weekly-report-parties-and-lectures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A-infinity and Hochschild cocycles</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/10/a-infinity-and-hochschild-cocycles/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/10/a-infinity-and-hochschild-cocycles/#comments</comments>
		<pubDate>Fri, 20 Oct 2006 14:15:34 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[A-infinity]]></category>
		<category><![CDATA[Algebra]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Operads and PROPs]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/10/a-infinity-and-hochschild-cocycles/</guid>
		<description><![CDATA[This blogpost is a running log of my thoughts while reading a couple of papers by Bernhard Keller. I recommend anyone reading this and feeling interest to hit the arXiv and search for his introductions to A&#8734;-algebras. Especially math.RA/9910179 serves as a basis for this post. If you do enough of a particular brand of [...]]]></description>
			<content:encoded><![CDATA[<p>This blogpost is a running log of my thoughts while reading a couple of papers by Bernhard Keller. I recommend anyone reading this and feeling interest to hit the arXiv and search for his introductions to A<sub>&infin;</sub>-algebras. Especially math.RA/9910179 serves as a basis for this post. </p>
<p>If you do enough of a particular brand of homotopy theory, you&#8217;ll sooner or later encounter algebras that occur somewhat naturally, but which aren&#8217;t necessarily associative as such, but rather only associative up to homotopy. The first obvious example is that of a loop space, viewed as a group: associativity only holds after you impose equivalence between homotopic loops.</p>
<p>In fact, if we start with a based space &#8212; the normal situation in original homotopy of topological spaces &#8212; and start looking at the space of all loops based in the basepoint of the space. A loop is simply an image of the circle in the topological space, with the circle based in 0 and running up to 2&pi;. Then we know we can compose loops, by just running through first one on half the time, and then the other on the second half the time. So from 0 to &pi; we run through one loop, and then from &pi; to 2&pi; we run through the other.</p>
<p>However, we now get genuinely different loops &#8212; seen as functions &#8212; from the different ways to compose three loops. Let the loops be called <i>f,g,h</i>. Then <i>f(gh)</i> is a different loop from <i>(fg)h</i>, since in the first loop, <i>f</i> happens from 0 to &pi; and in the second, <i>f</i> happens only from 0 to &pi;/2. But we were doing homotopy! So we have some continuous map, named the homotopy, that goes from <i>f(gh)</i> to <i>(fg)h</i>. So then everything is alright after all. We don&#8217;t have strict associativity in the loop space, but we have associativity up to homotopy.</p>
<p>But now, if we look at the different ways to compose four loops, we get odd things happening. We&#8217;d have <i>f(g(hi))</i> and <i>((fg)h)i</i> as to extremal versions, and then two different ways to move between them. One way is to go<br />
<i>f(g(hi)) &rarr; (fg)(hi) &rarr; ((fg)h)i</i> and the other one is to go<br />
<i>f(g(hi)) &rarr; f((gh)i) &rarr; (f(gh))i &rarr; ((fg)h)i</i></p>
<p>So we&#8217;re stuck in the same place again, but with a higher level set of problems. Not really a big problem: we&#8217;ll simply require there to be a homotopy between these two paths. So we slot in a continuous function that takes care of that.</p>
<p>But then, if we look at the ways to compose five loops, we end up getting homotopies that form a spherical shell, and the same problem that we can do things in different way. But we can always make sure these are homotopical as well. And so on. The different homotopies needed are called <em>associahedra</em> and were introduced by Stasheff. A topological space that admits all these is called an A<sub>&infin;</sub>-space. Moreover, if a topological space admits an A<sub>&infin;</sub>-structure, then it is homotopy equivalent to a loop space of something.</p>
<p>But hang on a second. I&#8217;m doing algebra, not topology. What good is this?</p>
<p>Well, we certainly have a concept of associativity for algebras. And we do, once we start juggling the right kind of objects, have a concept of homotopies in an algebraic setting. So, we&#8217;ll try to mimic all of this but with a suitable setting to be able to talk about algebras that are simultaneously chain complexes.</p>
<h2>A-infinity algebras enter the stage</h2>
<p>So, we&#8217;ll want an algebra over some field <i>k</i>. We&#8217;ll start of gently, introducing it first as a graded vectorspace <img src='/latexrender/pictures/db6661a48c228e53cff1a8196f91c784.png' title='V=\bigoplus_{i\in\mathbb Z} V_i' alt='V=\bigoplus_{i\in\mathbb Z} V_i' align='middle' />; and we&#8217;ll call <img src='/latexrender/pictures/b890cba034d941ceaad14fe8b5f2ca4f.png' title='V_p' alt='V_p' align='middle' /> the component of degree p. The category of graded vector spaces come equipped with one rather natural endofunctor: the suspension S. It works by <img src='/latexrender/pictures/7e3e849f0c2fbb29046e9610b7f3893a.png' title='(SV)_p=V_{p+1}' alt='(SV)_p=V_{p+1}' align='middle' />. An <i>n</i>-ary operator of degree <i>k</i> on a graded vector space <i>V</i> is a family of maps <img src='/latexrender/pictures/c0a0b737eec13fdbbab8aa2c6cf5c57b.png' title='(V^{\otimes n})_{i-k}\to V_i' alt='(V^{\otimes n})_{i-k}\to V_i' align='middle' />.</p>
<p>We want to tune a family of maps corresponding to the composition and higher homotopies in the topological situation, as well as handling the differential; which we want there just because we&#8217;re doing homological algebra and see a graded space. So we&#8217;ll want a differential<br />
<img src='/latexrender/pictures/8d87bf82979ffa2d7dc7f0a34c7757ad.png' title='d\colon V\to V' alt='d\colon V\to V' align='middle' /> of degree 1, and a multiplication <img src='/latexrender/pictures/094e14ed63fe63fabe957fef76f21cb0.png' title='\mu\colon V\otimes V\to V' alt='\mu\colon V\otimes V\to V' align='middle' /> of degree 0. The homotopy of the associativity of the multiplication will be some 3-ary map h such that <img src='/latexrender/pictures/0f25b864c63cfe0e7c8b99a206874387.png' title='\mu(1\otimes\mu+\mu\otimes1)=hd+dh' alt='\mu(1\otimes\mu+\mu\otimes1)=hd+dh' align='middle' />, whereby the lefthand side has degree 0, and the righthand side has degree 1 more than the degree of h, since the differential has degree 1. Thus, for each of the higher homotopies, we&#8217;ll fall one degree step. All in all, the <i>n</i>-ary higher homotopy operator will have degree 2-<i>n</i>.</p>
<p>We note that <img src='/latexrender/pictures/2cdeb32e012621e7966c86a68f6d0a7b.png' title='(V^{\otimes n})_k = (SV^{\otimes n})_{k-n}' alt='(V^{\otimes n})_k = (SV^{\otimes n})_{k-n}' align='middle' /> (just check the degrees on both sides&#8230;), and so that this, maybe slightly artificial looking, degree condition on the higher homotopies can be handled rather neatly. Each <i>n</i>-ary homotopy is a map<br />
<img src='/latexrender/pictures/b7def4efa9a9b7c1b5e9d900769b6fef.png' title='V^{\otimes n}\to V' alt='V^{\otimes n}\to V' align='middle' /> of degree 2-<i>n</i>. That means, that we can just as well view it as a map<br />
<img src='/latexrender/pictures/c3d98f314edf25471ba4de7f5e504ecd.png' title='(SV)^{\otimes n}\to SV' alt='(SV)^{\otimes n}\to SV' align='middle' /> of some degree; since the <i>S</i> operator only changes the degrees within <i>V</i>. We can find the degree of this map by looking at where the degree 0 slice of <img src='/latexrender/pictures/3e77e0d996154f8f185e8a7453b19fc2.png' title='(SV)^{\otimes n}' alt='(SV)^{\otimes n}' align='middle' /> ends up. This is, in reality the degree <i>n</i> slice of <img src='/latexrender/pictures/d6a303899a557a8a95978b00de8ed4bf.png' title='V^{\otimes n}' alt='V^{\otimes n}' align='middle' />, and thus ends up in degree 2 of <i>V</i>, which is to say that it ends up in degree 1 of <i>SV</i>. So the degree 2-<i>n</i> map defined on <i>V</i> turns into a degree 1 map of <i>SV</i>; which is rather neat.</p>
<p>So, each interesting map &#8212; let&#8217;s call them all <img src='/latexrender/pictures/342e772474b691ac87dac30aeef596c0.png' title='m_i' alt='m_i' align='middle' /> is a degree 1 map <img src='/latexrender/pictures/c3d98f314edf25471ba4de7f5e504ecd.png' title='(SV)^{\otimes n}\to SV' alt='(SV)^{\otimes n}\to SV' align='middle' />. This family of maps is a part of the structure definition of an A<sub>&infin;</sub>-algebra. The rest of its definition is the set of properties we want these maps to fulfill. And what would those be?</p>
<p>First of all, we want it to be a chain complex when we&#8217;re done, so that we can use it to do homological stuff. So we&#8217;ll want <img src='/latexrender/pictures/9fc63e8465cecc6d173dc967e22e5a14.png' title='m_1^2=0' alt='m_1^2=0' align='middle' />. Next, we&#8217;ll want it to fulfill the Leibniz rule, so that it really does behave like a differential. So <img src='/latexrender/pictures/06905e3160e8a267344aa50d95c65a36.png' title='m_1\circ m_2 = m_2(1\otimes m_1+m_1\otimes 1)' alt='m_1\circ m_2 = m_2(1\otimes m_1+m_1\otimes 1)' align='middle' />. And we want the associativity to hold &#8211; but only up to homotopy. That <i>f</i> and <i>g</i> are homotopic means that there is some chain map <i>h</i> such that <i>f-g=hd+dh</i> for the differentials on the chain complexes that <i>f</i> and <i>g</i> go between. Now, the differential on <i>V</i> we take to be our <img src='/latexrender/pictures/377b1a53b01e907138040867edc7cac2.png' title='m_1' alt='m_1' align='middle' />, and the differential on <img src='/latexrender/pictures/d6a303899a557a8a95978b00de8ed4bf.png' title='V^{\otimes n}' alt='V^{\otimes n}' align='middle' /> is induced from this as the sum <img src='/latexrender/pictures/9268749870727cbc59b2e5bf180f7d85.png' title='\sum_{i=1}^n 1^{\otimes i-1}\otimes m_1\otimes 1^{\otimes n-i}' alt='\sum_{i=1}^n 1^{\otimes i-1}\otimes m_1\otimes 1^{\otimes n-i}' align='middle' />. Now, the various versions of associating three elements under this multiplication we&#8217;ve defined are <img src='/latexrender/pictures/6b7520f34c8ee7b3afdcf371f0e1a37e.png' title='m_2(1\otimes m_2)' alt='m_2(1\otimes m_2)' align='middle' /> and <img src='/latexrender/pictures/82218baf12bf50526220e1f0e1bbbdd2.png' title='m_2(m_2\otimes 1)' alt='m_2(m_2\otimes 1)' align='middle' />. Both of these are chain maps <img src='/latexrender/pictures/e5f733aaeabf07609b9d0dc880665912.png' title='SV^{\otimes 3}\to SV' alt='SV^{\otimes 3}\to SV' align='middle' /> (chain maps since the Leibniz rule holds). So we&#8217;ll want <img src='/latexrender/pictures/63d0e9469cbe863f3aa3b6d98bd461a6.png' title='m_2(1\otimes m_2-m_2\otimes 1)=dm_3+m_3d' alt='m_2(1\otimes m_2-m_2\otimes 1)=dm_3+m_3d' align='middle' />, where the first <i>d</i> is just <img src='/latexrender/pictures/377b1a53b01e907138040867edc7cac2.png' title='m_1' alt='m_1' align='middle' /> and the second is <img src='/latexrender/pictures/05c6088fa17f40c66c59750194681345.png' title='m_1\otimes1\otimes1+1\otimes m_1\otimes1+1\otimes1\otimes m_2' alt='m_1\otimes1\otimes1+1\otimes m_1\otimes1+1\otimes1\otimes m_2' align='middle' />. If we go on with all the higher associahedra, and choose our signs in a neat way, we&#8217;ll end up with the generic condition that<br />
<img src='/latexrender/pictures/a1204263d97aa995438617c5096daf51.png' title='\sum_{n=r+s+t}(-1)^{r+st}m_{r+t+1}\circ(1^{\otimes r}\otimes m_s\otimes1^{\otimes t})=0' alt='\sum_{n=r+s+t}(-1)^{r+st}m_{r+t+1}\circ(1^{\otimes r}\otimes m_s\otimes1^{\otimes t})=0' align='middle' /></p>
<p>So that gives us some sort of abstract feel for what an A<sub>&infin;</sub>-algebra is. Do we know any examples? Can we construct any?</p>
<h2>Examples</h2>
<p>First of all, any algebra is a differential graded algebra concentrated in degree 0. So if <img src='/latexrender/pictures/eacb7028234392106abe9fff028520e7.png' title='V_i=0' alt='V_i=0' align='middle' /> for all non-zero <i>i</i>, and <img src='/latexrender/pictures/a4e435d4d078e7df1fa07e13d4a32ebb.png' title='m_2' alt='m_2' align='middle' /> is the only non-zero structure map, then we recover the normal associative algebras.</p>
<p>A differential graded algebra is an A<sub>&infin;</sub>-algebra, associative and not only up to homotopy. This is the same as all higher homotopies vanishing, so it is the case where <img src='/latexrender/pictures/21484c2341fc71109329858f72b1f96e.png' title='m_1,m_2' alt='m_1,m_2' align='middle' /> are the only non-zero maps. </p>
<h3>Hochschild cohomology</h3>
<p>Inspired by the success of simplicial complexes in algebraic topology, the inspiration pops up to try and introduce similar things in other theories. Thus, the idea of simplicial objects appears &#8211; which are defined as a functor from the category of finite ordered sets of integers with nondecreasing monotone functions as the arrows. In this setting, face maps and degeneracy maps get introduced: the face maps miss precisely one element, and the degeneracy maps duplicate precisely one element. This corresponds closely to our intuition of faces of simplices and degenerate simplices. With a simplicial objects theory, the differential in a chain complex ends up being just the sum of faces with appropriate signs. The whole theory varies far more than here indicated though.</p>
<p>Suppose now we want to construct a cohomology theory which includes this at its core. One method of arriving there is the theory of Hochschild cohomology. This is built basically the same way as any other cohomology theory, with the salient difference that the differentials and degeneracy maps are chosen differently. So to a bimodule <i>M</i> over a ring <i>R</i>, we set <img src='/latexrender/pictures/c357e31f38e85069ef1614e54f5a7c89.png' title='C_0=M' alt='C_0=M' align='middle' /> and <img src='/latexrender/pictures/f49579543262734c9bfd6aeb71886c9c.png' title='C_i=M\otimes R^{\otimes i}' alt='C_i=M\otimes R^{\otimes i}' align='middle' />.<br />
The face maps on this complex is defined as<br />
<img src='/latexrender/pictures/83840a3efecf547171d58a733330cd57.png' title='\partial_0(m\otimes r_1\otimes\dots\otimes r_n)=mr_1\otimes r_2\otimes\dots\otimes r_n' alt='\partial_0(m\otimes r_1\otimes\dots\otimes r_n)=mr_1\otimes r_2\otimes\dots\otimes r_n' align='middle' /><br />
<img src='/latexrender/pictures/aaf51f2c0c0a59f014fdb79f0017e6b0.png' title='\partial_i(m\otimes r_1\otimes\dots\otimes r_n)=m\otimes\dots\otimes r_ir_{i+1}\otimes\dots\otimes r_n' alt='\partial_i(m\otimes r_1\otimes\dots\otimes r_n)=m\otimes\dots\otimes r_ir_{i+1}\otimes\dots\otimes r_n' align='middle' /><br />
<img src='/latexrender/pictures/36b9b8d6479ac3e6fd3bef1fec1bf216.png' title='\partial_n(m\otimes r_1\otimes\dots\otimes r_n)=r_nm\otimes\dots\otimes r_{n-1}' alt='\partial_n(m\otimes r_1\otimes\dots\otimes r_n)=r_nm\otimes\dots\otimes r_{n-1}' align='middle' /><br />
and the degeneracy maps just slot in a <img src='/latexrender/pictures/8b05b9142d98e2788c3321fcf24a7cd9.png' title='\otimes 1\otimes' alt='\otimes 1\otimes' align='middle' /> at the appropriate index. </p>
<p>We build a complex from this by just putting <img src='/latexrender/pictures/5e7625fdcb416dc1d79f91173efb4a45.png' title='d=\sum(-1)^i\partial_i' alt='d=\sum(-1)^i\partial_i' align='middle' />. The homology of the resulting chain complex is called the Hochschild homology <img src='/latexrender/pictures/d5f697338d46846699c30d1fba662d5a.png' title='HH_*(M,R)' alt='HH_*(M,R)' align='middle' />. Dualizing everything, we get a cochain complex of multilinear maps <img src='/latexrender/pictures/0b4dce3c384e6ea731c4a78d575cdfc9.png' title='R^n\to M' alt='R^n\to M' align='middle' />, and the face maps<br />
<img src='/latexrender/pictures/83d739026b4ec17646fe97d6678b7d9f.png' title='\partial^0f(r_0,\dots,r_n)=r_0f(r_1,\dots,r_n)' alt='\partial^0f(r_0,\dots,r_n)=r_0f(r_1,\dots,r_n)' align='middle' /><br />
<img src='/latexrender/pictures/da43026d825a197d16742e4375e05f0f.png' title='\partial^if(r_0,\dots,r_n)=f(r_0,\dots,r_ir_{i+1},\dots,r_n)' alt='\partial^if(r_0,\dots,r_n)=f(r_0,\dots,r_ir_{i+1},\dots,r_n)' align='middle' /><br />
<img src='/latexrender/pictures/c17b65a5ba082807810ff38b5ae836a7.png' title='\partial^nf(r_0,\dots,r_n)=f(r_0,\dots,r_{n-1})r_n' alt='\partial^nf(r_0,\dots,r_n)=f(r_0,\dots,r_{n-1})r_n' align='middle' /><br />
and the degeneracy maps again just inserting a 1 at the appropriate position. The homology of the chain complex we get from <img src='/latexrender/pictures/2fe885fad9b558ca253430622fb0bfc7.png' title='d=\sum(-1)^i\partial^i' alt='d=\sum(-1)^i\partial^i' align='middle' /> has homology the Hochschild cohomology <img src='/latexrender/pictures/ac2679e3dddfe125b74857aa9d98b2da.png' title='HH^*(R,M)' alt='HH^*(R,M)' align='middle' />.</p>
<p>Now, let&#8217;s take some associative algebra <i>B</i>, and look at the graded algebra <img src='/latexrender/pictures/d517a807bfaf0aad8543313d515de647.png' title='A=B[\epsilon]/\epsilon^2' alt='A=B[\epsilon]/\epsilon^2' align='middle' /> with <img src='/latexrender/pictures/483061ffb52a6d5f3a510e7b7475c8ba.png' title='|\epsilon|=2-N' alt='|\epsilon|=2-N' align='middle' />. Note to the attentive reader. This construction is very reminiscent of a graded version of what <a href=http://sigfpe.blogspot.com>sigfpe</a> is doing with <a href=http://sigfpe.blogspot.com/2006/09/practical-synthetic-differential.html</a>practical synthetic differential geometry</a>. We furthermore pick some multilinear map <img src='/latexrender/pictures/4bd90ce0d7fd35d819628a9ac535c8a0.png' title='c\colon B^N\to B' alt='c\colon B^N\to B' align='middle' />, and define <img src='/latexrender/pictures/a4e435d4d078e7df1fa07e13d4a32ebb.png' title='m_2' alt='m_2' align='middle' /> to be normal multiplication in A, and <img src='/latexrender/pictures/342e772474b691ac87dac30aeef596c0.png' title='m_i' alt='m_i' align='middle' />=0 for all other i. Now, we can get a new A<sub>&infin;</sub> structure by setting <img src='/latexrender/pictures/1a8ab64d8c456854d633209d447fd5d5.png' title='\mu_i=m_i' alt='\mu_i=m_i' align='middle' /> for all <img src='/latexrender/pictures/19075d29a7da978a61898994c09d79d8.png' title='i\neq N' alt='i\neq N' align='middle' /> and <img src='/latexrender/pictures/5962f88ab3dc8cc3a4d2340bcdec0a70.png' title='\mu_N=m_N+\epsilon c' alt='\mu_N=m_N+\epsilon c' align='middle' />. </p>
<p>Suppose first that we picked our <img src='/latexrender/pictures/9bb52e6c9f03ba7cdab00a83c95f5c5f.png' title='N=2' alt='N=2' align='middle' />. Then we get, from the A<sub>&infin;</sub>-conditions that<br />
<img src='/latexrender/pictures/f294c2aefa83ab2800f657f4d9ef9701.png' title='\mu_1^2=0' alt='\mu_1^2=0' align='middle' /> (sure, <img src='/latexrender/pictures/f549e6bbf02fdd1f3ee6d4a9d0b9ccff.png' title='\mu_1=0' alt='\mu_1=0' align='middle' /> anyway&#8230;)<br />
<img src='/latexrender/pictures/87adf166893e707152b84683e566c1ed.png' title='\mu_1\circ \mu_2=\mu_2(1\otimes \mu_1+\mu_1\otimes 1)' alt='\mu_1\circ \mu_2=\mu_2(1\otimes \mu_1+\mu_1\otimes 1)' align='middle' /> (no problem. <img src='/latexrender/pictures/37dc09a2b334eb9f45b15d240ba67472.png' title='\mu_1' alt='\mu_1' align='middle' /> is still 0)<br />
<img src='/latexrender/pictures/a81bf8d730c08a32f708b085a7e86b93.png' title='\mu_2(\mu_2\otimes 1-1\otimes\mu_2)=0' alt='\mu_2(\mu_2\otimes 1-1\otimes\mu_2)=0' align='middle' />, which we can expand to, and insert values to get<br />
<img src='/latexrender/pictures/c81a43edbb21d9f534fb02562d30a0bb.png' title='(\mu_2(\mu_2\otimes-1\otimes\mu_2))(x,y,z)=' alt='(\mu_2(\mu_2\otimes-1\otimes\mu_2))(x,y,z)=' align='middle' /><br />
<img src='/latexrender/pictures/65a07f3253761425757ec9b8ad3be61a.png' title='x(yz)-(xy)z+\epsilon(c(x,y)z-xc(y,z))+\epsilon(c(xy,z)-c(x,yz))+\epsilon^2(\cdots)' alt='x(yz)-(xy)z+\epsilon(c(x,y)z-xc(y,z))+\epsilon(c(xy,z)-c(x,yz))+\epsilon^2(\cdots)' align='middle' /><br />
where <i>x(yz)-(xy)z=0</i> since <i>B</i> is associative anyway, and by multilinearity, we note that <i>c(x,y)z=c(x,yz)</i> and <i>xc(y,z)=c(xy,z)</i>, so everything cancels out. Thus this is fulfilled by the preconditions and does not bring any additional information.</p>
<p>Being a Hochschild 2-cocycle, however, only mandates that <img src='/latexrender/pictures/ca786ccbe7b8335fe98823a32d63726c.png' title='dc=0' alt='dc=0' align='middle' />, which using the definitions means that <i>dc(x,y,z)=xc(y,z)-c(xy,z)+c(x,yz)-c(x,y)z=0</i>, which fits perfectly with our observation. Suppose now that we pick some other <img src='/latexrender/pictures/8d9c307cb7f3c4a32822a51922d1ceaa.png' title='N' alt='N' align='middle' />. Then, the only relations that survive, since all but two operations vanish, are those where <img src='/latexrender/pictures/68bacc49316038b30136c5e43311b70f.png' title='\mu_2' alt='\mu_2' align='middle' /> and <img src='/latexrender/pictures/7758d53b193536517b0ba9524b774f6a.png' title='\mu_N' alt='\mu_N' align='middle' /> are combined. This occurs precisely for the relations of degrees <i>N+1</i> and <i>N(N-1)</i>. For the latter case, we combine <img src='/latexrender/pictures/704b3537a89a5bb1b22451f6c0adb861.png' title='\epsilon c' alt='\epsilon c' align='middle' /> with <img src='/latexrender/pictures/704b3537a89a5bb1b22451f6c0adb861.png' title='\epsilon c' alt='\epsilon c' align='middle' />, which gives us something multiplied with <img src='/latexrender/pictures/5e2d862a49341d38e9b2fe9b71f39504.png' title='\epsilon^2' alt='\epsilon^2' align='middle' />, thus vanishing. For the first relation, we receive instead<br />
<img src='/latexrender/pictures/c36b7e8939b6492400fdb20e88ad60c4.png' title='m_2((-1)^N\epsilon c\otimes1-1\otimes\epsilon c)+\sum_{i=1}^{N}\epsilon c(1^{\otimes i-1}\otimes m_2\otimes 1^{\otimes N-i})' alt='m_2((-1)^N\epsilon c\otimes1-1\otimes\epsilon c)+\sum_{i=1}^{N}\epsilon c(1^{\otimes i-1}\otimes m_2\otimes 1^{\otimes N-i})' align='middle' />, or if we translate it to something readable, involving an application to elements, it turns into<br />
<img src='/latexrender/pictures/f437bfaa1d69d75c3efebd494646fb5d.png' title='r_0c(r_1,\dots,r_N)+(-1)^Nc(r_1,\dots,r_{N-1})r_N+\sum_{i=1}^N(-1)^ic(r_0,\dots,r_ir_{i+1},\dots,r_N)' alt='r_0c(r_1,\dots,r_N)+(-1)^Nc(r_1,\dots,r_{N-1})r_N+\sum_{i=1}^N(-1)^ic(r_0,\dots,r_ir_{i+1},\dots,r_N)' align='middle' /><br />
which looks very much like the Hochschild differential on cochains.</p>
<p>So, this is an A<sub>&infin;</sub>-algebra <i>precisely</i> when the chosen map <i>c</i> is a Hochschild cocycle.</p>
<p>If you&#8217;ve read this far, I&#8217;m impressed. If you&#8217;ve understood what I&#8217;ve been saying, I&#8217;m even more impressed &#8211; and probably will run across you sooner or later at some conference or other. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/10/a-infinity-and-hochschild-cocycles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Academic firsts</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/10/academic-firsts/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/10/academic-firsts/#comments</comments>
		<pubDate>Tue, 10 Oct 2006 11:22:37 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/10/academic-firsts/</guid>
		<description><![CDATA[I just submitted a paper to a journal. Based on research I have done during my time as a PhD student. Wish me luck. Update:If you want to read the paper, I suggest you go look at arXiv:math.GR/0610374.]]></description>
			<content:encoded><![CDATA[<p>I just submitted a paper to a journal.</p>
<p>Based on research I have done during my time as a PhD student.</p>
<p>Wish me luck.</p>
<p><i>Update:</i>If you want to read the paper, I suggest you go look at <a href=http://arxiv.org/abs/math.GR/0610374>arXiv:math.GR/0610374</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/10/academic-firsts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

