<?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; A-infinity</title>
	<atom:link href="http://blog.mikael.johanssons.org/archive/category/mathematics/algebra/a-infinity/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>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>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>D8 revisited</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/02/d8-revisited/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/02/d8-revisited/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 17:36:46 +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>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/02/d8-revisited/</guid>
		<description><![CDATA[I have previously calculated the A&#8734;-structure for the cohomology ring of D8. Now, while trying to figure out how to make my work continue from here, I tried working out what algebra this would have come from, assuming that I can adapt Keller&#8217;s higher multiplication theorem to group algebras. A success here would be very [...]]]></description>
			<content:encoded><![CDATA[<p>I have previously <a href=http://blog.mikael.johanssons.org/archive/2006/11/an-a-structure-on-the-cohomology-of-d8/>calculated the A<sub>&infin;</sub>-structure for the cohomology ring of D<sub>8</sub></a>. Now, while trying to figure out how to make my work continue from here, I tried working out what algebra this would have come from, assuming that I can adapt Keller&#8217;s higher multiplication theorem to group algebras.</p>
<p>A success here would be very good news indeed, since for one it would indicate that such an adaptation should be possible, and for another it would possibly give me a way to lend strength both to the previous calculation and to a conjecture I have in the calculation of group cohomology with A<sub>&infin;</sub> means.</p>
<p>So, we start. We recover, from the previous post, the structure of the cohomology ring as <i>k[x,y,z]/(xy)</i>, with <i>x,y</i> in degree 1, and <i>z</i> in degree 2. Furthermore, we have a higher operation, <i>m<sub>4</sub></i>, with <i>m<sub>4</sub>(x,y,x,y)=m<sub>4</sub>(y,x,y,x)=z</i>.</p>
<p>Thus, with the theorem, stating that the maps<br />
<img src='/latexrender/pictures/32282c93c1acf0b8e28508b70dfc4b64.png' title='m_n\colon(\operator{Ext}^1(S,S))^{\otimes n}\to\operator{Ext}^2' alt='m_n\colon(\operator{Ext}^1(S,S))^{\otimes n}\to\operator{Ext}^2' align='middle' /><br />
are actually the duals of the maps<br />
<img src='/latexrender/pictures/cc38d5101249c4ad7c8d0d4e33064c3f.png' title='i_n\colon R_n\to A_1^{\otimes n}' alt='i_n\colon R_n\to A_1^{\otimes n}' align='middle' /><br />
embedding the relators of the original algebra into the tensor algebra over the generators.</p>
<p>So, for our case, we have the maps<br />
<img src='/latexrender/pictures/26f6658734956e1b8e750f1f7ea2a170.png' title='m_2(x,x)=x^2' alt='m_2(x,x)=x^2' align='middle' /><br />
<img src='/latexrender/pictures/fc36679e9c65b6838621350fdef48bb7.png' title='m_2(y,y)=y^2' alt='m_2(y,y)=y^2' align='middle' /><br />
<img src='/latexrender/pictures/259ae82c88d87f362f7562d66fe77db0.png' title='m_2(x,y,x,y)=z' alt='m_2(x,y,x,y)=z' align='middle' /><br />
<img src='/latexrender/pictures/d290d485737d8650310db4a97be54f8b.png' title='m_2(y,x,y,x)=z' alt='m_2(y,x,y,x)=z' align='middle' /><br />
and we look to dualizing them. Considering for a while what this all means, and fixing notation, with <i>a,b</i> the generators, dual to <i>x,y</i>, we end up with the maps<br />
<img src='/latexrender/pictures/2b97336707d04c46c1d27f3a4a0f3ad2.png' title='i_2((x^2)^*)=a^2' alt='i_2((x^2)^*)=a^2' align='middle' /><br />
<img src='/latexrender/pictures/2b108e50ec26bfa723eca83243aca8f8.png' title='i_2((y^2)^*)=b^2' alt='i_2((y^2)^*)=b^2' align='middle' /><br />
<img src='/latexrender/pictures/30ab9df941b58ff7b6e2372e7b732064.png' title='i_4(z^*)=abab+baba' alt='i_4(z^*)=abab+baba' align='middle' /><br />
from which we may recover a presentation of the group algebra as<br />
<img src='/latexrender/pictures/42248fab66abf0497ae9ac4816cec582.png' title='k\langle a,b\rangle/\langle a^2,b^2,abab+baba\rangle' alt='k\langle a,b\rangle/\langle a^2,b^2,abab+baba\rangle' align='middle' /></p>
<p>As such, this is an unqualified success. We recover our original group algebra presentation from the A<sub>&infin;</sub>-structure, and thus should be able to do similarily as a test for completion of future calculations as well. This, of course, needs to be proven before relied upon, but it lends credence to my hopes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/02/d8-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An A&#8734;-structure on the cohomology of D8</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/11/an-a-structure-on-the-cohomology-of-d8/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/11/an-a-structure-on-the-cohomology-of-d8/#comments</comments>
		<pubDate>Thu, 30 Nov 2006 13:28:30 +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>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2006/11/an-a-structure-on-the-cohomology-of-d8/</guid>
		<description><![CDATA[As a first unknown (kinda, sorta, it still falls under the category of path algebra quotients treated by Keller) A&#8734;-calculation, I shall find the A&#8734;-structure of . To do this, I fix the group algebra and the cohomology ring with , Furthermore, we pick a canonical nice resolution P, continuing the one I calculated previously. [...]]]></description>
			<content:encoded><![CDATA[<p>As a first unknown (kinda, sorta, it still falls under the category of path algebra quotients treated by Keller) A<sub>&infin;</sub>-calculation, I shall find the A<sub>&infin;</sub>-structure of <img src='/latexrender/pictures/52f97aea71ed1bcd5ca883a403b21a2e.png' title='H^*(D_8,\mathbb F_2)' alt='H^*(D_8,\mathbb F_2)' align='middle' />.</p>
<p>To do this, I fix the group algebra<br />
<img src='/latexrender/pictures/834a6cd4c60649a1f312fd5ab3c997ec.png' title='\Lambda=\mathbb F_2[a,b]/(a^2,b^2,abab+baba)' alt='\Lambda=\mathbb F_2[a,b]/(a^2,b^2,abab+baba)' align='middle' /><br />
and the cohomology ring<br />
<img src='/latexrender/pictures/9eaee72af9db094e5556de0215c57005.png' title='\Gamma=\mathbb F_2[x,y,z]/(xy)' alt='\Gamma=\mathbb F_2[x,y,z]/(xy)' align='middle' /><br />
with <img src='/latexrender/pictures/bc4d8acf9f83663042891d0b5d6788bb.png' title='x,y\in\Gamma_1' alt='x,y\in\Gamma_1' align='middle' />, <img src='/latexrender/pictures/756e4a774af4be5d4f8d32d34fce2f5d.png' title='z\in\Gamma_2' alt='z\in\Gamma_2' align='middle' /></p>
<p>Furthermore, we pick a canonical nice resolution P, continuing the one I <a href=http://blog.mikael.johanssons.org/archive/2006/06/more-group-cohomology/>calculated previously</a>. This has the i:th component &#923;<sup>i+1</sup>, and the differentials looking like<br />
<img src='/latexrender/pictures/a085d7aa19a4d1aad5372d5684bf6088.png' title='\begin{pmatrix}&#10;a&amp;0&amp;bab&amp;0&amp;0&amp;0\\&#10;0&amp;b&amp;0&amp;aba&amp;0&amp;0\\&#10;0&amp;0&amp;a&amp;0&amp;bab&amp;0\\&#10;0&amp;0&amp;0&amp;b&amp;0&amp;aba\\&#10;0&amp;0&amp;0&amp;0&amp;a&amp;b&#10;\end{pmatrix}' alt='\begin{pmatrix}&#10;a&amp;0&amp;bab&amp;0&amp;0&amp;0\\&#10;0&amp;b&amp;0&amp;aba&amp;0&amp;0\\&#10;0&amp;0&amp;a&amp;0&amp;bab&amp;0\\&#10;0&amp;0&amp;0&amp;b&amp;0&amp;aba\\&#10;0&amp;0&amp;0&amp;0&amp;a&amp;b&#10;\end{pmatrix}' align='middle' /><br />
for differentials starting in odd degree, and<br />
<img src='/latexrender/pictures/5cbc68fd9def0a44fe593a0736940fee.png' title='\begin{pmatrix}&#10;a&amp;0&amp;bab&amp;0&amp;0\\&#10;0&amp;b&amp;0&amp;aba&amp;0\\&#10;0&amp;0&amp;a&amp;0&amp;bab\\&#10;0&amp;0&amp;0&amp;b&amp;aba&#10;\end{pmatrix}' alt='\begin{pmatrix}&#10;a&amp;0&amp;bab&amp;0&amp;0\\&#10;0&amp;b&amp;0&amp;aba&amp;0\\&#10;0&amp;0&amp;a&amp;0&amp;bab\\&#10;0&amp;0&amp;0&amp;b&amp;aba&#10;\end{pmatrix}' align='middle' /><br />
for differentials starting in even degree. The first few you can see on the previous calculation, or if you don&#8217;t want to bother, they are<br />
<img src='/latexrender/pictures/08a01bbe6a0dc99f387c168e37c8f2c3.png' title='\partial_0=\begin{pmatrix}a&amp;b\end{pmatrix}' alt='\partial_0=\begin{pmatrix}a&amp;b\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/6dddc78ac337b6c3b7a09e6af4e70af9.png' title='\partial_1=\begin{pmatrix}a&amp;0&amp;bab\\0&amp;b&amp;aba\end{pmatrix}' alt='\partial_1=\begin{pmatrix}a&amp;0&amp;bab\\0&amp;b&amp;aba\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/045a8f2563f550014e1e4bad05c072da.png' title='\partial_2=\begin{pmatrix}a&amp;0&amp;bab&amp;0\\0&amp;b&amp;0&amp;aba\\0&amp;0&amp;a&amp;b\end{pmatrix}' alt='\partial_2=\begin{pmatrix}a&amp;0&amp;bab&amp;0\\0&amp;b&amp;0&amp;aba\\0&amp;0&amp;a&amp;b\end{pmatrix}' align='middle' /></p>
<p>Now, armed with this, we can get cracking. By lifting, we get canonical representating chain maps for x,y,z described, loosly, by the following:</p>
<p>x takes an element in <img src='/latexrender/pictures/c022f82bee9b5e009c2bf894602c84e8.png' title='\Lambda^{2k}' alt='\Lambda^{2k}' align='middle' />, keeps the first, third, et.c. elements and throws out the even ordered elements; so <img src='/latexrender/pictures/4d635e9a52644cfc39e62b06b81b0ca0.png' title='x\cdot(a_1,a_2,a_3,a_4,a_5,a_6)=(a_1,0,a_3,0,a_5)' alt='x\cdot(a_1,a_2,a_3,a_4,a_5,a_6)=(a_1,0,a_3,0,a_5)' align='middle' /><br />
For an element in <img src='/latexrender/pictures/0bb1eaf5eedc29d4e49a6c1f0d20c845.png' title='\Lambda^{2k+1}' alt='\Lambda^{2k+1}' align='middle' />, the last element gets extra treatment, so<br />
<img src='/latexrender/pictures/3257ccdc45dacdc287eb9e62e6575d5c.png' title='x\cdot(a_1,a_2,a_3,a_4,a_5,a_6,a_7)=(a_1,0,a_3,0,a_5,ab\cdot a_7)' alt='x\cdot(a_1,a_2,a_3,a_4,a_5,a_6,a_7)=(a_1,0,a_3,0,a_5,ab\cdot a_7)' align='middle' /><br />
For the lowest degrees, we also have<br />
<img src='/latexrender/pictures/f47aa853569dc9660fc474853598b5c6.png' title='x_0 = \begin{pmatrix}1&amp;0\end{pmatrix}' alt='x_0 = \begin{pmatrix}1&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/a992f2861ac7e4adcb1e003e68093c01.png' title='x_1 = \begin{pmatrix}1&amp;0&amp;0\\0&amp;0&amp;ab\end{pmatrix}' alt='x_1 = \begin{pmatrix}1&amp;0&amp;0\\0&amp;0&amp;ab\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/69e32fc2c9e500edd5442964163eb354.png' title='x_2 = \begin{pmatrix}1&amp;0&amp;0&amp;0\\0&amp;0&amp;1&amp;0\end{pmatrix}' alt='x_2 = \begin{pmatrix}1&amp;0&amp;0&amp;0\\0&amp;0&amp;1&amp;0\end{pmatrix}' align='middle' /></p>
<p>This describes the image <img src='/latexrender/pictures/ae06113ce0d044d277f917b8c6eef7bd.png' title='f_1(x)' alt='f_1(x)' align='middle' /> of our quasi-isomorphism <img src='/latexrender/pictures/fc883853f2cec9b5f06f5d284945df8c.png' title='\Gamma\to\Hom_\Lambda(P,P)' alt='\Gamma\to\Hom_\Lambda(P,P)' align='middle' />.</p>
<p>For <img src='/latexrender/pictures/a87af7c70233c96fa78dfcbf95491ccb.png' title='f_1(y)' alt='f_1(y)' align='middle' />, we get the interleaved effect: every second element, but now with even indices, and some extra treatments at the end. So an element in <img src='/latexrender/pictures/fedea18a7bdc9163bb5b379440531c2a.png' title='\Lambda^{2i}' alt='\Lambda^{2i}' align='middle' /> will behave like<br />
<img src='/latexrender/pictures/c8b7f143d8be82c6682aa4dcdfd6a367.png' title='y\cdot(a_1,a_2,a_3,a_4,a_5,a_6)=(0,a_2,0,a_4,a_6)' alt='y\cdot(a_1,a_2,a_3,a_4,a_5,a_6)=(0,a_2,0,a_4,a_6)' align='middle' /><br />
and for an element in <img src='/latexrender/pictures/3faa257007faefbf2f61d145ef22506f.png' title='\Lambda^{2i+1}' alt='\Lambda^{2i+1}' align='middle' /> we get<br />
<img src='/latexrender/pictures/3deaa6a12bd7409bad3aa20fb981e33a.png' title='y\cdot(a_1,a_2,a_3,a_4,a_5,a_6,a_7)=(0,a_2,0,a_4,ba\cdot a_7,a_6)' alt='y\cdot(a_1,a_2,a_3,a_4,a_5,a_6,a_7)=(0,a_2,0,a_4,ba\cdot a_7,a_6)' align='middle' /></p>
<p>The last generator, z, is rather boring. The corresponding chain map only lifts elements to other degrees: shaving off the first two components of whatever it is applied to.</p>
<p>We define <img src='/latexrender/pictures/c354bdd39692a0ba3f80f7c733f4e0eb.png' title='f_1' alt='f_1' align='middle' /> on products of the generators by simply composing the corresponding chain maps as long as the product is defined. The interesting stuff, from an A<sub>&infin;</sub> point of view occurs when the product vanishes, thus for x,y in the first line. A calculation shows us that xy is the only interesting element of the ideal <img src='/latexrender/pictures/7f147f1566b3770509be2c8463964377.png' title='(xy)' alt='(xy)' align='middle' />, since <img src='/latexrender/pictures/daac301e0e43aba2763336f992874f73.png' title='f_1(x)f_1(x)f_1(y)f_1(y)=0' alt='f_1(x)f_1(x)f_1(y)f_1(y)=0' align='middle' />, and we define <img src='/latexrender/pictures/adc54f5030d70234701f165ff16b437e.png' title='f_2(x^2,y)=f_1(x)f_2(x,y)' alt='f_2(x^2,y)=f_1(x)f_2(x,y)' align='middle' /> and <img src='/latexrender/pictures/84e7fc58bba457e7e2aa634dd5cd02ad.png' title='f_2(x,y^2)=f_2(x,y)f_1(y)' alt='f_2(x,y^2)=f_2(x,y)f_1(y)' align='middle' />.</p>
<p>Thus, we&#8217;d be curious as to what happens with xy, and yx. Both products are zero in the cohomology ring; but the composition of the corresponding chain maps are not zero.</p>
<p>By calculation, we get <img src='/latexrender/pictures/faa8b6773045a72c89c6df3014a7fb7f.png' title='f_1(x)f_1(y)' alt='f_1(x)f_1(y)' align='middle' /> given in the first few step by the matrices<br />
<img src='/latexrender/pictures/b08badb619222eeb896d8d13c089b16d.png' title='\begin{pmatrix}0&amp;0&amp;ba\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;ba\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/0a53b90bd4a199ee2cb391c3569f6382.png' title='\begin{pmatrix}0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;ab\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;ab\end{pmatrix}' align='middle' /><br />
and so on, with the lower right entry alternatingly ab and ba.</p>
<p><img src='/latexrender/pictures/b3d0577728510db69fae6fceee0eca51.png' title='f_1(y)f_1(x)' alt='f_1(y)f_1(x)' align='middle' /> is the same thing, but with ab and ba interchanged.</p>
<p>We want <img src='/latexrender/pictures/9e5952c67a60f3369f6936ff193243a2.png' title='f_2(x,y)' alt='f_2(x,y)' align='middle' /> and <img src='/latexrender/pictures/202e4198827579a0ea1e9a526c50cb12.png' title='f_2(y,x)' alt='f_2(y,x)' align='middle' /> to be homotopies between the 0 chain maps, and these two respectively. By juggling the relevant matrices in Magma for a while, I conclude that <img src='/latexrender/pictures/9e5952c67a60f3369f6936ff193243a2.png' title='f_2(x,y)' alt='f_2(x,y)' align='middle' /> has lower right entry a for all odd degree map components, and <img src='/latexrender/pictures/202e4198827579a0ea1e9a526c50cb12.png' title='f_2(y,x)' alt='f_2(y,x)' align='middle' /> has the entry above that b, same components. All even components vanish.</p>
<p>Thus, for the first nonzero component, we have<br />
<img src='/latexrender/pictures/e69f896420fc429ea0a55a2c8055486c.png' title='\begin{pmatrix}0&amp;0&amp;0\\0&amp;0&amp;a\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;0\\0&amp;0&amp;a\end{pmatrix}' align='middle' /><br />
for x,y and<br />
<img src='/latexrender/pictures/efbf0f8369fb8ca392b7b947a152a8c9.png' title='\begin{pmatrix}0&amp;0&amp;b\\0&amp;0&amp;0\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;b\\0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
for y,x.</p>
<p>Now, if we look at &#934;<sub>3</sub>, most of the possibilities vanish because of the way we defined f<sub>2</sub> for the non xy, yx cases. Thus, the only interesting entries remaining are xyx and yxy. These are, respectively,<br />
<img src='/latexrender/pictures/b9e877ea4d436c84bc80ad92e90d5136.png' title='\Phi_3(x,y,x)=f_1(x)f_2(y,x)+f_2(x,y)f_1(x)' alt='\Phi_3(x,y,x)=f_1(x)f_2(y,x)+f_2(x,y)f_1(x)' align='middle' /><br />
<img src='/latexrender/pictures/1450bc31012288a2d62eb0b96d3807e6.png' title='\Phi_3(y,x,y)=f_1(y)f_2(x,y)+f_2(y,x)f_1(y)' alt='\Phi_3(y,x,y)=f_1(y)f_2(x,y)+f_2(y,x)f_1(y)' align='middle' /><br />
and calculation of these expressions is a matter of composing the chain maps we have a tentative grasp of already. This gives us the case of xyx alternatingly between b in lower right corner for all even degrees and a just to the left of it for odd degrees, thus starting with the matrices<br />
<img src='/latexrender/pictures/ca7b13fe3ffadb41ed182bae1310e425.png' title='\begin{pmatrix}0&amp;0&amp;b\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;b\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/c1b083ff73782fce239fa7c0be16e27b.png' title='\begin{pmatrix}0&amp;0&amp;0\\0&amp;a&amp;0\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;0\\0&amp;a&amp;0\end{pmatrix}' align='middle' /><br />
and for the case yxy, we have a similar pattern, but with a in the lower right for odd degrees and b above it for even degrees, giving the first two maps as<br />
<img src='/latexrender/pictures/29e4924b8b3022e78f4bc43a56328e0e.png' title='\begin{pmatrix}0&amp;0&amp;a\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;a\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/efbf0f8369fb8ca392b7b947a152a8c9.png' title='\begin{pmatrix}0&amp;0&amp;b\\0&amp;0&amp;0\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;b\\0&amp;0&amp;0\end{pmatrix}' align='middle' /></p>
<p>So, we can immediately conclude that our m<sub>3</sub> is going to be the zero element of &#915;, since none of these chain maps are homotopic to any non-trivial coclass representatives. Thus we&#8217;ll need to find homotopies from these to the zero chain maps for our values of f<sub>3</sub>.</p>
<p>A homotopy suitable for f<sub>3</sub>(x,y,x) would be h with<br />
<img src='/latexrender/pictures/f81251338bf0cf418953877567077fec.png' title='h_0=\begin{pmatrix}0&amp;0\end{pmatrix}' alt='h_0=\begin{pmatrix}0&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/addca7f5f933e0dbeface4f3b0f47c9a.png' title='h_1=\begin{pmatrix}0&amp;0&amp;0\\0&amp;0&amp;1\end{pmatrix}' alt='h_1=\begin{pmatrix}0&amp;0&amp;0\\0&amp;0&amp;1\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/f64421965254f5048a9bf7a5959812a1.png' title='h_2=\begin{pmatrix}0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;1\\0&amp;0&amp;0&amp;0\end{pmatrix}' alt='h_2=\begin{pmatrix}0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;1\\0&amp;0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/4993a522aa39aa5d705167010e5e14ba.png' title='h_3=\begin{pmatrix}0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;1\end{pmatrix}' alt='h_3=\begin{pmatrix}0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;1\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/d14f84186f853ee5231ce3629d678b5b.png' title='h_4=\begin{pmatrix}0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;1&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;1\\0&amp;0&amp;0&amp;0&amp;0&amp;0\end{pmatrix}' alt='h_4=\begin{pmatrix}0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;1&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;1\\0&amp;0&amp;0&amp;0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
It goes on, but I have not yet discerned a pattern clear enough to describe a generic element of this chain map. I probably should, at some point.</p>
<p>For f<sub>3</sub>(y,x,y), we would need a homotopy for the other sequence, and calculations lead me to put down h with<br />
<img src='/latexrender/pictures/f81251338bf0cf418953877567077fec.png' title='h_0=\begin{pmatrix}0&amp;0\end{pmatrix}' alt='h_0=\begin{pmatrix}0&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/d9fd110a8a1dd25dbcba6fe8b3034ab4.png' title='h_1=\begin{pmatrix}0&amp;0&amp;1\\0&amp;0&amp;0\end{pmatrix}' alt='h_1=\begin{pmatrix}0&amp;0&amp;1\\0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/501a9c5145288338ea848ee7a1a0aaf4.png' title='h_2=\begin{pmatrix}0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0\end{pmatrix}' alt='h_2=\begin{pmatrix}0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/fce6e2aaee79f0d3f5a4595d187964b4.png' title='h_3=\begin{pmatrix}0&amp;0&amp;1&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;1\\0&amp;0&amp;0&amp;0&amp;0\end{pmatrix}' alt='h_3=\begin{pmatrix}0&amp;0&amp;1&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;1\\0&amp;0&amp;0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/f60df5420a717eb96f29abd6674d5d91.png' title='h_4=\begin{pmatrix}0&amp;0&amp;1&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\end{pmatrix}' alt='h_4=\begin{pmatrix}0&amp;0&amp;1&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\\0&amp;0&amp;0&amp;0&amp;0&amp;0\end{pmatrix}' align='middle' /><br />
and here we can discern a pattern to the matrices. They will have a sequence of 1 starting out at the third column, and going down skipping every second place.</p>
<p>Armed with these calculations, we may set out to calculate for our pleasure &#934;<sub>4</sub>. Due to the heuristic we use in defining the f<sub>i</sub> for things &#8220;lifted&#8221; from the generators we&#8217;ve defined above, we shall discard anything except for xyxy and yxyx from study; all other cases will just give the relations we use in calculating f<sub>2</sub> or f<sub>3</sub> from the cases we&#8217;ve calculated.</p>
<p>Thus, we&#8217;ll be interested in<br />
<img src='/latexrender/pictures/e72caf97cba09b440ea0ca65dd52e44c.png' title='\Phi_4(x,y,x,y)=f_1(x)f_3(y,x,y)+f_2(x,y)f_2(x,y)+f_3(x,y,x)f_1(y)' alt='\Phi_4(x,y,x,y)=f_1(x)f_3(y,x,y)+f_2(x,y)f_2(x,y)+f_3(x,y,x)f_1(y)' align='middle' /><br />
and<br />
<img src='/latexrender/pictures/5dcd8ac80c5a172715b0213014af13bb.png' title='\Phi_4(y,x,y,x)=f_1(y)f_3(x,y,x)+f_2(y,x)f_2(y,x)+f_3(y,x,y)f_1(x)' alt='\Phi_4(y,x,y,x)=f_1(y)f_3(x,y,x)+f_2(y,x)f_2(y,x)+f_3(y,x,y)f_1(x)' align='middle' /><br />
and thus we can, by using the already calculated matrices and a CAS (I use Magma right now) just calculate the matrices. In both these cases we get the same thing: the matrices<br />
<img src='/latexrender/pictures/8c34099d10e34ae1420c8f2e141294e8.png' title='\begin{pmatrix}0&amp;0&amp;1\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;1\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/b3bbc99859c69b96f891aef4c8f4000b.png' title='\begin{pmatrix}0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;1\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;1\end{pmatrix}' align='middle' /><br />
<img src='/latexrender/pictures/31d61619ea66e78ff514836fa02a4180.png' title='\begin{pmatrix}0&amp;0&amp;1&amp;0&amp;0\\0&amp;0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0&amp;1\end{pmatrix}' alt='\begin{pmatrix}0&amp;0&amp;1&amp;0&amp;0\\0&amp;0&amp;0&amp;1&amp;0\\0&amp;0&amp;0&amp;0&amp;1\end{pmatrix}' align='middle' /><br />
and so on; which are precisely the matrices we chose for our <img src='/latexrender/pictures/5c3bf1f5088ed1fa912aad34fc5940af.png' title='f_1(z)' alt='f_1(z)' align='middle' />.</p>
<p>Thus, we&#8217;ll set m<sub>4</sub>(x,y,x,y)=m<sub>4</sub>(y,x,y,x)=z and f<sub>4</sub>=0, and stop calculating right here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/11/an-a-structure-on-the-cohomology-of-d8/feed/</wfw:commentRss>
		<slash:comments>1</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>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>
	</channel>
</rss>

