<?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; Geometry</title>
	<atom:link href="http://blog.mikael.johanssons.org/archive/category/mathematics/geometry/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>1-manifolds and curves</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/05/1-manifolds-and-curves/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/05/1-manifolds-and-curves/#comments</comments>
		<pubDate>Sat, 02 May 2009 11:10:16 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=168</guid>
		<description><![CDATA[First off, I&#8217;d ask your pardon for the lull in postings &#8211; this spring has been insane. It has been very much fun &#8211; traveling the world, talking about my research and meeting people I only knew electronically &#8211; and also very intense. To break the lull, I thought I&#8217;d try to pick up what [...]]]></description>
			<content:encoded><![CDATA[<p>First off, I&#8217;d ask your pardon for the lull in postings &#8211; this spring has been insane. It has been very much fun &#8211; traveling the world, talking about my research and meeting people I only knew electronically &#8211; and also very intense.</p>
<p>To break the lull, I thought I&#8217;d try to pick up what I did last summer: parallel computing on clusters. It&#8217;s been a bit of <a href="http://vnoel.wordpress.com/2008/05/03/bye-matlab-hello-python-thanks-sage/">blog chatter</a> about <a href="http://www.sagemath.org">SAGE</a> and how SAGE suddenly has transformed from a Really Good Idea to something that starts to corner out most other systems in usability and flexibility. </p>
<p>Matlab? SciPy bundled with SAGE and the Python integration seems to be at least as good, if not better.<br />
Maple? Mathematica? Maxima? Singular? GAP? SAGE interfaces with all those that it doesn&#8217;t emulate.</p>
<p>And also, it allows you to install and interface with almost anything that has a Python module written. Specifically, a SAGE installation comes complete with OpenMPI and MPI4Py, allowing for multi-processor parallelity &#8211; either on an SMP machine, or on a cluster that runs some sort of MPI system. So, using the Python and <a href="http://mpi4py.scipy.org/">MPI4Py</a> that arrives with SAGE, it should be possible to start experimenting with parallel programming; and the rest of the SAGE integration should make it easy to start playing with, say, parallel algorithms for commutative or homological algebra.</p>
<p>But as a first step, I thought I&#8217;d do a &#8220;Hello world&#8221; for mathematics. Computing the <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot fractal</a>.</p>
<p>Now, a Mandelbrot fractal is reasonably easy to compute: we step through all pixels in our image, and we repeat the transformation <img src='/latexrender/pictures/a4f8194ac63d0fe70e3f3ef3d83e37a7.png' title='z_{n+1} = z_n^2+c' alt='z_{n+1} = z_n^2+c' align='middle' /> for c the complex plane point corresponding to the pixel, and <img src='/latexrender/pictures/788c918479548ce20fcd4df8f0be5e51.png' title='z_0=0' alt='z_0=0' align='middle' />. We see whether this iteration diverges within a limited amount of steps.</p>
<p>I&#8217;m going to, for benchmarking reasons, fix some parameters. I&#8217;ll have a 600&#215;600 picture, spanning the area [-2.5,1.5]x[-2.0,2.0] of <img src='/latexrender/pictures/6a187591d2e75f61bc4068b4527c69ba.png' title='\mathbb R^2 = \mathbb C' alt='\mathbb R^2 = \mathbb C' align='middle' />. I&#8217;ll allow 80 iterations, and after that, I want to see whether the square of the magnitude is larger than 4.0.</p>
<p>At the core of the iteration lies the function</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">def</span> step<span class="br0">&#40;</span>z,c<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> z**<span class="nu0">2</span>+c<br />
&nbsp;</div>
<p>and for a specific point <img src='/latexrender/pictures/12fab91887b10b4ccc945c3f03390f91.png' title='c=x+yi' alt='c=x+yi' align='middle' />, we can compute the number of iterations needed with the function</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">def</span> point<span class="br0">&#40;</span>c,n,d2<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; zo = <span class="nu0">0.0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; zn = zo<br />
&nbsp; &nbsp; &nbsp; &nbsp; i = <span class="nu0">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="kw2">abs</span><span class="br0">&#40;</span>zn<span class="br0">&#41;</span>**<span class="nu0">2</span> &lt; d2 <span class="kw1">and</span> i&lt;n:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zn = step<span class="br0">&#40;</span>zo,c<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zo = zn<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i = i<span class="nu0">+1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> i<br />
&nbsp;</div>
<p>Repeating this for each point in the span we look at, modified for the granularity our pixels force, and choosing a color for each iteration number, we&#8217;ll get the familiar Mandelbrot fractal. I choose to assign colors using the hue in the <a href="http://en.wikipedia.org/wiki/HSL_and_HSV">HSV color space</a>. This gives us rich, nice colors with a continuous and neat progression through them. So, given the number of iterations at a point, and the maximal number of iterations allowed, we compute the corresponding color by</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">def</span> colnorm<span class="br0">&#40;</span><span class="br0">&#40;</span>r,g,b<span class="br0">&#41;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><span class="kw2">int</span><span class="br0">&#40;</span><span class="nu0">255</span>*r<span class="br0">&#41;</span><span class="nu0">-1</span>,<span class="kw2">int</span><span class="br0">&#40;</span><span class="nu0">255</span>*g<span class="br0">&#41;</span><span class="nu0">-1</span>,<span class="kw2">int</span><span class="br0">&#40;</span><span class="nu0">255</span>*b<span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span></p>
<p><span class="kw1">def</span> col<span class="br0">&#40;</span>n,<span class="kw2">max</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> n == <span class="kw2">max</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> colnorm<span class="br0">&#40;</span><span class="kw3">colorsys</span>.<span class="me1">hsv_to_rgb</span><span class="br0">&#40;</span><span class="nu0">1.0</span>-<span class="kw2">float</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span>/<span class="kw2">max</span>,<span class="nu0">1.0</span>,<span class="nu0">1.0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp;</div>
<p>the function <code lang="python">colnorm</code> is in there to convert RGB triples with values in [0,1] to RGB triples with values in [0,255].</p>
<p>And from here it&#8217;s just a matter of interfacing with the right kind of image writing library &#8211; I chose the <a href="http://pythonware.com/products/pil/">PIL library</a> &#8211; and then go through all pixels, computing the color implied at each pixel, and placing it in the image.</p>
<p>Run like this, the benchmark fractal takes some 12 seconds on our workgroup&#8217;s workhorse, and 8 seconds on a single node of the Jena Beowulf cluster. </p>
<p>The resulting fractal is<br />
<img src="http://blog.mikael.johanssons.org/wp-content/mandel.png" alt="Mandelbrot fractal" /></p>
<p>As for parallelization, the Mandelbrot fractal is a typical example of what&#8217;s called an embarrassingly parallel problem: each pixel in an image is completely independent from all other pixels, and so we could just let one single processor loose on each pixel, and get things done a lot faster than if we&#8217;d work through the pixels one after the other.</p>
<p>So, to parallelize it, we&#8217;ll need some way of distributing the work among the processors, and some way of gathering the pieces up once we&#8217;re done. In <a href="http://mpi4py.scipy.org/">MPI4Py</a>, initialization and finalization of the MPI library is taken care of under the hood, in the import of the library and in the closing of the program.</p>
<p>My first idea was to use the builtin Scatter and Gather functions. The idea was something like the following:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">def</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp;comm = MPI.<span class="me1">COMM_WORLD</span><br />
&nbsp; &nbsp;rowids = <span class="kw2">range</span><span class="br0">&#40;</span>h<span class="br0">&#41;</span><br />
&nbsp; &nbsp;ids = comm.<span class="me1">Scatter</span><span class="br0">&#40;</span>rowids<span class="br0">&#41;</span><br />
&nbsp; &nbsp;pixs = compute_mandel<span class="br0">&#40;</span>ids<span class="br0">&#41;</span><br />
&nbsp; &nbsp;pixels = comm.<span class="me1">Gather</span><span class="br0">&#40;</span>pixs<span class="br0">&#41;</span><br />
&nbsp; &nbsp;img = generate_image<span class="br0">&#40;</span>pixels<span class="br0">&#41;</span><br />
&nbsp; &nbsp;img.<span class="me1">save</span><span class="br0">&#40;</span><span class="st0">&quot;filename.png&quot;</span><span class="br0">&#41;</span><br />
&nbsp;</div>
<p>but this fails already at the Scatter line. The thing is that you can&#8217;t just hand Scatter a list of things you want distributed, you&#8217;ll need to feed comm.Scatter with a list of lists, one for each recipient. This particular property of comm.Scatter is not actually described anywhere I could find on the web &#8211; the documentation for MPI4Py is minuscule at best, and this is specific to the Python interface setup, so the MPI standard documentation doesn&#8217;t give it away either.</p>
<p>The next problem that appears is that if we just divide the rows of the picture evenly &#8211; first processor gets rows 1,2,3,&#8230;,n; second gets n+1,&#8230;,2n and so on &#8211; then some processor will get the bulk of the actual Mandelbrot set &#8211; which is by definition the pixels that take the most iterations to compute &#8211; so the speedup by pouring more processing power on the problem won&#8217;t be as impressive as it could be. The processors that take care of regions outside the set will finish quickly and then just idle, and the processors that take care of most of the set will churn through as if they had computed the set alone.</p>
<p>There are very many ways to deal with this issue. The approach I&#8217;m taking is to use an interlacing pattern to distribute the rows. With n processors, each processor computes every n rows of the picture, thus getting easy and difficult rows reasonably evenly distributed. Also, with this easy a distribution scheme, there&#8217;s no reason to compute the rows centrally and distributing them with the MPI communication scheme.</p>
<p>Hence, the complete program ends up with the following source code:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">from</span> mpi4py <span class="kw1">import</span> MPI<br />
<span class="kw1">import</span> Image<br />
<span class="kw1">import</span> <span class="kw3">colorsys</span><br />
<span class="kw1">from</span> <span class="kw3">math</span> <span class="kw1">import</span> ceil</p>
<p>w = <span class="nu0">600</span><br />
h = <span class="nu0">600</span><br />
its = <span class="nu0">80</span><br />
d2 = <span class="nu0">4.0</span></p>
<p>xmax = <span class="nu0">1.5</span><br />
xmin = <span class="nu0">-2.5</span><br />
ymax = <span class="nu0">2.0</span><br />
ymin = <span class="nu0">-2.0</span></p>
<p><span class="kw1">def</span> step<span class="br0">&#40;</span>z,c<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> z**<span class="nu0">2</span>+c</p>
<p><span class="kw1">def</span> point<span class="br0">&#40;</span>c,n,d2<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; zo = <span class="nu0">0.0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; zn = zo<br />
&nbsp; &nbsp; &nbsp; &nbsp; i = <span class="nu0">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="kw2">abs</span><span class="br0">&#40;</span>zn<span class="br0">&#41;</span>**<span class="nu0">2</span> &lt; d2 <span class="kw1">and</span> i&lt;n:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zn = step<span class="br0">&#40;</span>zo,c<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zo = zn<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i = i<span class="nu0">+1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> i</p>
<p><span class="kw1">def</span> colnorm<span class="br0">&#40;</span><span class="br0">&#40;</span>r,g,b<span class="br0">&#41;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><span class="kw2">int</span><span class="br0">&#40;</span><span class="nu0">256</span>*r<span class="br0">&#41;</span><span class="nu0">-1</span>,<span class="kw2">int</span><span class="br0">&#40;</span><span class="nu0">256</span>*g<span class="br0">&#41;</span><span class="nu0">-1</span>,<span class="kw2">int</span><span class="br0">&#40;</span><span class="nu0">256</span>*b<span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span></p>
<p><span class="kw1">def</span> col<span class="br0">&#40;</span>n,<span class="kw2">max</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> n == <span class="kw2">max</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> colnorm<span class="br0">&#40;</span><span class="kw3">colorsys</span>.<span class="me1">hsv_to_rgb</span><span class="br0">&#40;</span><span class="nu0">1.0</span>-<span class="kw2">float</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span>/<span class="kw2">max</span>,<span class="nu0">1.0</span>,<span class="nu0">1.0</span><span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p><span class="kw1">def</span> row<span class="br0">&#40;</span>n,xmin,xmax,ymin,ymax<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; row = <span class="br0">&#91;</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> x <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span>w<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p = <span class="kw2">complex</span><span class="br0">&#40;</span><span class="br0">&#40;</span>xmin+x*<span class="br0">&#40;</span>xmax-xmin<span class="br0">&#41;</span>/w<span class="br0">&#41;</span>,<span class="br0">&#40;</span>ymin+n*<span class="br0">&#40;</span>ymax-ymin<span class="br0">&#41;</span>/h<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; row.<span class="me1">append</span><span class="br0">&#40;</span>point<span class="br0">&#40;</span>p,its,d2<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> row</p>
<p><span class="kw1">def</span> <span class="kw3">__main__</span><span class="br0">&#40;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; comm = MPI.<span class="me1">COMM_WORLD</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; rows = <span class="br0">&#91;</span> MPI.<span class="me1">rank</span> + MPI.<span class="me1">size*i</span> <span class="kw1">for</span> i <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span><span class="kw2">int</span><span class="br0">&#40;</span><span class="kw2">float</span><span class="br0">&#40;</span>h<span class="br0">&#41;</span>/MPI.<span class="me1">size</span><span class="br0">&#41;</span><span class="nu0">+1</span><span class="br0">&#41;</span> <span class="kw1">if</span> MPI.<span class="me1">rank</span> + MPI.<span class="me1">size*i</span> &lt; h <span class="br0">&#93;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; pixels = <span class="br0">&#91;</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> y <span class="kw1">in</span> rows:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pixels.<span class="me1">append</span><span class="br0">&#40;</span>row<span class="br0">&#40;</span>y,xmin,xmax,ymin,ymax<span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; mandel = comm.<span class="me1">Gather</span><span class="br0">&#40;</span>pixels<span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> MPI.<span class="me1">rank</span> == <span class="nu0">0</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img = Image.<span class="kw3">new</span><span class="br0">&#40;</span><span class="st0">&quot;RGB&quot;</span>,<span class="br0">&#40;</span>w,h<span class="br0">&#41;</span>,<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rows = <span class="br0">&#91;</span><span class="br0">&#93;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> i <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span><span class="kw2">len</span><span class="br0">&#40;</span>mandel<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> j <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span><span class="kw2">len</span><span class="br0">&#40;</span>mandel<span class="br0">&#41;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; r = mandel<span class="br0">&#91;</span>j<span class="br0">&#93;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rows.<span class="me1">append</span><span class="br0">&#40;</span><span class="br0">&#91;</span>col<span class="br0">&#40;</span>p,its<span class="br0">&#41;</span> <span class="kw1">for</span> p <span class="kw1">in</span> r<span class="br0">&#93;</span><span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> x <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span>w<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> y <span class="kw1">in</span> <span class="kw2">range</span><span class="br0">&#40;</span>h<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; r = rows<span class="br0">&#91;</span>y<span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c = r<span class="br0">&#91;</span>x<span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img.<span class="me1">putpixel</span><span class="br0">&#40;</span><span class="br0">&#40;</span>x,y<span class="br0">&#41;</span>,c<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img.<span class="me1">save</span><span class="br0">&#40;</span><span class="st0">&quot;/home/mik/public_html/mandel.png&quot;</span><span class="br0">&#41;</span></p>
<p><span class="kw3">__main__</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp;</div>
<p>We can run this program on a single-processor machine by issuing</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="re1">$SAGE_ROOT</span>/<span class="kw3">local</span>/bin/mpirun -np <span class="nu0">1</span> <span class="re1">$SAGE_ROOT</span>/<span class="kw3">local</span>/bin/python mandel.py<br />
&nbsp;</div>
<p>and on a multiprocessor machine by replacing <code>-np 1</code> with the number of processors we&#8217;d want to utilize.</p>
<p>On the quad kernel workhorse my workgroup uses, which currently has two processors fully utilized by group cohomology computations, I get the following results (approximates):</p>
<table>
<tr>
<th># proc</th>
<th>mean walltime</th>
<th>std.dev</th>
</tr>
<tr>
<td>1</td>
<td>12s</td>
<td>0.7</td>
</tr>
<tr>
<td>2</td>
<td>9s</td>
<td>0.7</td>
</tr>
<tr>
<td>3</td>
<td>11s</td>
<td>2</td>
</tr>
</table>
<p>So &#8211; once I used up the free processors, the wall time shoots up, and the spread shoots up. So working on a utilized SMP machine might not be the way to go.</p>
<p>But I do have access to the Jena Beowulf cluster, since the lecture course I audited on cluster computing. And I&#8217;m getting much better results there. Over there, I run jobs by writing a job script</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="re3">#$ -j y</span><br />
<span class="re3">#$-l <span class="re2">hostshare=</span><span class="nu0">1.0</span></span><br />
<span class="re3">#$-q fast.q</span></p>
<p>mpiexec python mandel.py<br />
&nbsp;</div>
<p>and submit it to the job scheduler, to work on &#8211; say &#8211; 3 processors with </p>
<div class="dean_ch" style="white-space: wrap;">
qsub -pe lam7 <span class="nu0">3</span> mandel.job<br />
&nbsp;</div>
<p>I added commands to time the computation part &#8211; stripping out the book-keeping and image writing once the fractal is computed, and thus can get timings for the parallel computation.</p>
<p>As a result, I get the following:</p>
<table>
<tr>
<th># proc</th>
<th>mean walltime</th>
<th>std.dev</th>
</tr>
<tr>
<td>1</td>
<td>8.33</td>
<td>-</td>
</tr>
<tr>
<td>2</td>
<td>4.34</td>
<td>0.020</td>
</tr>
<tr>
<td>3</td>
<td>2.96</td>
<td>0.033</td>
</tr>
<tr>
<td>4</td>
<td>2.32</td>
<td>0.031</td>
</tr>
<tr>
<td>5</td>
<td>2.00</td>
<td>0.060</td>
</tr>
<tr>
<td>6</td>
<td>1.54</td>
<td>0.019</td>
</tr>
<tr>
<td>7</td>
<td>1.29</td>
<td>0.040</td>
</tr>
<tr>
<td>8</td>
<td>1.22</td>
<td>0.028</td>
</tr>
<tr>
<td>9</td>
<td>1.04</td>
<td>0.017</td>
</tr>
<tr>
<td>10</td>
<td>1.00</td>
<td>0.030</td>
</tr>
</table>
<p><img src="http://chart.apis.google.com/chart?chs=250x100&amp;cht=lc&amp;chd=t:83.3,43.3,29.5,23.2,20.0,15.4,12.9,12.2,10.4,10.0"><br />
Walltimes</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/05/parallell-and-cluster-mpi4py/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Introduction to Algebraic Geometry (3 in a series)</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/03/introduction-to-algebraic-geometry-3-in-a-series/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/03/introduction-to-algebraic-geometry-3-in-a-series/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 14:37:58 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2008/02/my-topology-students-move-into-knot-theory/</guid>
		<description><![CDATA[So, here&#8217;s the plan for my 10th grade topology students. Today, we&#8217;ll abandon algebraic topology completely, and instead go into knot theory. I&#8217;ll want to discuss what we mean by a knot (embedding of in ), what we mean by a knot deformation (thus introducing isotopies while we&#8217;re at it) and the Reidemeister moves. Also [...]]]></description>
			<content:encoded><![CDATA[<p>So, here&#8217;s the plan for my 10th grade topology students.</p>
<p>Today, we&#8217;ll abandon algebraic topology completely, and instead go into knot theory. I&#8217;ll want to discuss what we mean by a knot (embedding of <img src='/latexrender/pictures/679c4c927f816045befe573024ddd21b.png' title='S^1' alt='S^1' align='middle' /> in <img src='/latexrender/pictures/903faf99a14b55b7ad3d1020786c49a8.png' title='S^3' alt='S^3' align='middle' />), what we mean by a knot deformation (thus introducing isotopies while we&#8217;re at it) and the Reidemeister moves. Also we&#8217;ll discuss knot invariants &#8211; and their use analogous to topological invariants.</p>
<p>Later on, we&#8217;ll continue with other invariants; definitely including the Jones polynomial, and possibly even covering Khovanov homology. One possible end report would be to explain a bunch of knot invariants and show using examples how these have different coarseness.</p>
<p><i>Edited to add:</i> I got myself some damn smart students. They figured out the Reidemeister moves on their own &#8211; as well as minimal crossing number in a projection being highly relevant &#8211; with basically no prompting from me. I&#8217;m impressed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2008/02/my-topology-students-move-into-knot-theory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Algebraic surface toys!</title>
		<link>http://blog.mikael.johanssons.org/archive/2008/01/algebraic-surface-toys/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2008/01/algebraic-surface-toys/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 16:58:27 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Jahr der Mathematik]]></category>

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

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/11/high-school-topology-restarting/</guid>
		<description><![CDATA[Today, I told my two bright students about abstract and geometric simplicial complexes, about the boundary map and the chain complex over a ring R associated with a simplicial complex &#916;, and assigned them reading out of Hatcher&#8217;s Algebraic Topology. The next couple of weeks will be spent doing homology of simplicial complexes, singular homology, [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I told my two bright students about abstract and geometric simplicial complexes, about the boundary map and the chain complex over a ring R associated with a simplicial complex &Delta;, and assigned them reading out of Hatcher&#8217;s Algebraic Topology. </p>
<p>The next couple of weeks will be spent doing homology of simplicial complexes, singular homology, equivalence of the two, neat things you can do with them; and then we&#8217;ll start moving towards a Borsuk-Ulam-y topological combinatorics direction.</p>
<p>I might end up pulling combinatorics papers from my old &#8220;gang&#8221; in Stockholm on graph complexes, and graph property complexes, and poke around those with them. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/11/high-school-topology-restarting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The why and the what of homological algebra</title>
		<link>http://blog.mikael.johanssons.org/archive/2007/07/the-why-and-the-what-of-homological-algebra/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2007/07/the-why-and-the-what-of-homological-algebra/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 18:35:52 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Algebraic geometry]]></category>
		<category><![CDATA[Differential geometry]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Modular Representation Theory]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2007/07/the-why-and-the-what-of-homological-algebra/</guid>
		<description><![CDATA[I seem to have become the Goto-guy in this corner of the blogosphere for homological algebra. Our beloved Dr. Mathochist just gave me the task of taking care of any readers prematurely interested in it while telling us all just a tad too little for satisfaction about Khovanov homology. And I received a letter from [...]]]></description>
			<content:encoded><![CDATA[<p>I seem to have become the Goto-guy in this corner of the blogosphere for homological algebra. </p>
<p>Our beloved <a href=http://unapologetic.wordpress.com>Dr. Mathochist</a> just <a href=http://unapologetic.wordpress.com/2007/07/11/what-is-knot-homology/>gave me</a> the task of taking care of any readers prematurely interested in it while telling us all just a tad too little for satisfaction about Khovanov homology.</p>
<p>And I received a letter from the Haskellite crowd &#8211; more specifically from <a href=http://www.alpheccar.org>alpheccar</a>, who keeps on reading me writing about homological algebra, but doesn&#8217;t know where to begin with it, or why.</p>
<p>I <a href="http://blog.mikael.johanssons.org/archive/2006/01/introduction-to-algebraic-topology-and-related-topics-i/">have already</a> a <a href="http://blog.mikael.johanssons.org/archive/2006/02/monads-algebraic-topology-in-computation-and-john-baez/">few times</a> written about homological algebra, algebraic topology and <a href="http://blog.mikael.johanssons.org/archive/2006/05/my-first-group-cohomology-did-i-screw-up/">what it</a> <a href="http://blog.mikael.johanssons.org/archive/2006/11/a-for-the-layman/">is I do</a>, <a href="http://blog.mikael.johanssons.org/archive/2006/07/carry-bits-and-group-cohomology/">on various</a> <a href="http://blog.mikael.johanssons.org/archive/2006/07/triangulated-categories/">levels of difficulty</a>, but I guess &#8211; especially with <a href="http://carnivalofmathematics.wordpress.com">the carnival</a> dry-out I&#8217;ve been having &#8211; that it never hurts writing more about it, and even trying to get it so that the non-converts understand what&#8217;s so great about it.</p>
<p>So here goes.</p>
<p>Alpheccar writes that to his understanding, the idea is to build topological spaces out of algebraic gadgets, and then do topology on them. This is a part of the story, and certainly historically very important, but it is far from all of it.</p>
<h1>Motivations</h1>
<p>The revolution for homological algebra pretty much started with Eilenberg-MacLane &#8211; who wrote an <overline>article</overline>book that did the constructions necessary for the very topological versions of homological algebra &#8211; but without ever involving the actual topological spaces.</p>
<p>The point is that the way you do algebraic topology is that you tend to set up a functor Top &rarr; R-ChMod that assigns a chain complex of R-modules to each (nice enough) topological space, and then you add functors R-ChMod &rarr; R-Mod that extract informations from these. Typical examples are cellular chain complexes with coefficients somewhere nice for the first functor, and then homology or cohomology for the second functor &#8211; depending on what viewpoint is the most obvious.</p>
<p>The revolution was that we simply throw out that first functor. </p>
<p>In order to study (co)homology, we don&#8217;t really need to care that there was a topological space somewhere to begin with. We only, really, need a nice enough category of chain complexes (if it&#8217;s abelian, then that&#8217;s fine &#8211; we get the long exact sequences in homology and other niftiness easily then, but if it&#8217;s not, triangulated will do&#8230;) and we study certain types of functors from these to module categories.</p>
<h2>Homological algebra as a tool for algebraic topology</h2>
<p>Since, in the viewpoint introduced above, homological algebra is a part of the process used in algebraic topology, it turns out to be really neat to sit down and just prove a lot of neat results in homological algebra &#8211; with the background that at some later point, these might be useful once you sit down with the topology. I got hold of this particular point early &#8211; I had started my MSc thesis work in homological algebra before I took my first real topology course, and during that course, the less pointset topology and the more algebraic topology we did, the easier everything got. The fundamental results we needed to grasp to do algebraic topology in any amount of seriosity were basically just applications of all the cornerstone results in homological algebra, and thus perfectly obvious to my clique of arrogant undergrads.</p>
<p>This particular piece goes far. Why don&#8217;t we need to worry about whether we&#8217;re doing homology or cohomology? Answer: since Ext and Tor are dual in certain specific ways, which ends up meaning that although internal algebraic structures might be finicky, the module structure is very neat, and in k-Mod = Vect<sub>k</sub>, we end up with no worries anywhere.</p>
<h2>Testing grounds</h2>
<p>The viewpoint of homological algebra as a tool for algebraic topology goes pretty deep. When I ask my advisor what to put in texts where I motivate why our field is important, in the standard answer he gives me the following pops up:</p>
<blockquote><p>
Group cohomology is important, since it is a field where topological methods can be tested reasonably safely, since we have the group theoretic attack vectors in addition to the purely topological.
</p></blockquote>
<p>On the other hand, group cohomology also turns out to be important, since we get important information for the study of groups out of the homological algebra side of things.</p>
<h2>Low order Ext</h2>
<p>The area where this is most notable is in representation theory. This field comes in several flavours: group representations, where we study kG-Mod for some (sometimes finite) group G; Lie algebra representations, where we study g-Mod for some Lie algebra g; quiver representations, where we study kQ-Mod for some (finite) quiver algebra kQ &#8211; and so on. One question that tends to crop up here, and with a high degree of importance for the non-homological algebraists around me &#8211; is what happens if we know only parts of our group? Can we say something about the entire group based on that?</p>
<p>It turns out that we can. There are very neat correspondences between the lower order Ext groups over kG and the behaviour of G itself. I&#8217;m going to stick to group representations here, since that&#8217;s the area I know best &#8211; however, this is something that pops up analogously all over the place.</p>
<h3>Extensions</h3>
<p>Suppose you have some R-module K that you know embeds, in some specific way, into some larger R-module M. And suppose you find the quotient L=M/K in some manner. What could, then, M be? One obvious answer is <img src='/latexrender/pictures/fd114e6a3f85e9e6ef16868df610e399.png' title='G=K\oplus L' alt='G=K\oplus L' align='middle' />, but is this enough? This ends up depending on Ext<sup>1</sup><sub>R</sub>(L,K), with each element of this particular Ext group indexing precisely one such extension. </p>
<p>This is at the core of Maschke&#8217;s theorem, by the way, which says that if the characteristic of the field k doesn&#8217;t divide the group order |G|, then by a specific construction, the <b>only</b> extensions possible for <b>any</b> kG-modules are the split extension &#8211; the one where we just take the direct sum.</p>
<p>This all leads to a wealth of useful information and ideas in representation theory. For instance, there is a way to describe modules proposed by Dave Benson and some co-authors, where you draw diagrams with each vertex being a simple module, occupying that spot in a composition series, and the edges being taken from the relevant Ext<sup>1</sup>.</p>
<h3> Invariants and coinvariants</h3>
<p>Suppose you have a group acting on a vector space. This can be taken extremely physical &#8211; quantum mechanics is all about this kind of situation, or so I&#8217;ve heard. Then it might be interesting to figure out the invariant subspace: {a|ga=a for all g in G}. This is Ext<sup>0</sup>. Or we might want a basis for the complement: representatives for every way that things can move. This is the coinvariant vector space, defined as A/(ga-a), and this is just Tor<sup>0</sup>.</p>
<h3>Simples, projectives and the stable module category</h3>
<p>Simple modules are nice. They don&#8217;t have invariant subspaces. In the best of all worlds &#8211; which is when Maschke holds &#8211; simple modules are precisely the irreducible modules. However, when Maschke doesn&#8217;t hold, we can have non-trivial Ext<sup>1</sup>, and thus we can build larger modules out of simples by a kind of gluing: they aren&#8217;t just a nice direct sum of simples, but something ickier.</p>
<p>Thus, unless Maschke holds, there will be weird things happening in the module category.</p>
<p>These weird things, though, are controllable. To be specific, we can consider the smallest possible irreducible modules. These will end up being building blocks, and for nice enough worlds, these will also end up corresponding closely to the simples &#8211; in the way that we can allocate a simple to an irreducible projective in a bijective manner.</p>
<p>So &#8230; what <i>is</i> this projective I keep throwing around? Take a free module. This is a direct sum of a finite number of copies of the ring R. This will have direct summands. By picking apart all summands into further direct summands, at some point we hit bottom: we cannot pick anything apart any longer. This is, by the theorem of Krull-Schmidt, a well-defined state of being. We can permute things, but in essence, a module is just its decomposition into irreducibles.</p>
<p>So, anything that is a direct sum of a free module is a projective. We can lose projectivity by taking quotients &#8211; so if we add relations, we may well get lost. But as long as we just look for direct summands, we&#8217;re pretty much home free. Now, the irreducible projectives have to be summands of the ring R itself, so they end up actually being (left) ideals in the ring. And each of them corresponds intimately to a simple module.</p>
<p>One trick that&#8217;s very beloved among the people who worry about these things is to get rid of anything projective, and look at the stable module category. In this, we just quotient away anything projective &#8211; morphism sets are taken modulo morphisms that factor through a projective&#8230; This way, we only have the &#8220;essential&#8221;, or as it is known to the experts of the field &#8220;difficult&#8221; information left. Then Ext<sup>n</sup>(M,N)=Hom(&Omega;<sup>n</sup>M,N), where &Omega;<sup>n</sup> is the nth syzygy &#8211; see below for more on this.</p>
<p>So, homological algebra lets us understand the stable module category, which in turn lets us understand the parts that are essential to the module category structure.</p>
<h3>Resolutions</h3>
<p>I just promised you I&#8217;d tell you about syzygies. First off, some personal information &#8211; because readers always love that!</p>
<p>If you find me on IRC, on EFNet or on Freenode, you&#8217;ll find me under the nick Syzygy-. The &#8211; is there because there is someone who&#8217;s been using Syzygy for years and years on EFNet and because I&#8217;m not deliberately trying to be a bastard if I can help it. The rest of the nick is there to a certain extent because I like the way I write it in longhand.</p>
<p>And to a certain extent because it is an epitome of why homological algebra is interesting in my eyes.</p>
<p>Suppose we are interested in a finitely presented module, which we might be for many reasons, including being interested in algebraic geometry and in solving systems of polynomial equations. We might then just figure out what relations hold within a set of generators, which gives us a generating set, and some relation set.</p>
<p>These, relations, though are far from guaranteed to be the whole story. It&#8217;s probable that there are non-trivial relations between the relations. What do we do? We figure out what these are. They span the first <b>syzygy</b> module of the module we started with, denoted by &Omega;M. But this is unlikely to be free, so we can keep on going.</p>
<p>This way, we get a sequence of modules, all of which are free &#8211; since we just choose a generating set in each step &#8211; and with maps between them adding all the extra relations. But this is nothing other than a free resolution of the starting module. And here comes the candy that hooked me for this discipline: studying modules over their resolutions is the same thing as studying what chain complexes are, deep down, which in turn is the same thing as studying homological algebra.</p>
<p>Want to figure out what a module map means for the family of syzygies? What you really want is a chain map in the chain complex category. But some of these maps &#8211; or even portions of maps &#8211; will not carry relevant information. So we factor those away, and we get a slightly weirder category. But here, equality doesn&#8217;t quite mean what it should, so we add in more equality relations. And suddenly, we live in a derived category &#8211; and in here, the Hom sets are Ext groups, and the tensor products are Tor groups.</p>
<h2>Number theory, geometry, and computation!</h2>
<p>To continue this tour de force, consider the theorems in vector calculus relating various triple and double integrals. (note &#8211; I never dealt with this. I rode on technicalities to root out calculus from my curriculum so it would fit more algebra&#8230;.) These theorems, in the end, only state that <img src='/latexrender/pictures/55848c4b2b9c6041b11c02125da13392.png' title='\partial^2=0' alt='\partial^2=0' align='middle' />, which is at the core of what homological algebra is all about.</p>
<p>If we formalize this particular recognition a bit, and tug at the corners, we end up with de Rham cohomology, which deals with what you can do with differential forms on manifolds (layman speak: things you can integrate. The f(x)dx after the integral sign is a typical differential form) &#8211; and this is one of the many many places where cohomology rather than homology ends up being the &#8220;right&#8221; way to view things just because you started out as a geometer instead of .. well .. topologist or algebraist.</p>
<p>The same kind of thing happens in algebraic geometry as well. You start out happily with your varieties, you conclude that as soon as things get interesting, the nice and pretty concepts of coordinate rings don&#8217;t hold up, and you&#8217;re forced to go to coordinate sheaves. And then you try to figure out what you can do with sheaves of functions on a variety &#8211; and before you know it, you reconstructed sheaf cohomology. This, by the way, a quick look at wikipedia told me, lets you define euler characteristics for varieties in a way consistent with the classical uses of it.</p>
<p>I am no geometer, and I&#8217;m not the person to tell you about the intricacies of these things. If you understand them, though, I&#8217;d love to figure them out at some point.</p>
<p>The discussion of Khovanov homology is a slightly (though not very) similar thing to this. Again, I have no real idea, and am treading on thin ice here.</p>
<p>So, alpheccar. Is this what you asked for? Please tell me what more you want covered, and I&#8217;ll write up some more! This was fun writing!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2007/07/the-why-and-the-what-of-homological-algebra/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Reading Merkulov: Differential geometry for an algebraist (4 in a series)</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/04/reading-merkulov-differential-geometry-for-an-algebraist-4-in-a-series/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/04/reading-merkulov-differential-geometry-for-an-algebraist-4-in-a-series/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 13:52:36 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Differential geometry]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archives/2006/03/04/reading-merkulov-differential-geometry-for-an-algebraist-4-in-a-series/</guid>
		<description><![CDATA[Suppose we have a presheaf of abelian groups over and pick a point . On the collection of all abelian groups defined over some neighbourhood of (disjoint union) we put an equivalence relation which identifies and precisely if there is some open in the intersection where and coincide. (or more precisely, their restrictions coincide). The [...]]]></description>
			<content:encoded><![CDATA[<p>Suppose we have a presheaf <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' /> of abelian groups over <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /> and pick a point <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' />. On the collection of all abelian groups defined over some neighbourhood of <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> (disjoint union) we put an equivalence relation which identifies <img src='/latexrender/pictures/429bb87af31e658cfde4376cb84d8738.png' title='f\in\mathcal F(U)' alt='f\in\mathcal F(U)' align='middle' /> and <img src='/latexrender/pictures/5609c3a037415209db738ace5df1a11e.png' title='g\in\mathcal F(V)' alt='g\in\mathcal F(V)' align='middle' /> precisely if there is some open <img src='/latexrender/pictures/61e9c06ea9a85a5088a499df6458d276.png' title='W' alt='W' align='middle' /> in the intersection where <img src='/latexrender/pictures/8fa14cdd754f91cc6554c9e71929cce7.png' title='f' alt='f' align='middle' /> and <img src='/latexrender/pictures/b2f5ff47436671b6e533d8dc3614845d.png' title='g' alt='g' align='middle' /> coincide. (or more precisely, their restrictions coincide). The set of equivalence classes turns out to be an Abelian group <img src='/latexrender/pictures/195e20e928117fb4470a39124f803bd3.png' title='\mathcal F_x' alt='\mathcal F_x' align='middle' /> called the <em>stalk</em> of the presheaf <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' /> at <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' />.</p>
<p>So, with more fluff introduced, the stalk is all the elements in the presheaf that are defined above any neighbourhood of the point, and counted as the same if they seem to be.</p>
<p>For an open set <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' /> and a point <img src='/latexrender/pictures/e127194a104c7d88221cef819a274646.png' title='x\in U' alt='x\in U' align='middle' /> there is a canonical group morphism <img src='/latexrender/pictures/6b5fda430270a7f01fb282ff92d496f5.png' title='\rho_x:\mathcal F(U)\to\mathcal F_x' alt='\rho_x:\mathcal F(U)\to\mathcal F_x' align='middle' /> which sends an element <img src='/latexrender/pictures/429bb87af31e658cfde4376cb84d8738.png' title='f\in\mathcal F(U)' alt='f\in\mathcal F(U)' align='middle' /> to its equivalence class. This image is the germ of <img src='/latexrender/pictures/8fa14cdd754f91cc6554c9e71929cce7.png' title='f' alt='f' align='middle' /> at <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' />.</p>
<h3>Example</h3>
<p>Let <img src='/latexrender/pictures/937b40df977dc999f3a7643ed8d928ae.png' title='\mathcal O' alt='\mathcal O' align='middle' /> be the presheaf of holomorphic function on <img src='/latexrender/pictures/b36eac3d201a1a25dda928990a79d751.png' title='\mathbb C' alt='\mathbb C' align='middle' />. Then <img src='/latexrender/pictures/c8b93e9ae61f73e9213e84f72bc76ab6.png' title='\mathcal O_{z_0}' alt='\mathcal O_{z_0}' align='middle' /> is precisely the set of all convergent power series of the form <img src='/latexrender/pictures/05c255504d76cad10f80f9ee3814c575.png' title='\sum_{n=0}^\infty c_n(z-z_0)^n' alt='\sum_{n=0}^\infty c_n(z-z_0)^n' align='middle' /> for complex <img src='/latexrender/pictures/6f58730f154756d9dc7efb13fc938933.png' title='c_n' alt='c_n' align='middle' />. The germ of some <img src='/latexrender/pictures/8fa14cdd754f91cc6554c9e71929cce7.png' title='f' alt='f' align='middle' /> defined on a neighbourhood of <img src='/latexrender/pictures/f82c0544b80586d86d1b04463ed6d686.png' title='z_0' alt='z_0' align='middle' /> is precisely the Taylor series around that point. </p>
<h3>Example</h3>
<p>Take <img src='/latexrender/pictures/aad446a8d8da5fce92d662dcd1952666.png' title='\mathbb Z' alt='\mathbb Z' align='middle' /> the constant presheaf where over each open set, the additive group of all integers hovers. Then we have for the construction of the stalk a disjoint union of copies of <img src='/latexrender/pictures/aad446a8d8da5fce92d662dcd1952666.png' title='\mathbb Z' alt='\mathbb Z' align='middle' /> indiced by all the neighbourhoods of the point. Since all the neighbourhoods contain <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> they all have a non-empty intersection, on which elements agree if they have the same value. So <img src='/latexrender/pictures/eeb72a4c9e1c46ba7bc54736c72c24a0.png' title='\mathcal F_x=\mathbb Z' alt='\mathcal F_x=\mathbb Z' align='middle' /> for any point <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' />. The germ of <img src='/latexrender/pictures/39eeceb26593ddb459fc908c96515e3b.png' title='i\in\mathbb Z=\mathcal F(U)' alt='i\in\mathbb Z=\mathcal F(U)' align='middle' /> at <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> is <img src='/latexrender/pictures/d40e1800aa7d1ab686913f7c71f3e3c6.png' title='i\in\mathbb Z=\mathcal F_x' alt='i\in\mathbb Z=\mathcal F_x' align='middle' />.</p>
<p>We define exact sequences by looking at the induced maps of the stalks. A sequence of sheave morphisms is exact if for every point on the underlying space, the corresponding induced stalk map sequences are exact.</p>
<h3>Example</h3>
<p>We can construct a morphism of sheaves of abelian groups from <img src='/latexrender/pictures/b36eac3d201a1a25dda928990a79d751.png' title='\mathbb C' alt='\mathbb C' align='middle' /> to <img src='/latexrender/pictures/937b40df977dc999f3a7643ed8d928ae.png' title='\mathcal O' alt='\mathcal O' align='middle' /> by sending <img src='/latexrender/pictures/cc602cf7cf33aef9431cec2c3a004f45.png' title='c\in\mathbb C(U)' alt='c\in\mathbb C(U)' align='middle' /> to the function <img src='/latexrender/pictures/d4ae36bf93a48323a84ddb6aec4720f0.png' title='f(z)=c' alt='f(z)=c' align='middle' /> in <img src='/latexrender/pictures/2fe301811e38e3060f583d326bdaf178.png' title='\mathcal O(U)' alt='\mathcal O(U)' align='middle' />. For some point <img src='/latexrender/pictures/f82c0544b80586d86d1b04463ed6d686.png' title='z_0' alt='z_0' align='middle' />, this induces a stalk map that takes <img src='/latexrender/pictures/4a8a08f09d37b73795649038408b5f33.png' title='c' alt='c' align='middle' /> in <img src='/latexrender/pictures/28710607bd59a1ccb404fb01fef7fa05.png' title='\mathbb C_{z_0}' alt='\mathbb C_{z_0}' align='middle' /> and sends it to the function defined by the convergent power series <img src='/latexrender/pictures/66a14eabfd58c4136dbfc60e3d3cda13.png' title='c(z-z_0)^0=c' alt='c(z-z_0)^0=c' align='middle' />. Regardless of <img src='/latexrender/pictures/f82c0544b80586d86d1b04463ed6d686.png' title='z_0' alt='z_0' align='middle' />, this map is obviously an injection, and so this map is a monomorphism.</p>
<h2>Space Ã©talÃ© and sheafifications</h2>
<p>Given a presheaf <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' />, we construct the set <img src='/latexrender/pictures/5c8eea0fdca8a1f22c182ac1feed2c74.png' title='|\mathcal F|' alt='|\mathcal F|' align='middle' /> as the disjoint union of all stalks <img src='/latexrender/pictures/195e20e928117fb4470a39124f803bd3.png' title='\mathcal F_x' alt='\mathcal F_x' align='middle' />. There&#8217;s an natural projection <img src='/latexrender/pictures/bc6eb175e29a8dced71d7f1523c3916a.png' title='\pi:f_x\mapsto x' alt='\pi:f_x\mapsto x' align='middle' /> down to the underlying topological space. We can introduce a topology on <img src='/latexrender/pictures/5c8eea0fdca8a1f22c182ac1feed2c74.png' title='|\mathcal F|' alt='|\mathcal F|' align='middle' /> by constructing, for each open set <img src='/latexrender/pictures/c8e068540aa492a887de3eb8dd69b636.png' title='U\subseteq M' alt='U\subseteq M' align='middle' /> and each element <img src='/latexrender/pictures/429bb87af31e658cfde4376cb84d8738.png' title='f\in\mathcal F(U)' alt='f\in\mathcal F(U)' align='middle' />, the set <img src='/latexrender/pictures/ad1a42f5362d83a00e000bef0ab392fb.png' title='[U,f]=\{\rho_x(f)\mid x\inU\}\subseteq|\mathcal F|' alt='[U,f]=\{\rho_x(f)\mid x\inU\}\subseteq|\mathcal F|' align='middle' /> and take these sets to be a basis of our topology. So an open set is given from the <img src='/latexrender/pictures/d396d8c77719c8e6044fdcdc11a4260d.png' title='[U,f]' alt='[U,f]' align='middle' /> by a sequence of (possibly infinite) unions and finite intersections.</p>
<p>This turns out to be a covering of <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' />, i.e. each <img src='/latexrender/pictures/2441e96afdb382fa61ee0b1af09b87c1.png' title='e\in|\mathcal F|' alt='e\in|\mathcal F|' align='middle' /> has an open neighbourhood which is homeomorphic to its image under the projection <img src='/latexrender/pictures/4f08e3dba63dc6d40b22952c7a9dac6d.png' title='\pi' alt='\pi' align='middle' />. We call the topological space <img src='/latexrender/pictures/5c8eea0fdca8a1f22c182ac1feed2c74.png' title='|\mathcal F|' alt='|\mathcal F|' align='middle' /> with this topology the space Ã©talÃ© of the presheaf <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' />.</p>
<p>Using the space Ã©talÃ©, then, we can construct a canonical sheaf. A continuous section of a covering space <img src='/latexrender/pictures/bbbab209cfb80354f938d3c0e19635db.png' title='\pi\colon\mathcal F\to M' alt='\pi\colon\mathcal F\to M' align='middle' /> over a subset <img src='/latexrender/pictures/c8e068540aa492a887de3eb8dd69b636.png' title='U\subseteq M' alt='U\subseteq M' align='middle' /> is a continuous map <img src='/latexrender/pictures/11cee73041ae74b61c3d152ee3a29aca.png' title='\sigma\colon U\to|\mathcal F|' alt='\sigma\colon U\to|\mathcal F|' align='middle' /> such that <img src='/latexrender/pictures/064833df6812880352001b71cdc6bb2c.png' title='\pi\circ\sigma=\mathbb 1' alt='\pi\circ\sigma=\mathbb 1' align='middle' />.</p>
<h3>Example</h3>
<p><img src='/latexrender/pictures/07e5a4a56a57f5c874ebf79bb67a0b18.png' title='\mathbb R' alt='\mathbb R' align='middle' /> is a covering space of the circle (viewed as the interval [0,1] with 0 identified with 1) with the projection <img src='/latexrender/pictures/8287a295c1fc9223196b9caefadb63e6.png' title='x\mapsto x\pmod1' alt='x\mapsto x\pmod1' align='middle' />. A continuous section of the upper open halfcircle is a map <img src='/latexrender/pictures/0ce9eec99b8c3b571e5e360ade12bafe.png' title='\sigma_n\colon x\mapsto x+n' alt='\sigma_n\colon x\mapsto x+n' align='middle' />. Indeed, <img src='/latexrender/pictures/f8e0016723673414d6642dc6da635e5c.png' title='\pi\circ\sigma_n' alt='\pi\circ\sigma_n' align='middle' /> takes some point <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> to <img src='/latexrender/pictures/ca2d6464a2db5714328b22a74824bed8.png' title='x+n' alt='x+n' align='middle' /> and then to <img src='/latexrender/pictures/8da81e0488b4d3b79a103f00d3bb01f8.png' title='x+n\pmod1' alt='x+n\pmod1' align='middle' /></p>
<p>Now, let <img src='/latexrender/pictures/d6bdce810ba3809990215f996dbf2eaf.png' title='\Gamma(U,|\mathcal F|)' alt='\Gamma(U,|\mathcal F|)' align='middle' /> denote the set of all continuous sections of <img src='/latexrender/pictures/5c8eea0fdca8a1f22c182ac1feed2c74.png' title='|\mathcal F|' alt='|\mathcal F|' align='middle' /> over <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' />. This ends up in the same category that <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' /> goes to. From this, we then define a sheaf <img src='/latexrender/pictures/da0e0854c1aeb3f6051a41a37c6ecda5.png' title='\hat{\mathcal F}' alt='\hat{\mathcal F}' align='middle' /> by setting <img src='/latexrender/pictures/6b5fb4aa95b6c940e03eda21a5b781de.png' title='\hat{\mathcal F}(U)=\Gamma(U,|\mathcal F|)' alt='\hat{\mathcal F}(U)=\Gamma(U,|\mathcal F|)' align='middle' />, and letting restriction be the usual restriction of maps. This gives us a functor from presheaves to sheaves called <em>sheafification</em>.</p>
<h3>Example</h3>
<p>We already saw that <img src='/latexrender/pictures/40a02453fa3e9405ab6f81a970198369.png' title='\mathbb Z_{\text{const}}' alt='\mathbb Z_{\text{const}}' align='middle' /> assigning the group <img src='/latexrender/pictures/aad446a8d8da5fce92d662dcd1952666.png' title='\mathbb Z' alt='\mathbb Z' align='middle' /> to each open subset <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' /> of a manifold <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /> and with all restrictions being identity morphisms is not a sheaf. What happens if we sheafify? First, we need to construct our space Ã©talÃ©. This is the disjoint union of all stalks. A stalk over a point <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> is the quotient of the disjoint union of all <img src='/latexrender/pictures/5e75b3d72e3f7186650c9874c6b186d6.png' title='\mathbb Z_{\text{const}}(U)' alt='\mathbb Z_{\text{const}}(U)' align='middle' /> for <img src='/latexrender/pictures/e127194a104c7d88221cef819a274646.png' title='x\in U' alt='x\in U' align='middle' /> with the equivalence relation that identifies <img src='/latexrender/pictures/8a3d7211e874d401dbbf2bb2f26bc5b5.png' title='(n,U)\equiv(m,V)' alt='(n,U)\equiv(m,V)' align='middle' /> if there is some <img src='/latexrender/pictures/ab13b17d37613cf94cf3f0e3135e5b98.png' title='W\subset U\cap V' alt='W\subset U\cap V' align='middle' /> such that <img src='/latexrender/pictures/dc6389346308a9646444073ccfe3c960.png' title='n|_W=m|_W' alt='n|_W=m|_W' align='middle' />. Now, all neighbourhoods of <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> intersect in some open subset, and since all restrictions are identities, we identify <img src='/latexrender/pictures/784a28394b97b62b0458edea05831966.png' title='(n,U)' alt='(n,U)' align='middle' /> with <img src='/latexrender/pictures/41c51b6514b15131c9da76ca010f2fb1.png' title='(n,V)' alt='(n,V)' align='middle' /> for all pairs of open neighbourhoods <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' />,<img src='/latexrender/pictures/5206560a306a2e085a437fd258eb57ce.png' title='V' alt='V' align='middle' />; so in end-effect all stalks are isomorphic, as groups, to <img src='/latexrender/pictures/aad446a8d8da5fce92d662dcd1952666.png' title='\mathbb Z' alt='\mathbb Z' align='middle' />.</p>
<p>The space Ã©talÃ© is thus the disjoint union for all points <img src='/latexrender/pictures/b59b15da2e9712d821385c9f0cbbba55.png' title='x\in M' alt='x\in M' align='middle' /> of copies of <img src='/latexrender/pictures/aad446a8d8da5fce92d662dcd1952666.png' title='\mathbb Z' alt='\mathbb Z' align='middle' />; i.e. the set of ordered pairs on the form <img src='/latexrender/pictures/4a5b29f90b9617e16349042ddc238d31.png' title='(x,n)' alt='(x,n)' align='middle' /> for <img src='/latexrender/pictures/b59b15da2e9712d821385c9f0cbbba55.png' title='x\in M' alt='x\in M' align='middle' /> and <img src='/latexrender/pictures/638e973d1ee19136439901869c881f04.png' title='n\in\mathbb Z' alt='n\in\mathbb Z' align='middle' />. Finally, our sheafified sheaf assigns to each open subset <img src='/latexrender/pictures/c8e068540aa492a887de3eb8dd69b636.png' title='U\subseteq M' alt='U\subseteq M' align='middle' /> the group of sections <img src='/latexrender/pictures/b6bd4082cf6433decf8104a8eda4b81b.png' title='\Gamma(U,|\mathbb Z_{\text{const}}|)' alt='\Gamma(U,|\mathbb Z_{\text{const}}|)' align='middle' />, thus a point there is a function <img src='/latexrender/pictures/21c945d95eaae9ff7ca2942a41219ac5.png' title='U\to U\times\mathbb Z' alt='U\to U\times\mathbb Z' align='middle' /> such that <img src='/latexrender/pictures/0efd85cf8ce2c113ed57bfae20b3f6ae.png' title='x\mapsto n_x' alt='x\mapsto n_x' align='middle' /> for some <img src='/latexrender/pictures/5de8bb620af707098e619607e1a1470d.png' title='n_x\in\mathbb Z' alt='n_x\in\mathbb Z' align='middle' />. Since this map has to be continuous, the map is constant on neighbourhoods. And thus we recover the sheaf of locally constant maps for the constant sheaf; just as exhibited earlier.</p>
<h2>Kernels and quotients</h2>
<p>Let <img src='/latexrender/pictures/14c9374159360c5fdd9e4979abdea4eb.png' title='\tau:\mathcal A\to\mathcal B' alt='\tau:\mathcal A\to\mathcal B' align='middle' /> be a map of sheaves. For any open <img src='/latexrender/pictures/c8e068540aa492a887de3eb8dd69b636.png' title='U\subseteq M' alt='U\subseteq M' align='middle' />, we define <img src='/latexrender/pictures/a04519f79e9d873fd0e618caa3d73297.png' title='\mathcal K(U)=\ker\tau_U\colon\mathcal A(U)\to\mathcal B(U)' alt='\mathcal K(U)=\ker\tau_U\colon\mathcal A(U)\to\mathcal B(U)' align='middle' />. The sheaf <img src='/latexrender/pictures/bb110602838b3eddfceb3d002bafcd71.png' title='\mathcal K' alt='\mathcal K' align='middle' /> formed by these groups together with the induced morphisms from is called the kernel of the sheaf map.</p>
<p>The quotient of a sheaf map is formed almost the same way &#8211; pointwise components are formed as expected, but the presheaf thus formed need not be a sheaf. So we sheafify it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/04/reading-merkulov-differential-geometry-for-an-algebraist-4-in-a-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monads, algebraic topology in computation, and John Baez</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/02/monads-algebraic-topology-in-computation-and-john-baez/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/02/monads-algebraic-topology-in-computation-and-john-baez/#comments</comments>
		<pubDate>Tue, 21 Feb 2006 10:06:43 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Operads and PROPs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archives/2006/02/21/monads-algebraic-topology-in-computation-and-john-baez/</guid>
		<description><![CDATA[Todays webbrowsing led me to John Baez finds in mathematical physics for week 226, which led me to snoop around John Baez homepage, which in turn led me to stumble across the Geometry of Computation school and conference in Marseilles right now. This, in turn, leads to several different themes for me to discuss. Cryptographic [...]]]></description>
			<content:encoded><![CDATA[<p>Todays webbrowsing led me to <a href=http://math.ucr.edu/home/baez/week226.html>John Baez finds in mathematical physics for week 226</a>, which led me to snoop around <a href=http://math.ucr.edu/home/baez/>John Baez homepage</a>, which in turn led me to stumble across the <a href=http://iml.univ-mrs.fr/geocal06/>Geometry of Computation</a> school and conference in Marseilles right now.</p>
<p>This, in turn, leads to several different themes for me to discuss.</p>
<h1>Cryptographic hashes</h1>
<p>In the weeks finds, John Baez comes up to speed with the cryptographic community on the broken state of SHA-1 and MD-5. Now, this is a drama that has been developing with quite some speed during the last 1-1Â½ years. It all began heating up seriously early 2005 when Wang, Yin and Yu presented a paper detailing a serious attack against SHA-1. Since then, more and more tangible evidence for the inadvisability of MD-5 and upcoming problems with SHA-1 have arrived &#8211; such as several example objects with different contents and identical MD-5 hashes: postscript documents (Letter of Recommendation and Access right granting), X.509 certificates et.c.</p>
<p>The attacks that occur are what is called <em>collision attacks</em> by those in the trade. They find data <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> and <img src='/latexrender/pictures/415290769594460e2e485922904f345d.png' title='y' alt='y' align='middle' /> such that <img src='/latexrender/pictures/ea885acd356394c2423a921c524aaebc.png' title='H(x)=H(y)' alt='H(x)=H(y)' align='middle' />. The other serious attack is the <em>preimage attack</em>, where to a specific hash <img src='/latexrender/pictures/415290769594460e2e485922904f345d.png' title='y' alt='y' align='middle' />, a message <img src='/latexrender/pictures/9dd4e461268c8034f5c8564e155c67a6.png' title='x' alt='x' align='middle' /> is found such that <img src='/latexrender/pictures/279f718d43153e71010ab3f8c33b9642.png' title='H(x)=y' alt='H(x)=y' align='middle' />. Once preimages can be found, it&#8217;s time to bail ship quickly. Up until then, it may possibly be enough to pack the life boats and look toward the horizon for possible rescues or deserted islands.</p>
<p>Very interesting reads and link sources for this can be found, as with most things cryptographic, with <a href=http://schneier.com>Bruce Schneier</a>.</p>
<h1>Topology of computation</h1>
<p>John Baez talks about <a href=http://math.ucr.edu/home/baez/universal/>some lectures</a> he gave at the Geometry of Computation conference in the section of Universal Algebra and Diagrammatic Reasoning. Reading through what he did and looking over the conference as such, I realize I would very much have wanted to be there. They&#8217;re doing linguistics and algebraic topology together, for one!</p>
<p>John Baez&#8217; talk (well worth to review the slides! Go do it!) goes through a lot of the themes I&#8217;m busying myself with from the vantage point of computer science and computation theory. He talks about PROPs, about PROs, about Monads and categorical monoids, about diagrams and algebraic theories et.c. Most of it very interesting, and rather close to my own work. If I now can work out some good method to display that the Koszul resolutions of PROPs are the same kind of resolutions that Baez uses to get simplicial objects representing computations, I might just close in to something that may give a good explanation as to why the things I like are relevant.</p>
<p>I will bring my post on Operads and PROPs at some point in the future. As will I bring my expose over Koszulness. But not today.</p>
<h1>Geometry of roots</h1>
<p>The third eye-catcher I found was <a href=http://math.ucr.edu/home/baez/roots.html>an absolutely gorgeous picture</a> of all roots of polynomials of degree at most 5 and with integer coefficients in <img src='/latexrender/pictures/bdebec222f4aa38fc1bd1064c8e24fe4.png' title='[-4,4]' alt='[-4,4]' align='middle' />. It makes me want to build more pictures. Now, if I may. Dunno if this is what I -should- be spending the processor cycles of my workplace on, but damn, they are gorgeous!</p>
<p>I wonder how hard it would be to hack a Pari/GP script that spews out coordinates and colour tags for this with coefficients in <img src='/latexrender/pictures/728629d5db271bc36f160c71b422fa90.png' title='[-5,5]' alt='[-5,5]' align='middle' /> in a format amenable to producing pretty graphs. Some chosen thoughts awake with the comments from John Baez &#8211; among other things, he states that</p>
<blockquote><p>
Odlyzko and Poonen proved some interesting things about the set of all roots of all polynomials with coefficients 0 or 1. If we define a fancier Christensen set <img src='/latexrender/pictures/b4b40865e288794ecab6c5a93adbec9b.png' title='C_{d,p,q}' alt='C_{d,p,q}' align='middle' /> to be the set of roots of all polynomials of degree <img src='/latexrender/pictures/8277e0910d750195b448797616e091ad.png' title='d' alt='d' align='middle' /> with coefficients ranging from <img src='/latexrender/pictures/83878c91171338902e0fe0fb97a8c47a.png' title='p' alt='p' align='middle' /> to <img src='/latexrender/pictures/7694f4a66316e53c8cdd9d9954bd611d.png' title='q' alt='q' align='middle' />, Odlyzko and Poonen are studying <img src='/latexrender/pictures/6a83ca42e3a4a43963e3802c2966c1a8.png' title='C_{d,0,1}' alt='C_{d,0,1}' align='middle' /> in the limit <img src='/latexrender/pictures/1a12b563ad497170938b3a507c726074.png' title='d\to\infty' alt='d\to\infty' align='middle' />. They mention some known results and prove some new ones: this set is contained in the half-plane <img src='/latexrender/pictures/b0f245d7f2dd43e342c50601c51ce9e4.png' title='Re(z) &lt; 3/2' alt='Re(z) &lt; 3/2' align='middle' /> and contained in the annulus <img src='/latexrender/pictures/0fc5c2574368063c8e50dcc4e9ff754b.png' title='1/\phi &lt; |z| &lt; \phi' alt='1/\phi &lt; |z| &lt; \phi' align='middle' /> where <img src='/latexrender/pictures/1ed346930917426bc46d41e22cc525ec.png' title='\phi' alt='\phi' align='middle' /> is the golden ratio <img src='/latexrender/pictures/d5288a27973cf54a04a026eb9fa6860e.png' title='(\sqrt5 + 1)/2' alt='(\sqrt5 + 1)/2' align='middle' />. In fact they trap it, not just between these circles, but between two subtler curves. They also show that the closure of this set is path connected but not simply connected.
</p></blockquote>
<p>Now, if the set isn&#8217;t simply connected, then I&#8217;m immediately growing interested in the homology and homotopy of the set. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/02/monads-algebraic-topology-in-computation-and-john-baez/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reading Merkulov: Differential geometry for an algebraist (3 in a series)</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/02/reading-merkulov-differential-geometry-for-an-algebraist-3-in-a-series/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/02/reading-merkulov-differential-geometry-for-an-algebraist-3-in-a-series/#comments</comments>
		<pubDate>Mon, 13 Feb 2006 12:55:57 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Differential geometry]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archives/2006/02/13/reading-merkulov-differential-geometry-for-an-algebraist-3-in-a-series/</guid>
		<description><![CDATA[Since I cannot concentrate anyway, here comes the third installment of my reading Merkulov. We now get to the funky stuff &#8211; introducing sheaves and getting to what should be at the very start of basically any modern geometry course. At least if I am to believe the geometers I know. So, let&#8217;s launch straight [...]]]></description>
			<content:encoded><![CDATA[<p>Since I cannot concentrate anyway, here comes the third installment of my reading Merkulov. We now get to the funky stuff &#8211; introducing sheaves and getting to what should be at the very start of basically any modern geometry course. At least if I am to believe the geometers I know.</p>
<p>So, let&#8217;s launch straight to it. A <em>presheaf</em> <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' /> on the topological space <img src='/latexrender/pictures/a1441a4035dc28021108c8d1d2f16694.png' title='\mathcal M' alt='\mathcal M' align='middle' /> is just a contravariant functor from <img src='/latexrender/pictures/598297d2169494c30921316ff9a754b8.png' title='Top(\mathcal M)' alt='Top(\mathcal M)' align='middle' /> to <img src='/latexrender/pictures/0e4c46df226b9c0cb391311c54f28efe.png' title='Ab' alt='Ab' align='middle' />, where <img src='/latexrender/pictures/598297d2169494c30921316ff9a754b8.png' title='Top(\mathcal M)' alt='Top(\mathcal M)' align='middle' /> is the category of open subsets of <img src='/latexrender/pictures/a1441a4035dc28021108c8d1d2f16694.png' title='\mathcal M' alt='\mathcal M' align='middle' /> with morphisms being inclusion maps.</p>
<p>So that&#8217;s the one-line definition. But what does it mean?<br />
Well, a functor is a map between categories that takes objects to objects and morphisms to morphisms. So we have that <img src='/latexrender/pictures/29974ac0f96fe3d0e0f71d4d86bc786a.png' title='\mathcal F(U)' alt='\mathcal F(U)' align='middle' /> is an abelian group for any open set <img src='/latexrender/pictures/1c43470aca3458c38bc3310722a2b7ca.png' title='U\subset\mathcal M' alt='U\subset\mathcal M' align='middle' />. For such a map to really be a functor, it has to be sane in a rather precisely defined sense: namely morphism composition should still be associative and the identity endomorphism on a group shouldn&#8217;t actually, ya&#8217;know, change the morphisms before or after it.<br />
For the functor to be contravariant means precisely that for <img src='/latexrender/pictures/87140166cf09974c07835291049374b0.png' title='f:U\to V' alt='f:U\to V' align='middle' /> we get <img src='/latexrender/pictures/61e3dc058d6bf92820bc0029e6f9c859.png' title='\mathcal F(f):\mathcal F(V)\to\mathcal F(U)' alt='\mathcal F(f):\mathcal F(V)\to\mathcal F(U)' align='middle' /> &#8211; all arrows reverse by application of the functor.</p>
<p>And for our definition of presheaves? We can read out that for every inclusion of open subsets of our space <img src='/latexrender/pictures/0d63e93bad860e148833242986589815.png' title='U\subseteq V' alt='U\subseteq V' align='middle' /> we get a group homomorphism <img src='/latexrender/pictures/d699997bbeeb64b9246adfdb843d269e.png' title='\rho_U^V:\mathcal F(V)\to\mathcal F(U)' alt='\rho_U^V:\mathcal F(V)\to\mathcal F(U)' align='middle' />. Functoriality requires these homomorphisms to be sane &#8211; i.e. <img src='/latexrender/pictures/20b1a07177306fa2a0b1be3da198a384.png' title='\rho_U^U=\mathbb 1_{\mathcal F(U)}' alt='\rho_U^U=\mathbb 1_{\mathcal F(U)}' align='middle' /> and <img src='/latexrender/pictures/5635ec00ebf2995fe17a41003aab9522.png' title='\rho_W^V\circ\rho_V^U=\rho_W^U' alt='\rho_W^V\circ\rho_V^U=\rho_W^U' align='middle' /> whenever <img src='/latexrender/pictures/22c0ea5340a8d67241856ae92716a998.png' title='W\subseteq V\subseteq U' alt='W\subseteq V\subseteq U' align='middle' />.</p>
<p>We will most often, as soon as it is clear what sheaf we work with, stick to denoting the <img src='/latexrender/pictures/981511ba498a403bc2eb577f0ac6bac2.png' title='\rho^U_V(f)' alt='\rho^U_V(f)' align='middle' /> with <img src='/latexrender/pictures/96cbea44426b6db5d2eadb3b61c3a5e0.png' title='f\mid_V' alt='f\mid_V' align='middle' /> and call it the restriction of <img src='/latexrender/pictures/8fa14cdd754f91cc6554c9e71929cce7.png' title='f' alt='f' align='middle' /> to <img src='/latexrender/pictures/5206560a306a2e085a437fd258eb57ce.png' title='V' alt='V' align='middle' />.</p>
<h4>Example</h4>
<p>Our first example will be the constant presheaf: for <img src='/latexrender/pictures/a1441a4035dc28021108c8d1d2f16694.png' title='\mathcal M' alt='\mathcal M' align='middle' /> a topological space and <img src='/latexrender/pictures/861df74596abb976c25bcec0d09e08c9.png' title='\mathcal A' alt='\mathcal A' align='middle' /> an abelian group, we define <img src='/latexrender/pictures/fde9a06b286b6ab03659067d1191c4d8.png' title='\mathcal F(U)=\mathcal A' alt='\mathcal F(U)=\mathcal A' align='middle' /> if <img src='/latexrender/pictures/340070f56458e99ac2a107d5fc5f5767.png' title='U\subseteq\mathcal M' alt='U\subseteq\mathcal M' align='middle' /> is non-empty, and <img src='/latexrender/pictures/1e2ec7005e06a84a9baae55d5e6d28e3.png' title='\mathcal F(\emptyset)=0' alt='\mathcal F(\emptyset)=0' align='middle' />. The restriction homomorphisms are the identity whenever the subset is nonempty and the zero homomorphism to the empty set.</p>
<p>Completely analogously, presheaves of sets, graded vector spaces, algebras, modules over an algebra et.c. can be defined. Throughout, the presheaves are just contravariant functors from <img src='/latexrender/pictures/598297d2169494c30921316ff9a754b8.png' title='Top(\mathcal M)' alt='Top(\mathcal M)' align='middle' /> to the relevant category.</p>
<h3>Presheaves over presheaves</h3>
<p>Suppose <img src='/latexrender/pictures/6490fb32abfdcb013788bcd0696150a8.png' title='\mathcal R' alt='\mathcal R' align='middle' /> is a presheaf of rings with restrictions <img src='/latexrender/pictures/d2606be4e0cd2c9a6179c8f2e3547a85.png' title='\rho' alt='\rho' align='middle' /> and <img src='/latexrender/pictures/a1441a4035dc28021108c8d1d2f16694.png' title='\mathcal M' alt='\mathcal M' align='middle' /> is a presheaf of abelian groups with restrictions <img src='/latexrender/pictures/297ce6e10c399f2c9c9f5b3c8656c231.png' title='\hat\rho' alt='\hat\rho' align='middle' /> on some topological space <img src='/latexrender/pictures/cbfab352d62ba51f3042d23579453434.png' title='\mathcal T' alt='\mathcal T' align='middle' /> such that whenever <img src='/latexrender/pictures/6905f586060c3fcfaf708f4d6ec1d77c.png' title='U\subseteq\mathcal T' alt='U\subseteq\mathcal T' align='middle' /> we know that <img src='/latexrender/pictures/f4a468bfb8937be4bf2b79937867bd2b.png' title='\mathcal M(U)' alt='\mathcal M(U)' align='middle' /> is a <img src='/latexrender/pictures/6d1a1534fb1e04a20c70bb5803be39d9.png' title='\mathcal R(U)' alt='\mathcal R(U)' align='middle' />-module and for any <img src='/latexrender/pictures/5144a45c342284e828b94b24f625022d.png' title='V\subseteq U\subseteq\mathcal T' alt='V\subseteq U\subseteq\mathcal T' align='middle' /> we also know that <img src='/latexrender/pictures/830d00092cd87d97658c1d877bb8eb07.png' title='\hat\rho_V^U(ax)=\rho_V^U(a)\hat\rho_V^U(x)' alt='\hat\rho_V^U(ax)=\rho_V^U(a)\hat\rho_V^U(x)' align='middle' /> for <img src='/latexrender/pictures/310c7d106ee0c750beb13d44cd06c141.png' title='a\in\mathcal R(U)' alt='a\in\mathcal R(U)' align='middle' /> and <img src='/latexrender/pictures/65c935116db078b26ae076a708c8c495.png' title='x\in\mathcal M(U)' alt='x\in\mathcal M(U)' align='middle' /> so that the restrictions agree with the module structure. Then we call <img src='/latexrender/pictures/a1441a4035dc28021108c8d1d2f16694.png' title='\mathcal M' alt='\mathcal M' align='middle' /> a presheaf of modules over a presheaf of rings <img src='/latexrender/pictures/6490fb32abfdcb013788bcd0696150a8.png' title='\mathcal R' alt='\mathcal R' align='middle' />. By adding structure to the modules in <img src='/latexrender/pictures/a1441a4035dc28021108c8d1d2f16694.png' title='\mathcal M' alt='\mathcal M' align='middle' /> we can define presheaves of algebras or Lie algebras et.c. over a fixed presheaf of (graded) commutative rings <img src='/latexrender/pictures/6490fb32abfdcb013788bcd0696150a8.png' title='\mathcal R' alt='\mathcal R' align='middle' />.</p>
<h4>Example</h4>
<p>Let <img src='/latexrender/pictures/e1e1d3d40573127e9ee0480caf1283d6.png' title='R' alt='R' align='middle' /> be a graded <img src='/latexrender/pictures/8ce4b16b22b58894aa86c421e8759df3.png' title='k' alt='k' align='middle' />-algebra for a field <img src='/latexrender/pictures/8ce4b16b22b58894aa86c421e8759df3.png' title='k' alt='k' align='middle' />. A <em>derivation</em> of <img src='/latexrender/pictures/e1e1d3d40573127e9ee0480caf1283d6.png' title='R' alt='R' align='middle' /> of degree <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' /> is an element <img src='/latexrender/pictures/59de44fa9fd24172e8fefead93614c63.png' title='d\in\Hom_n(R,R)' alt='d\in\Hom_n(R,R)' align='middle' /> satisfying the <span title="Often called the Leibniz identity">condition</span><br />
<img src='/latexrender/pictures/88ac67a015e64ae6afea4ed984c75d44.png' title='d(ab)=(da)b+(-1)^{|a|}a(db)' alt='d(ab)=(da)b+(-1)^{|a|}a(db)' align='middle' /><br />
Let <img src='/latexrender/pictures/e2c902e40161e5337bd3e221abe51552.png' title='Der_nR' alt='Der_nR' align='middle' /> be the vector space of all derivations of degree <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' /> and let<br />
<img src='/latexrender/pictures/704dd9318d6921dbe2058373fa0db832.png' title='Der R=\bigoplus_{n\in\mathbb Z}Der_n R' alt='Der R=\bigoplus_{n\in\mathbb Z}Der_n R' align='middle' /><br />
Now, <img src='/latexrender/pictures/1172f526344ca1c539264fc40c842429.png' title='DerR' alt='DerR' align='middle' /> has a natural <img src='/latexrender/pictures/e1e1d3d40573127e9ee0480caf1283d6.png' title='R' alt='R' align='middle' />-module structure by <img src='/latexrender/pictures/4ba45ef665cc3989b5b412b7ade8c3dd.png' title='ad=l_a\circ d' alt='ad=l_a\circ d' align='middle' /> where <img src='/latexrender/pictures/1a0bfa3431a456cbcabb204b150f20dd.png' title='l_a:b\mapsto ab' alt='l_a:b\mapsto ab' align='middle' /> for <img src='/latexrender/pictures/4ec17a1337d97d20d834dec86f73fb2b.png' title='a,b\in R' alt='a,b\in R' align='middle' />. Furthermore, there is a natural structure of graded Lie algebra to <img src='/latexrender/pictures/1172f526344ca1c539264fc40c842429.png' title='DerR' alt='DerR' align='middle' /> with brackets given as <img src='/latexrender/pictures/2d6307a9cb90a445033d6805d100689c.png' title='[d_1,d_2]=d_1\circ d_2-(-1)^{|d_1||d_2|}d_2\circ d_1' alt='[d_1,d_2]=d_1\circ d_2-(-1)^{|d_1||d_2|}d_2\circ d_1' align='middle' />. </p>
<p>Now, if <img src='/latexrender/pictures/6490fb32abfdcb013788bcd0696150a8.png' title='\mathcal R' alt='\mathcal R' align='middle' /> is a presheaf of algebras, then the associated collection <img src='/latexrender/pictures/6e1ab6d2e551755e3fd996320d8b9450.png' title='Der\mathcal R' alt='Der\mathcal R' align='middle' /> is naturally a presheaf of <img src='/latexrender/pictures/6490fb32abfdcb013788bcd0696150a8.png' title='\mathcal R' alt='\mathcal R' align='middle' />-modules. It is also a presheaf of Lie algebras on the space.</p>
<h4>Example</h4>
<p>For an open subset <img src='/latexrender/pictures/c8e068540aa492a887de3eb8dd69b636.png' title='U\subseteq M' alt='U\subseteq M' align='middle' /> of a fixed topological space <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /> let <img src='/latexrender/pictures/52e9d6a8d41aa4ff9a6e9fe0b6acaef7.png' title='\mathcal E^0(U)' alt='\mathcal E^0(U)' align='middle' /> be the vector space of all complex valued continuous functions on <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' />. For every pair of open subsets <img src='/latexrender/pictures/f5d5f07edbb7e7a4b47a878b8bcdcf5d.png' title='V\subseteq U' alt='V\subseteq U' align='middle' /> let <img src='/latexrender/pictures/865490b102b9d1fd9db907b3fa11f0d9.png' title='\rho^U_V:\mathcal E^0(U)\to\mathcal E^0(V)' alt='\rho^U_V:\mathcal E^0(U)\to\mathcal E^0(V)' align='middle' /> be the usual restriction of a continuous function <img src='/latexrender/pictures/a40eef6ac0a07de4b4763863cbd60688.png' title='f:U\to\mathbb C' alt='f:U\to\mathbb C' align='middle' /> to <img src='/latexrender/pictures/731871d23b2f126f6797f5c296aeacfe.png' title='f\mid_V:V\to\mathbb C' alt='f\mid_V:V\to\mathbb C' align='middle' />, so for <img src='/latexrender/pictures/9a4682ff004c7115f75f1c281a150210.png' title='v\in V f\mid_V(v)=f(v)' alt='v\in V f\mid_V(v)=f(v)' align='middle' />. Then <img src='/latexrender/pictures/88d93a6813940581556763e0eac19b42.png' title='\mathcal E^0' alt='\mathcal E^0' align='middle' /> is a presheaf of continuous functions on <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /> and is often denoted by <img src='/latexrender/pictures/c9bd9677386623a2358336dc104ec266.png' title='\mathcal E^0_M' alt='\mathcal E^0_M' align='middle' />. </p>
<p>If <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /> is a <span title="that is all transformations are smooth">smooth manifold</span> we can take smooth functions everywhere instead, we get a presheaf <img src='/latexrender/pictures/88a62f43d1ac75f5e240234b4edaf3f9.png' title='\mathcal E^\infty_M' alt='\mathcal E^\infty_M' align='middle' /> of smooth functions on <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' />.</p>
<p>If <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /> is a <span title="that is all transformations are holomorphic">complex manifold</span> we can take holomorphic functions everywhere to get a presheaf <img src='/latexrender/pictures/9d7ce9d1f88aa47306e6c6a09e021e7c.png' title='\mathcal O_M' alt='\mathcal O_M' align='middle' /> of holomorphic functions on <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' />.</p>
<h2>Sheaves</h2>
<p>A presheaf <img src='/latexrender/pictures/c5d707ac75f8f4048c49e1c5771878d8.png' title='\mathcal F' alt='\mathcal F' align='middle' /> on a topological manifold is called a sheaf if, for every open set<img src='/latexrender/pictures/7bab656b9506a17e092a7a66bb6c7815.png' title=' U\subseteq M' alt=' U\subseteq M' align='middle' /> and every family of open subsets <img src='/latexrender/pictures/ee4d6df2527ea92de62d39e567c13a09.png' title='U_i\subseteq U' alt='U_i\subseteq U' align='middle' /> with <img src='/latexrender/pictures/45da6486f3600dba6a368f76d5859972.png' title='U=\bigcup U_i' alt='U=\bigcup U_i' align='middle' /> the following conditions are satisfied:<br />
If for all <img src='/latexrender/pictures/865c0c0b4ab0e063e5caa3387c1a8741.png' title='i' alt='i' align='middle' />, and <img src='/latexrender/pictures/9730455a6ad2ff1d5784a1a47fe13671.png' title='f, g\in\mathcal F(U)' alt='f, g\in\mathcal F(U)' align='middle' /> we have<br />
<img src='/latexrender/pictures/d875488a8c7d6b83001d7807f42eb43b.png' title='f\mid_{U_i}=g\mid_{U_i}' alt='f\mid_{U_i}=g\mid_{U_i}' align='middle' /><br />
then <img src='/latexrender/pictures/b98da12a6fffabb3b4e8969305296972.png' title='f=g' alt='f=g' align='middle' /> and<br />
for every family of elements <img src='/latexrender/pictures/dd1e4c9497524acf17825e30156352ca.png' title='f_i\in\mathcal F(U_i)' alt='f_i\in\mathcal F(U_i)' align='middle' /> with the property that <img src='/latexrender/pictures/04ee3ced0b0fbf715bee4bab1f49f77e.png' title='f_i\mid_{U_i\cap U_j}=f_j\mid_{U_i\cap U_j}' alt='f_i\mid_{U_i\cap U_j}=f_j\mid_{U_i\cap U_j}' align='middle' /> there is some <img src='/latexrender/pictures/429bb87af31e658cfde4376cb84d8738.png' title='f\in\mathcal F(U)' alt='f\in\mathcal F(U)' align='middle' /> such that <img src='/latexrender/pictures/b01f1d2742711082437bf9782f44e3be.png' title='f\mid_{U_i}=f_i' alt='f\mid_{U_i}=f_i' align='middle' /> for all <img src='/latexrender/pictures/865c0c0b4ab0e063e5caa3387c1a8741.png' title='i' alt='i' align='middle' />. </p>
<p>So a sheaf is a presheaf such that if for a covering of an open set <span title="giving a sort of 'going back' method from the subset restriction maps">equality on all covering sets implies equality in the covered set</span> and where if a family seems to have come from an object higher up, then that object really does exist.</p>
<p>Note that the constant presheaf above is only a sheaf if either the abelian group is trivial or the space contains no non-intersecting open sets. If both of these conditions fail, then for a pair of non-intersecting <img src='/latexrender/pictures/54647c5bc7bfda1ba1f9e02069f58757.png' title='U,V' alt='U,V' align='middle' /> and distinct <img src='/latexrender/pictures/a858ac839eb11ab4d04f2ea3a2bed849.png' title='f_1,f_2' alt='f_1,f_2' align='middle' /> we know that <img src='/latexrender/pictures/f1c0a53559ad30a87058a7edf805c3d8.png' title='U\cap V=\emptyset' alt='U\cap V=\emptyset' align='middle' /> and thus that <img src='/latexrender/pictures/0dd8a6408521c4ae267245413bd00684.png' title='f_1\mid_{U\cap V}=f_2\mid_{U\cap V}=0' alt='f_1\mid_{U\cap V}=f_2\mid_{U\cap V}=0' align='middle' /> but there is no <img src='/latexrender/pictures/a5ca542fa50f9dbbee8420c0102b1436.png' title='f\in\mathcal f(U\cup V)=A' alt='f\in\mathcal f(U\cup V)=A' align='middle' /> such that <img src='/latexrender/pictures/71e850dcac199b883fc8d737da881e6c.png' title='f\mid_U=f_1' alt='f\mid_U=f_1' align='middle' /> and <img src='/latexrender/pictures/06573e36891335996c005fe1dc747744.png' title='f\mid_V=f_2' alt='f\mid_V=f_2' align='middle' /> since all restrictions are identity homomorphisms and <img src='/latexrender/pictures/50dcbe3d8b17475fb0ff3f9d5c8fd1ad.png' title='f_1\neq f_2' alt='f_1\neq f_2' align='middle' />. Thus it&#8217;s no sheaf.</p>
<p>This defect, however, is easily fixed. We define for an open subset <img src='/latexrender/pictures/81a613809f75ef2a5894fc46610bd500.png' title='U \mathcal F(U)' alt='U \mathcal F(U)' align='middle' /> to be the set of all locally constant maps <img src='/latexrender/pictures/6c139d6f05d47d020128c0d1cddc9b0f.png' title='f:U\to A' alt='f:U\to A' align='middle' />. Clearly, if <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' /> is connected, then <img src='/latexrender/pictures/09bbf746e2910654d9b826af46a7658f.png' title='\mathcal F(U)=A' alt='\mathcal F(U)=A' align='middle' /> since each map then is uniquely determined by its image. The restriction maps are then the usual restrictions of maps. The result is a sheaf of locally constant functions with values in <img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' />, and is often denoted by the same symbol <img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' />.</p>
<p>All the presheaves <img src='/latexrender/pictures/c9bd9677386623a2358336dc104ec266.png' title='\mathcal E^0_M' alt='\mathcal E^0_M' align='middle' />, <img src='/latexrender/pictures/88a62f43d1ac75f5e240234b4edaf3f9.png' title='\mathcal E^\infty_M' alt='\mathcal E^\infty_M' align='middle' /> and <img src='/latexrender/pictures/9d7ce9d1f88aa47306e6c6a09e021e7c.png' title='\mathcal O_M' alt='\mathcal O_M' align='middle' /> are sheaves though. Their presheaves of derivations are also sheaves.</p>
<p>The sheaf <img src='/latexrender/pictures/88a62f43d1ac75f5e240234b4edaf3f9.png' title='\mathcal E^\infty_M' alt='\mathcal E^\infty_M' align='middle' /> is called the <em>structure sheaf of a smooth manifold</em> <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' />, whereas the associated sheaf <img src='/latexrender/pictures/61d19fbf1b234e7371406a9eee3690da.png' title='\mathcal T_M=Der\mathcal E^\infty_M' alt='\mathcal T_M=Der\mathcal E^\infty_M' align='middle' /> is called the <em>tangent sheaf</em> or the <em>sheaf of smooth vector fields on <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /></em>.</p>
<p>The sheaf <img src='/latexrender/pictures/9d7ce9d1f88aa47306e6c6a09e021e7c.png' title='\mathcal O_M' alt='\mathcal O_M' align='middle' /> is called the <em>structure sheaf of a complex manifold <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /></em> and the <em>tangent sheaf</em> or <em>sheaf or holomorphic vector fields on <img src='/latexrender/pictures/69691c7bdcc3ce6d5d8a1361f22d04ac.png' title='M' alt='M' align='middle' /></em> is defined as above as the sheaf of derivations. Note that any complex manifold also has a structure of smooth real manifold and thus also has the associated sheaves <img src='/latexrender/pictures/3774ca4a8aa19f2ad3164b213ca02552.png' title='\mathcal E^\infty_{M_r}' alt='\mathcal E^\infty_{M_r}' align='middle' /> and <img src='/latexrender/pictures/cc8bde6c5f2bf30dde352a87073dcfaf.png' title='\mathcal T_{M_r}' alt='\mathcal T_{M_r}' align='middle' />.</p>
<h4>Example</h4>
<p>Let&#8217;s define a presheaf on the complex plane as a complex manifold. For open <img src='/latexrender/pictures/370b78d73e03c2cba432063ee1a7ee7d.png' title='U\subseteq\mathbb C' alt='U\subseteq\mathbb C' align='middle' /> define <img src='/latexrender/pictures/29974ac0f96fe3d0e0f71d4d86bc786a.png' title='\mathcal F(U)' alt='\mathcal F(U)' align='middle' /> to be the vector space of all bounded holomorphic functions on <img src='/latexrender/pictures/4c614360da93c0a041b22e537de151eb.png' title='U' alt='U' align='middle' />, with the restriction being the usual restriction of a holomorphic function. This is obviously a presheaf. However, it&#8217;s not a sheaf, since with a covering <img src='/latexrender/pictures/0a23045b2d6c917ff369f784cb087690.png' title='\mathbb C=\bigcup_{i\in\mathbb N}U_i ' alt='\mathbb C=\bigcup_{i\in\mathbb N}U_i ' align='middle' />for <img src='/latexrender/pictures/3ba21493d1baa59ee455b1d796d66c1a.png' title='U_i=\{z\in\mathbb C\mid|z|&lt;i\}' alt='U_i=\{z\in\mathbb C\mid|z|&lt;i\}' align='middle' /> and a family of bounded holomorphic functions <img src='/latexrender/pictures/d254e8cb7763f7a4ffb5859302395f92.png' title='f_i=z\mid_{U_i}' alt='f_i=z\mid_{U_i}' align='middle' />. These functions are compatible, however, there is no bounded holomorphic function on <img src='/latexrender/pictures/b36eac3d201a1a25dda928990a79d751.png' title='\mathbb C' alt='\mathbb C' align='middle' /> such that <img src='/latexrender/pictures/b01f1d2742711082437bf9782f44e3be.png' title='f\mid_{U_i}=f_i' alt='f\mid_{U_i}=f_i' align='middle' />. </p>
<p>From this we learn that non-local properties on presheaves often cause the presheaf to fail being a sheaf.</p>
<h3>Morphisms and categorical structure</h3>
<p>A morphism of (pre)sheaves <img src='/latexrender/pictures/ced5c84475b2acea141394da597a9299.png' title='\mathcal F\to\mathcal G' alt='\mathcal F\to\mathcal G' align='middle' /> is defined in the obvious way &#8211; as a family of homomorphisms of abelian groups <img src='/latexrender/pictures/1469a4fbd1ec6ff6b5c571d16522001a.png' title='\mathcal F(U)\to\mathcal G(U)' alt='\mathcal F(U)\to\mathcal G(U)' align='middle' /> such that the obvious diagrams commute. That is it doesn&#8217;t matter if you first restrict and then follow the morphism or first follow the morphism and then restrict &#8211; the result should be the same. These morphisms make the definition needed to have a category of sheaves, and in this category, we receive the usual definition of an isomorphism, of inclusions, et.c.</p>
<p>Note that the following inclusion maps are all morphisms of sheaves of rings:<br />
<img src='/latexrender/pictures/1ab62851cad48ad33f348406205a98f9.png' title='\mathbb C\to\mathcal O' alt='\mathbb C\to\mathcal O' align='middle' /><br />
<img src='/latexrender/pictures/6eb84a07af9fec9518c0a5968f6c33c0.png' title='\mathcal O\to\mathcal E^\infty' alt='\mathcal O\to\mathcal E^\infty' align='middle' /><br />
<img src='/latexrender/pictures/c1205630f10529b150a3e1812da468db.png' title='\mathcal E^\infty\to\mathcal E^0' alt='\mathcal E^\infty\to\mathcal E^0' align='middle' /></p>
<p>For the next installment, we&#8217;re going to stalks and exact sequences. And germs! Wouldya look at that? We&#8217;ve gone from maritime terminology to agricultural terminology&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/02/reading-merkulov-differential-geometry-for-an-algebraist-3-in-a-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reading John M. Lee &#8211; Introduction to Smooth Manifolds (1 of 1)</title>
		<link>http://blog.mikael.johanssons.org/archive/2006/02/reading-john-m-lee-introduction-to-smooth-manifolds-1-of-1/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2006/02/reading-john-m-lee-introduction-to-smooth-manifolds-1-of-1/#comments</comments>
		<pubDate>Sun, 12 Feb 2006 22:14:40 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Differential geometry]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archives/2006/02/12/reading-john-m-lee-introduction-to-smooth-manifolds-1-of-1/</guid>
		<description><![CDATA[If I&#8217;m going to take this renewed interest in trying to understand differential geometry more seriously, I might as well read more than one source on it. So, I&#8217;ll start a sequence of posts on this book as well. Just as Merkulov, Lee starts with a short definition of what a topological manifold is, including [...]]]></description>
			<content:encoded><![CDATA[<p>If I&#8217;m going to take this renewed interest in trying to understand differential geometry more seriously, I might as well read more than one source on it. So, I&#8217;ll start a sequence of posts on this book as well.</p>
<p>Just as Merkulov, Lee starts with a short definition of what a topological manifold is, including definitions for the terms needed for the treatment.</p>
<h4>Definition</h4>
<p>An n-dimensional topological manifold is a <span title="it has a countable basis for the topology">second countable</span> <span title="every pair of points have disjoint neighbourhoods">Haussdorff space</span> of <span title="every point has a neighbourhood homeomorphic to some open subset of Euclidean n-space">local Euclidean dimension n</span>.</p>
<p>Next, Lee goes on to define coordinate charts. I won&#8217;t repeat the treatment, since he doesn&#8217;t really bring anything Merkulov hasn&#8217;t talked about in some manner or other. Atlases, smooth structures and equivalence of atlases also merits some treatment.</p>
<p>The first really new thing I find is the Lemma 1.4. Lee points out that for a topological manifold M, every smooth atlas is contained in a unique maximal smooth atlas &#8211; this is probably a rather straightforward application of <span title="Small, yellow and equivalent to the axiom of choice...">Zorn&#8217;s lemma</span>, but Lee gives an explicit construction of the unique maximal smooth atlas as theatlas of all charts that are smoothly compatible with every chart in the original atlas. There are some technicalities to be checked to verify that this is an atlas and that it is maximal; but it all boils down to &#8220;because it&#8217;s compatible anyway&#8221;. </p>
<p>Furthermore, for a second part he affirms that two smooth atlases determine the same maximal smooth atlas iff their union is a smooth atlas. The proof of this is left to the reader; but what would my blogposts be if not the reader doing the things he&#8217;s supposed to do? So here goes.<br />
Suppose two smooth atlases determine the same maximal smooth atlas. Say <img src='/latexrender/pictures/861df74596abb976c25bcec0d09e08c9.png' title='\mathcal A' alt='\mathcal A' align='middle' /> and <img src='/latexrender/pictures/ca2131fc805663dd83f22eaaaf58ad99.png' title='\mathcal B' alt='\mathcal B' align='middle' />. We want to show that then their union is a smooth atlas. Obviously their union is an atlas, so we need only verify smoothness. So take some pair of charts <img src='/latexrender/pictures/746d7de117d387303b30aed020cb00be.png' title='(U_{\mathcal A},\phi_{\mathcal A})' alt='(U_{\mathcal A},\phi_{\mathcal A})' align='middle' /> and <img src='/latexrender/pictures/c1ae57d22e7b9f24f99c63e1bb011009.png' title='(U_{\mathcal B},\phi_{\mathcal B})' alt='(U_{\mathcal B},\phi_{\mathcal B})' align='middle' />. We need to show that on the respective images of <img src='/latexrender/pictures/6b6659e882875b6004af84a52ffa731c.png' title='U_{\mathcal A}\cap U_{\mathcal B}' alt='U_{\mathcal A}\cap U_{\mathcal B}' align='middle' /> the functions <img src='/latexrender/pictures/9daaf2b36013127f54b1ee6966da6bbe.png' title='\phi_{\mathcal A}\circ\phi_{\mathcal B}^{-1}' alt='\phi_{\mathcal A}\circ\phi_{\mathcal B}^{-1}' align='middle' /> and <img src='/latexrender/pictures/9daaf2b36013127f54b1ee6966da6bbe.png' title='\phi_{\mathcal A}\circ\phi_{\mathcal B}^{-1}' alt='\phi_{\mathcal A}\circ\phi_{\mathcal B}^{-1}' align='middle' /> are smooth. So we pick some arbritrary point <img src='/latexrender/pictures/fc640cda8cc4536783d25abd022acc3a.png' title='x_0\in\phi_{\mathcal A}(U_{\mathcal A}\cap U_{\mathcal B})' alt='x_0\in\phi_{\mathcal A}(U_{\mathcal A}\cap U_{\mathcal B})' align='middle' /> and want to show smoothness at this point.<br />
But we can use the maximal smooth atlas <img src='/latexrender/pictures/2b12dc997300ecbf4be5dc306cd72ed9.png' title='\mathcal C' alt='\mathcal C' align='middle' /> now. We pick a chart <img src='/latexrender/pictures/9337e346274b76bdf92bb656ddf4c941.png' title='(U_{\mathcal C},\phi_{\mathcal C})' alt='(U_{\mathcal C},\phi_{\mathcal C})' align='middle' /> such that <img src='/latexrender/pictures/b98067b5aa601d144720976aafe9dc8a.png' title='x_0\in U_{\mathcal C}' alt='x_0\in U_{\mathcal C}' align='middle' />. Since this chart is from the maximal smooth atlas, it is compatible with both <img src='/latexrender/pictures/8fef6155248e13efded458510a8fdb2c.png' title='\mathcal A and \mathcal B' alt='\mathcal A and \mathcal B' align='middle' />. More precisely, this means that <img src='/latexrender/pictures/e71881071de4f603df160e9c90e66fc1.png' title='\phi_{\mathcal C}\circ\phi_{\mathcal A}^{-1}' alt='\phi_{\mathcal C}\circ\phi_{\mathcal A}^{-1}' align='middle' /> is smooth. So is also  <img src='/latexrender/pictures/997f46fd413d2d1c2c16335591fbe793.png' title='\phi_{\mathcal B}\circ\phi_{\mathcal C}^{-1}' alt='\phi_{\mathcal B}\circ\phi_{\mathcal C}^{-1}' align='middle' />. So if we compose these two functions, we get a new function. That takes points in <img src='/latexrender/pictures/9e7f2088ce60ec2f99f57f7dad442a81.png' title='\phi_{\mathcal A}(U_{\mathcal A}\cap U_{\mathcal B})' alt='\phi_{\mathcal A}(U_{\mathcal A}\cap U_{\mathcal B})' align='middle' /> to points in <img src='/latexrender/pictures/6733175118e546502d0f167de5eb49ba.png' title='\phi_{\mathcal B}(U_{\mathcal A}\cap U_{\mathcal B})' alt='\phi_{\mathcal B}(U_{\mathcal A}\cap U_{\mathcal B})' align='middle' />. And this function is, as it is the composition of two smooth functions, also smooth.<br />
For a different point we may have to pick a different chart from <img src='/latexrender/pictures/2b12dc997300ecbf4be5dc306cd72ed9.png' title='\mathcal C' alt='\mathcal C' align='middle' />, but since all charts in <img src='/latexrender/pictures/2b12dc997300ecbf4be5dc306cd72ed9.png' title='\mathcal C' alt='\mathcal C' align='middle' /> are smoothly compatible with all charts in both <img src='/latexrender/pictures/861df74596abb976c25bcec0d09e08c9.png' title='\mathcal A' alt='\mathcal A' align='middle' /> and <img src='/latexrender/pictures/ca2131fc805663dd83f22eaaaf58ad99.png' title='\mathcal B' alt='\mathcal B' align='middle' />, this won&#8217;t really change much of the argument. And thus we know that if both determine the same maximal atlas then their union is a smooth atlas.</p>
<p>Suppose now that the two atlases <img src='/latexrender/pictures/861df74596abb976c25bcec0d09e08c9.png' title='\mathcal A' alt='\mathcal A' align='middle' /> and <img src='/latexrender/pictures/ca2131fc805663dd83f22eaaaf58ad99.png' title='\mathcal B' alt='\mathcal B' align='middle' /> have a smooth atlas as their union. That means more specifically that all the charts in <img src='/latexrender/pictures/ca2131fc805663dd83f22eaaaf58ad99.png' title='\mathcal B' alt='\mathcal B' align='middle' /> are smoothly compatible with all charts in <img src='/latexrender/pictures/861df74596abb976c25bcec0d09e08c9.png' title='\mathcal A' alt='\mathcal A' align='middle' />, and thus that <img src='/latexrender/pictures/ca2131fc805663dd83f22eaaaf58ad99.png' title='\mathcal B' alt='\mathcal B' align='middle' /> is contained in the maximal smooth atlas containing <img src='/latexrender/pictures/861df74596abb976c25bcec0d09e08c9.png' title='\mathcal A' alt='\mathcal A' align='middle' /> and vice versa. But since the maximal smooth atlas containing a specific atlas was unique, they both have the same maximal smooth atlas.</p>
<p>And this illuminates why the interesting condition Merkulov gave was precisely that they have a smooth union.</p>
<p>Note that any manifold that can be covered by a single chart thus has a smooth structure determined in its entirety by that chart.</p>
<p>And at this point &#8211; page 11 &#8211; Lee does something that I probably will end up hating him for. He introduces the Einstein Summation Convention. It&#8217;s bad. It&#8217;s ugly. And it stands for most of the things that led to my flunking differential geometry in the first place. Boooo!</p>
<p>Another few pages yields an idiotic definition and the introduction of diffeomorphisms without telling the reader what they are. I&#8217;ll stop reading this thing now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2006/02/reading-john-m-lee-introduction-to-smooth-manifolds-1-of-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

