https://grossack.site
Quick Analysis Trick 5<p>The quarter is over, and now that I’m vaccinated (twice!) I feel comfortable
seeing people again. So I flew east coast to see my family and a bunch of friends.
Before I left, I had a few ideas for blog posts, and figured I would get around
to writing one now.</p>
<p>I’ve made it known that I struggle with analysis<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, and one manifestation of
this is a complete inability to remember elementary facts about inequalities.
It took me a long time to feel comfortable with things as basic as
“which way does the triangle inequality go?”, and until fairly recently things
like Cauchy-Schwarz were almost entirely beyond me. Over the past year or two,
I’ve been trying to answer lots of analysis questions on mse, as well as read
lots of books on analysis and solve lots of problems, and (thankfully) some of
it is starting to stick. But one inequality that I <em>always</em> seem to forget is
the <a href="https://en.wikipedia.org/wiki/Triangle_inequality#Reverse_triangle_inequality">reverse triangle inequality</a>:</p>
<div class="boxed">
<p>\(\Bigg | |x| - |y| \Bigg | \leq |x-y|\)</p>
</div>
<p>I don’t know many ways for showing a lower bound on absolute values,
but almost every time I need one, I go through the following process:</p>
<ol>
<li>“Doesn’t the reverse triangle inequality give a lower bound?”</li>
<li>“I wonder if I should use that. Let me google it!”</li>
<li>“Oh right, <em>that’s</em> what it says. How do I always forget this?”</li>
<li>“This is actually not as useful as I would have liked. Oh well.”</li>
</ol>
<p>The most recent time I went through this, something on the wikipedia page
really clicked with me, and I’m not sure why it never clicked before.
The geometric intuition<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> never really stays in my head, but for some reason
this did:</p>
<div class="boxed">
<p>The reverse triangle inequality says that the norm $\lVert \cdot \rVert$
of some vector space $X$ is 1-<a href="https://en.wikipedia.org/wiki/Lipschitz_continuity">lipschitz</a> as a function from $X \to \mathbb{R}$:</p>
\[\Bigg | \lVert x \rVert - \lVert y \rVert \Bigg | \leq \lVert x-y \rVert\]
<p>Or, even more suggestively:</p>
<p>\(d_\mathbb{R}(\lVert x \rVert, \lVert y \rVert) \leq d_X(x,y)\)</p>
</div>
<p>I’m trying to see why this is more memorable for me, and moreover why it’s
<em>suddenly</em> more memorable. Because I know that I’ve seen this before.</p>
<p>I think part of it is the visual and semantic distinction that we get by
writing $\lVert \cdot \rVert$ instead of $|\cdot|$. When everything in sight
was a real number, there were too many combinations of what we should and
shouldn’t be absolute-value-ing. As with many things in math and computer
science, taking some time to recognize the <a href="https://en.wikipedia.org/wiki/Type_system">types</a> involved in an equation
or proof, and then making sure to distinguish these types inyour mind,
helps a lot for keeping the structures straight.</p>
<p>I think another reason this is memorable is because the notion of lipschitz
maps has become something I feel familiar with. When I was taking my first
undergraduate analysis class, I really didn’t know why we should care about
the various strengthenings of continuity. Over time I’ve learned to better
appreciate their differences, and I feel like lipschitz-ness is one of the
regularity conditions that I understand best<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>. It also makes intuitive
sense that taking the norm of a vector should be a very regular operation.</p>
<p>Anyways, this isn’t so much a “trick” as a “mnemonic”, but I wanted to say
something about it anyways because I think it would have helped younger me.
At the very least, it was nice to write up a really short post with a
somewhat obvious observation. To make it somewhat more worth your time,
here’s a picture of my old cat Oreo. I got to visit her while I was visiting
<a href="https://remydavison.com">Remy</a> in New York!</p>
<p><img src="/assets/images/quick-analysis-trick-5/oreo.jpg" alt="My daughter, a gremlin" style="width: 400px; height: auto; display: block; margin-left: auto; margin-right: auto" /></p>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Though I’ve done fairly well the past two quarters, which has been a
real confidence boost… It’s feeling better, but I still don’t feel
like I understand things as well as I should, and while it’s coming
faster, I still don’t feel like it’s coming naturally…
Maybe it’s imposter syndrome? Who’s to say ¯_(ツ)_/¯ <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>The difference between two legs of a triangle must be less than than the
length of the third leg. Otherwise, by adding the length of the shorter
leg to both sides you would violate the triangle inequality. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>Not that that’s saying much. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Sun, 21 Mar 2021 00:00:00 +0000
https://grossack.site/2021/03/21/quick-analysis-trick-5.html
https://grossack.site/2021/03/21/quick-analysis-trick-5.htmlChecking Concavity with Sage<p>I haven’t been on MSE lately, because I’ve been fairly burned out from a
few weeks of more work than I’d have liked. I’m actually still catching up,
with a commutative algebra assignment that should have been done last week.
I was (very kindly) given an extension, and I’ll be finishing it soon, though.</p>
<p>I meant to do it today, but I got my second covid vaccination earlier and it
really took a lot out of me. I’m feverish and have a pretty bad migraine, so
I didn’t want to work on “real things”, but I still wanted to feel productive…
MSE it is.</p>
<p>Today someone asked <a href="https://math.stackexchange.com/q/4055724/655547">a question</a>, which again I’ll paraphrase here:</p>
<div class="boxed">
<p>Why is \(\left ( 1+\frac{1}{x} \right )^x\) <a href="https://en.wikipedia.org/wiki/Concave_function">concave</a> (on $x > 0$)?</p>
</div>
<p>It clearly <em>is</em> concave. Here’s a picture of it:</p>
<p><img src="/assets/images/sage-concave/desmos.png" /></p>
<p>Obviously it has an asymptote at $e$, and should always be $\lt e$, so
it really should be concave… showing that is a bit of a hassle, though.</p>
<p>Thankfully, we can use <a href="https://sagemath.org">sage</a> to automate away most of the difficulties. I’ll
more or less be rehashing my answer here. The idea is to put this example of
using sage “in the wild” somewhere a bit easier to find than a stray mse post.</p>
<p>Showing that a function is convex (resp. concave) is routine but tedious,
especially when that function is twice differentiable. Then we can just check
$\frac{d^2f}{dx^2} \geq 0$ (resp. $\leq 0$) on the region of interest.
The issue here, of course, is that
$\frac{d^2}{dx^2} \left ( 1 + \frac{1}{x} \right )^x$ is… unpleasant.
Thankfully, sage doesn’t care in the least! Let’s see if we can bash out
the second derivative and show it’s $\leq 0$ (whenever $x > 0$, of course).</p>
<p>We start by defining $f$ and its second derivative</p>
<div class="linked_auto">
<script type="text/x-sage">
f(x) = (1+1/x)^x
secondDerivative = diff(f,x,2)
show(secondDerivative)
</script>
</div>
<p>In a perfect world, we could just… ask sage if this is $\leq 0$.
Unfortunately, the expression is a bit too complicated, and we don’t get
a clean answer<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>:</p>
<div class="linked_auto">
<script type="text/x-sage">
solve(secondDerivative < 0, x)
</script>
</div>
<p>This gives a list of lists of domains, and if you intersect all the domains
in some fixed list, you get a region where the second derivative is $\lt 0$.
Of course, these domains are far too complicated to be useful. We’ll need to
try something else.</p>
<p>Let’s look at the second derivative again.
We as humans can see how to clean it up a little, so let’s do that first:</p>
\[\left ( 1 + \frac{1}{x} \right )^x
\left [
\left ( \frac{1}{1+x} - \log \left ( 1 + \frac{1}{x} \right ) \right )^2 -
\frac{1}{x^3 + 2x^2 + x}
\right ]\]
<p>Since $(1 + 1/x)^x$ is always positive when $x$ is, the sign of this expression
is controlled by the second factor. We might try to ask sage about the second
factor again, but you can check that it’s still too complicated for sage to
handle it automatically. We’ll need to simplify the expression if we want
to proceed.</p>
<p>One obvious way we might try to simplify things is by turning our expression
into a rational function. After all, polynomials are more combinatorial
in nature than things like $\log$, and so sage is better equipped to handle
them. Your first instinct might be to kill the $\log$s with taylor series,
since $x - \frac{x^2}{2} \leq \log(1+x)$. This will work, but we can be a bit
more efficient. It’s <a href="https://math.stackexchange.com/q/324345/655547">well known</a> that</p>
\[\frac{x}{1+x} \leq \log(1+x) \leq x\]
<p>So plugging in $1/x$ and negating, we see</p>
\[-\log(1+1/x) \leq - \frac{1}{1+x}\]
<p>But that means our expression of interest is upper bounded by</p>
\[\left ( \frac{1}{1+x} - \frac{1}{1+x} \right )^2 - \frac{1}{x^3 + 2x^2 + x}\]
<p>and we’ve reduced the problem to showing</p>
\[- \frac{1}{x^3 + 2x^2 + x} \lt 0 \quad \quad (\text{when } x \gt 0)\]
<p>and in the interest of offloading as much thinking as possible to sage,
we see</p>
<div class="linked_auto">
<script type="text/x-sage">
assume(x > 0)
bool(-1/(x^3 + 2*x^2 + x) < 0)
</script>
</div>
<p>and so $f$ is, in fact, concave.</p>
<hr />
<p>This was fairly painless, but we got pretty lucky with that estimate for
$\log$. I’m curious if there’s a way to completely automate this process,
and to remove all need for creativity. If anyone knows a simpler way to do
this, where we can just directly ask if the second derivative is negative,
I would love to hear about it!</p>
<p>We’re at least a little bit out of luck, since <a href="https://en.wikipedia.org/wiki/Richardson%27s_theorem">Richardson’s Theorem</a>
shows that it’s undecidable whether certain (very nice!) functions are
nonnegative. As an easy exercise, can you turn this into a proof that
checking convexity is undecidable on some similarly nice class of functions?</p>
<p>Even though logicians came to ruin the fun
(as we have a reputation for doing, unfortunately…),
I’m curious if any kind of result is possible. Maybe there’s some
hacky solution that works fairly well in practice?
Approximating every nonpolynomial by the first, say, 50 terms of its
taylor series comes to mind, but I’m currently struggling to get sage
to expand and simplify expressions in way that makes me happy, so
manipulating huge expressions like that is, at least for now, a bit beyond me<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>.</p>
<p>Again, all ideas are welcome ^_^</p>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Another thing I tried was to get sage to do <em>everything</em> for us. But for
some reason <code class="language-plaintext highlighter-rouge">bool(secondDerivative < 0)</code> returns false, even when we
<code class="language-plaintext highlighter-rouge">assume(x > 0)</code>… I suspect this is (again) because our expression is too
complicated. After all, it seems like there are <a href="https://ask.sagemath.org/question/42825/assumptions-and-inequalities/">issues</a> with <em>much</em>
simpler expressions than this one. If anyone knows how to make this kind
of direct query work, I would love to hear about it! <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>Wow. I know I speak (and write) in run-on sentences, but this one’s on
another level. I feel like I need a swear jar but for commas. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Tue, 09 Mar 2021 00:00:00 +0000
https://grossack.site/2021/03/09/sage-concave.html
https://grossack.site/2021/03/09/sage-concave.htmlTalk - Problem Solving Without Ansibles -- An Introduction to Communication Complexity<p>Wow, two talk posts in one day! Thankfully the actual talks were a week apart!</p>
<p>Earlier today I gave <em>another</em> talk in the grad student seminar here at UCR.
I wanted to break out of my logician mold a <em>little</em> bit, and so I decided to
talk about a result which absolutely blew my mind when I first saw it:
the (public coin) randomized communication complexity of equality is $O(1)$
for any fixed error tolerance $\epsilon$!</p>
<p>Since communication complexity is all about measuring the number of messages
you send, I thought a fun framing device would be to imagine Alyss and Bob on
separate planets. If they’re very far from each other, but they each have the
computational power of an entire planet at their disposal, then it makes sense
to measure communication as the limiting factor in their computation. This was
in part inspired by <a href="http://www.cs.cmu.edu/~odonnell/">Ryan O’Donnell</a>’s excellent videogame themed talk
(<a href="https://www.youtube.com/watch?v=4B0jwIu9fPs">here</a>), and indeed I tried to make my slides in google slides instead of
beamer as an homage to him.</p>
<p>It definitely had advantages and disadvantages, but I liked a lot of the
flexibility it offers. I think he does his in powerpoint, which might solve
some of my bigger gripes. Notably drawing on the slides directly was impossible
(because any time you release your pen, the scribble tool closes itself…
that really needs a rethink on google’s end), so I had to do all the handwriting
in gimp, then insert the writing as an image in google slides. This was annoying
at first, but I gradually got into the flow of it. The most damning problem was
how annoying it is to write mathematical symbols. Every single $\epsilon$ gave
me a headache, and my entire browser lagged anytime the symbols menu was open.
I know there are some add-ons which might make this easier, but nothing can
beat a raw latex engine. In a more technical talk, I don’t think I could have
possibly made the slides in this way.</p>
<p>All in all, I was really pleased with how the talk went, though! I think it’s
an interesting enough topic to stand on its own, and it was fun getting to
evangleize computer science to a crowd of mathematicians. CMU’s math department
obviously worked quite closely with its CS department, and I forget sometimes
that that isn’t the norm. I knew going into the talk that I wanted to spend
some time talking about an interpretation of this using error-correcting codes
(<a href="https://en.wikipedia.org/wiki/Hamming_code">Hamming Codes</a> in particular), but I ended up scrapping it and not writing
the slides for it. In hindsight, I should have just made the slides, because
as soon as someone asked a question that even <em>hinted</em> at this idea, I pounced
on it and went on a mild tangent. I suspect I lost a lot of people during that,
and it would have been a lot easier to retain them if I’d just organized the
big ideas into slides. Oh well, I’m not going to fault past my too much for
their laziness.</p>
<p>All in all, I really enjoyed giving this talk, and it seemed like the
audience really enjoyed watching it. This was almost certainly due to the
influence of Ryan’s lecturing style, and anyone familiar with his (excellent)
“Theorist’s Toolkit” lectures (which I reference in the talk, and which you
can find <a href="https://www.youtube.com/playlist?list=PLm3J0oaFux3ZYpFLwwrlv_EHH9wtH6pnX">here</a>) will recognize his impact.</p>
<p>With that out of the way, here are the things:</p>
<hr />
<p>Problem Solving Without Ansibles: An Introduction to Communication Complexity</p>
<p>In the world of Science Fiction, an “ansible” is a device that allows for
faster-than-light communication. Without ansibles, interstellar travel
puts an interesting constraint on computation. If two planets want to
collaborate on solving a problem, the obstruction will likely not be the
computation that either planet does individually. Instead, what matters
is the <em>Communication Complexity</em> which tracks the amount of messages
the planets have to send each other to solve their problem. In this talk
we will solve a prototypical problem in communication complexity. But be
warned: the answer may surprise you!</p>
<p>You can find the slides <a href="/assets/docs/problem-solving-without-ansibles/handout.pdf">here</a></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ImCFucEag3I" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
Fri, 05 Mar 2021 00:00:00 +0000
https://grossack.site/2021/03/05/problem-solving-without-ansibles.html
https://grossack.site/2021/03/05/problem-solving-without-ansibles.htmlTalk - Categories, Modalities, and Type Theories: Oh My<p>Last week I gave a talk at CMU’s Graduate Student Workshop on
Homotopy Type Theory (HoTT). You can see the schedule of talks
<a href="https://cmu-hott.github.io/workshop2021.html">here</a>.</p>
<p>A good friend of mine from undergrad, <a href="https://jacobneu.github.io/">Jacob Neumann</a>,
reached out to me about speaking here, and I super appreciate it.
It was great to see some familiar faces from the HoTT group at CMU,
and the talks were well worth the 8am start time<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>! Jacob’s talk on
<a href="https://ncatlab.org/nlab/show/allegory">Allegories</a> was well exposited, though it was regrettably cut short
before we could get to the fun modal logic interpretation. Similarly,
<a href="http://www.andrew.cmu.edu/user/wcaldwel/">Wes Caldwell</a>’s talk was a return to form for HoTT! It was cool seeing
some heavy duty algebraic topology recast in this language, even if the
ending was a bit beyond me right now. Steve Awodey was certainly impressed by
it, so I hope Wes is proud ^_^. I was upset to have missed
<a href="https://colinzwanziger.com/">Colin Zwanziger</a>’s talk, but I couldn’t miss the GSS at UCR<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>.</p>
<p>I felt like I should present some thoughts of my own at a seminar like
this one, and the subject matter is <em>just</em> on the boundary of what I feel
comfortable with. Since the organizers asked for a 30-45 minute talk, I
decided to stay on the shorter side:
“Better to remain silent and be thought a fool than to speak and remove all doubt”,
you know?</p>
<p>One idea that had been on my mind for a little while was making
sense of first order modal logic using presheaf categories. In particular,
for <a href="https://en.wikipedia.org/wiki/Algebraic_theory">algebraic theories</a>, we can view a model in a presheaf category as
a presheaf of models. Then if $\mathfrak{F}$ is a kripke frame for $\mathsf{S4}$,
it is a preorder and thus a category in a natural way. So we should be able
to use modal logic to talk about models in $\mathsf{Set}^\mathfrak{F}$.</p>
<p>This idea was (and is) a bit half-baked, but it was an interesting and stressful
feeling to talk about ideas of my own (particularly ideas that haven’t been
fully realized yet) in a talk. <em>Particluarly</em> a talk with so many people I
respect in attendence. I’m really grateful to the organizers and the attendees
for making it such a safe space for me to discuss these things, even if I’m sure
a lot of what I said was obvious to many people in the room. I really miss the
CMU HoTT group, and I might start attending the seminars again since they’re
online anyways.</p>
<p>I knew my idea wasn’t fully fleshed out<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>, but I also knew that something
like it must be right. So I took a moment to ask the audience if they knew
of any references for similar ideas. I had found a paper of Awodey and Kishida<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup>
which uses topological spaces and a kind of “Étale Space” version of this idea,
but nothing which used presheaves directly. Thankfully, the audience gave me
a veritable barrage of papers to read
(many of which I’m moving to the front of my, ever increasing “to read pile”)!
For the interested:</p>
<ul>
<li><a href="https://www.andrew.cmu.edu/user/awodey/students/kishida.pdf">Kishida’s Thesis</a></li>
<li><a href="https://arxiv.org/abs/1403.0020">An extension to HOL</a> (this one was mentioned twice, so it <em>must</em> be good)</li>
<li><a href="https://www.sciencedirect.com/science/article/pii/S1571066111001393">Another Kishida paper</a>
(I’d actually skimmed this one already, but I’m including it for completeness)</li>
<li><a href="https://www.sciencedirect.com/science/article/pii/0168007293000854">A 77 pager on categorical modal logic</a>
(This is one that I’m definitely going to try to get through soon)</li>
</ul>
<p>Even if last friday was <em>extremely</em> long, with seminars straight through from
8am - 3pm, then teaching from 3-5, it was entirely worth it! And now, for the
abstract and recording (as usual)</p>
<hr />
<p>Categories, Modalities, and Type Theories: Oh my!</p>
<p>Category theory and logic have a tight interplay, with
structured categories providing semantics for certain
logics, and “internal logics” providing a useful language for
speaking about structured categories. In this introductory
talk we will survey both directions of this correspondence
from the point of view of modal logic.</p>
<p>The slides are <a href="/assets/docs/categories-modalities-and-type-theories/handout.pdf">here</a>,
and the recording is below.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/qh96mjSmEyI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Sometimes living on the west coast has its down sides… <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>And I’m <em>extra</em> glad I went that week, because it was Jonathan Alcaraz’s
talk on LO Groups, which led me to a problem I talked about
<a href="/2021/02/26/lo-groups">last week</a> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>Even calling it that is kind. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>Topology and Modality: the Topological Interpretation of First-Order Modal Logic,
DOI: 10.1017/S1755020308080143 <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Fri, 05 Mar 2021 00:00:00 +0000
https://grossack.site/2021/03/05/categories-modalities-and-type-theories.html
https://grossack.site/2021/03/05/categories-modalities-and-type-theories.htmlCohomology Intuitively<p>So I was on mse the other day…</p>
<p><img src="/assets/images/cohomology-intuitively/letterkenny.jpg" /></p>
<p>Anyways, somebody <a href="https://math.stackexchange.com/q/4011756/655547">asked a question</a> about finding generators
in cohomology groups. I think understanding how to compute the generators
is important, but it’s equally important to understand what that computation
is doing. Regrettably, while there’s some very nice visual intuition<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> for
homology classes and what they represent, cohomology groups tend to feel a bit
more abstract.</p>
<p>This post is going to be an extension of the answer I gave on the linked
question. Cohomology is a big subject, and there were a lot of things that
I wanted to include in that answer that I didn’t have space for. A blog post
is a much more reasonable setting for something a bit more rambling anyways.
That said, everything contained in that answer will <em>also</em> be discussed here,
so it’s far from prerequisite reading.</p>
<p>In particular, we’re going to go over <a href="https://en.wikipedia.org/wiki/Simplicial_homology">Simplicial Cohomology</a><sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>,
but we’ll steal language from <a href="https://en.wikipedia.org/wiki/De_Rham_cohomology">De Rham Cohomology</a>, and our first
example will be a kind of informal cohomology just to get the idea across.</p>
<p>There’s a really nice example that <a href="https://www.math.cmu.edu/~ffrick/">Florian Frick</a> gave when I took his
algebraic topology class, and it was such good pedagogy I have to evangelize it.
The idea is to study simplicial cohomology for graphs – it turns out to say
something which is very down to earth, and we can then view cohomology of more
complicated simplicial complexes as a generalization of this.</p>
<p>Graphs are one of very few things that we can really understand, and so using
them as a case study for more complex theorems tends to be a good idea.
As such, we’ll study what cohomology on graphs is all about, and there will
even be some sage code at the bottom so you can check some small cases yourself!</p>
<p>With that out of the way, let’s get started ^_^</p>
<hr />
<p>First things first. Let’s give a high level description of what
cohomology does for us.</p>
<p>Say you have a geometric object, and you want to define a function
on it. This is a very general framework, and “geometric” can mean a lot
of different things. Maybe you want to define a continuous function on some
topological space. Or perhaps you’re interested in smooth functions on a
manifold. The same idea works for defining functions on schemes as well,
and the rabbit hole seems to go endlessly deep!</p>
<div class="boxed">
<p>For concreteness, let’s say we want to define a square root function
on the complex plane. So our “geometric object” will be $\mathbb{C}$
and our goal will be to define a continuous $\sqrt{\cdot}$ on it.</p>
</div>
<p>It’s often the case that you know what you <em>want</em> your function to do
somewhere (that’s why we want to define it at all!), and then you would like
to <em>extend</em> that function to a function defined everywhere.</p>
<div class="boxed">
<p>For us, then, we know we want $\sqrt{1} = 1$.</p>
<p>This is an arbitrary choice, but it certainly seems like a natural one.</p>
<p>We now want to extend $\sqrt{\cdot}$ (continuously!) to the rest of the plane.</p>
</div>
<p>It is <em>also</em> often the case that the continuity/smothness/etc. constraint
means that there’s only one way to define your function locally. So it
should be “easy” (for a certain notion of easy) to do the extension in a small
neighborhood of anywhere it’s already been defined.</p>
<div class="boxed">
<p>So we know that $\sqrt{1} = 1$. What should $\sqrt{i}$ be?</p>
<p>Well, the real part of $\sqrt{1} = 1$ is positive. So if we want
$\sqrt{\cdot}$ to be continuous we had better make sure $\sqrt{i}$
has potiive real part as well
(otherwise we would contradict the intermediate value theorem).</p>
<p>So we’re forced into defining $\sqrt{i} = \frac{1 + i}{\sqrt{2}}$.</p>
</div>
<p>However, sometimes the geometry of your space prevents you from gluing all
of these small easy solutions together. You might have all of the pieces lying
around to build your function, but the pieces don’t quite fit together right.</p>
<div class="boxed">
<p>As before, we know $\sqrt{1} = 1$, and this forces
$\sqrt{i} = \frac{1 + i}{\sqrt{2}}$. This has positive imaginary part.</p>
<p>If we want to extend this continuously from $\sqrt{i}$ to $\sqrt{-1}$,
we have no choice but to define $\sqrt{-1} = i$
(which also has positive imaginary part).
This is the intermediate value theorem again.</p>
<p>But now we can go from $\sqrt{-1}$ to $\sqrt{-i}$. Again, we have to keep
the imaginary part positive, and we’re forced into choosing
$\sqrt{-i} = \frac{-1 + i}{\sqrt{2}}$.</p>
<p>And lastly, we go from $\sqrt{-i}$ back to $1$. The real part is negative
now, and we’re forced by continuity into choosing $\sqrt{1} = -1$…</p>
<p>Uh oh.</p>
</div>
<p>Obviously the above argument isn’t entirely rigorous. That said, it does a
good job outlining what problem cohomology solves. We had only one choice
at every step, and at every step nothing could go wrong. Yet somehow, when
we got back where we started, our function was no longer well defined.
We thus come to the following obvious question:</p>
<div class="boxed">
<p>If you have a way to solve your problem <em>locally</em>, can we tell if those local
solutions patch together to form a <em>global</em> solution?</p>
</div>
<p>It turns out the answer is yes! Our local solutions come from a global
solution exactly when the “cohomology class” associated to our function
vanishes<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>.</p>
<p>There’s a bit of a zoo of cohomology theories depending on exactly what kinds
of functions you’re trying to define<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup>. They all work in a similar way, though:
your local solutitions piece together exactly when their cohomology class is $0$.
So the nonzero cohomology classes are all of the different “obstructions” to
piecing your solutions together. Rather magically, cohomology groups tend to
be finite dimensional, and so there are finitely many “basic” obstructions
which are responsible for all the ways you might fail to glue your pieces
together.</p>
<p><span class="defn">De Rham Cohomology</span> makes this precise by looking at
certain differential equations which can be solved locally. Then the cohomology
theory tells us which differential equations admit a global solution. In this
post, though, we’re going to spend our time thinking about
<span class="defn">Simplicial Cohomology</span>. Simplicial Cohomology doesn’t
have quite as snappy a description, but it’s more combinatorial in nature,
which makes it easier to play around with.</p>
<hr />
<p>Actually setting up cohomology requires a fair bit of machinery, so before
go through the formalities I want to take a second to detail the problem
we’ll solve.</p>
<p>Take your favorite graph, but make sure you label the vertices.
My favorite graph (at least for the purposes of explanation) is this one:</p>
<p><img src="/assets/images/cohomology-intuitively/naked-graph.png" width="50%" /></p>
<p>Notice the edges are always oriented from the smaller vertex to the bigger one.
This is not an accident, and keeping a consistent choice of orientation is
important for what follows. The simplest approach is to order your vertices,
then follow the convention of $\text{small} \to \text{large}$</p>
<p>Now our problem will be to “integrate” a function defined on the edges
to one defined on the vertices. What do I mean by this? Let’s see some
concrete examples:</p>
<p><img src="/assets/images/cohomology-intuitively/coboundary.png" width="50%" /></p>
<p>Here we see a function defined on the edges. Indeed, we could write this
more formally as</p>
\[\begin{aligned}
f(e_{01}) &= 5 \\
f(e_{02}) &= 5 \\
f(e_{12}) &= 0
\end{aligned}\]
<p>The goal now is to find a function on the vertices whose difference
along each edge agrees with our function. This is what I mean when I
say we’re “integrating” this edge function to the vertices.
It’s not hard to see that the following works:</p>
<p><img src="/assets/images/cohomology-intuitively/coboundary-integrated.png" width="50%" /></p>
<p>Again, if you like symbols, we can write this as</p>
\[\begin{aligned}
F(v_0) &= 3 \\
F(v_1) &= 8 \\
F(v_2) &= 8 \\
\end{aligned}\]
<p>Then we see for each edge $f(e_{ij}) = F(v_j) - F(v_i)$. This may seem
like a weird problem to try and solve, but at least we solved it!
Notice we pick up an arbitrary constant when we do this –
We can set $v_0 = C$ for any $C$ we want as long as $v_1 = v_2 = C+5$.
This is one parallel with integration, and helps justify our language.</p>
<p>As some more justification, notice this obeys a kind of “fundamental theorem
of calculus”: If you want to know the total edge values along some path,
\(\displaystyle \sum_{v_{k_1} \to v_{k_2} \to \ldots \to v_{k_n}} f(e_{k_i, k_{i+1}})\),
that turns out to be exactly $F(k_n) - F(k_1)$ for some “antiderivative” $F$ of $f$.</p>
<div class="boxed">
<p>As a (fun?) exercise, you might try to formulate and prove an analogue of the
other half of the fundamental theorem of calculus. That is, can you formulate
a kind of “derivative” $d$ which takes functions on the vertices to functions
on the edges? Once you have, can you show that differentiating an antideriavtive
gets you your original function?</p>
<p>For (entirely imaginary) bonus points, you might try to come up with a
parallel between edge functions of the form $dF$ (that is, edge functions
which have an antiderivative) and <a href="https://en.wikipedia.org/wiki/Conservative_vector_field">conservative vector fields</a>.</p>
</div>
<p>Let’s look at a different function now:</p>
<p><img src="/assets/images/cohomology-intuitively/cocycle.png" width="50%" /></p>
<p>You can quickly convince yourself that no matter how hard you try,
you can’t integrate this function. There is no antiderivative in the sense that
no function on the vertices can possibly be compatible with our function on the edges.</p>
<p>After all, say we assign $v_0$ the value $C$. Then $v_1$ is forced into
the value $C+5$ in order to agree with $e_{01}$. But then because of
$e_{12}$ we must set $v_2 = C+5$ as well, and uh oh! Our hand was forced
at every step, but looking at $e_{02}$ we see were out of luck.</p>
<p>This should feel at least superficially similar to the $\sqrt{\cdot}$
example from earlier. At each step along the way, it’s easy to solve
our problem: If you know what $F(v_i)$ is, and you see an edge $v_i \to v_j$,
just assign $F(v_j)$ to $F(v_i) + f(e_{ij})$. The problem comes from making
these choices <em>consistently</em>, which turns out to not always be possible!</p>
<div class="boxed">
<p>As an aside, you can see that the problem comes from the fact that our
graph has a cycle in it. Can you show that, on an acyclic graph,
<em>every</em> edge function can be integrated to a function on the vertices?</p>
<p>We will soon see that the functions which can’t be integrated are
(modulo an equivalence relation) exactly the cohomology classes. So the
presence of a function which can’t be integrated means there must be a cycle
in our graph, and it is in this sense that cohomology “detects holes”.</p>
<p>This is entirely analogous to the fact that every (irrotational) vector
field on a simply connected domain is conservative. It seems the presence
of some “hole” is the reason some functions don’t have primitives.</p>
</div>
<hr />
<p>Ok, so now we know what problem we’re trying to solve. When can we
find an antiderivative for one of these edge functions? The machinery ends up
being a bit complicated, but that’s in part because we’re working with
graphs, which are one dimensional simplicial complexes.
This <em>exact same setup</em> works for spaces of arbitrary dimension,
so it makes sense that it would feel a bit overpowered for our comparatively
tiny example.</p>
<p>First things first, we look at the <a href="https://en.wikipedia.org/wiki/Free_abelian_group">free abelian groups</a> generated
by our $n$-dimensional cells. For us, we only have $0$-dimensional vertices
and $1$-dimensional edges. So we have to consider two groups:</p>
\[\mathbb{Z}E \text{ and } \mathbb{Z}V\]
<p>For the example from before, that means</p>
\[\mathbb{Z} \{ e_{01}, e_{12}, e_{02} \} \text{ and } \mathbb{Z} \{ v_0, v_1, v_2 \}\]
<p>which are both isomorphic to $\mathbb{Z} \oplus \mathbb{Z} \oplus \mathbb{Z}$.</p>
<p>Second things second. We want to <em>connect</em> these two groups together in a way
that reflects the combinatorial structure. We do this with the
<span class="defn">Boundary Map</span> $\partial : \mathbb{Z}E \to \mathbb{Z}V$.
This map takes an edge to its “boundary”, so $\partial e_{01} = v_1 - v_0$.
Since we have a basis floating around anyways, it’s convenient to represent
this map by a matrix:</p>
\[\partial =
\begin{pmatrix}
-1 & 0 & -1 \\
1 & -1 & 0 \\
0 & 1 & 1
\end{pmatrix}\]
<p>So for instance,</p>
\[\partial e_{01} =
\begin{pmatrix}
-1 & 0 & -1 \\
1 & -1 & 0 \\
0 & 1 & 1
\end{pmatrix}
\begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} =
\begin{pmatrix} -1 \\ 1 \\ 0 \end{pmatrix} =
v_1 - v_0\]
<p>Now our groups assemble into a <span class="defn">Chain Complex</span>:</p>
\[\cdots \to
0 \to
0 \to
\mathbb{Z}E \overset{\partial}{\longrightarrow}
\mathbb{Z}V\]
<p>The extra groups $0$ correspond to higher dimensional simplices that
aren’t present for us. If we filled in our cycle with a $2$-dimensional
triangular <em>face</em>, then we would have an extra group $\mathbb{Z}F$ and
an extra map (which is <em>also</em> called $\partial$, rather abusively)
from $\mathbb{Z}F \to \mathbb{Z}E$ which takes a face to its boundary
(this might also help explain the term “boundary”). Then if we had a
“cycle” of faces, we could fill them in with a (solid) tetrahedron.
So we would have a new group $\mathbb{Z}T$, equipped with a map
$\partial : \mathbb{Z}T \to \mathbb{Z}F$ taking each tetrahedron to
its boundary of faces. Of course, this goes on and on into higher and
higher dimensions<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup>.</p>
<p>There’s actually a technical condition to be a chain complex that’s
automatically satisfied for us because our chain only has one interesting
“link”. Given an $n+2$-dimensional simplex $\sigma$, we need to know that
$\partial \partial \sigma = 0$.
I won’t say much more about it now, but I might write a blog post
giving examples of higher-dimensional simplicial cohomology at some point.
When that happens, we’ll have no choice but to go into more detail.</p>
<div class="boxed">
<p>As a quick exercise:</p>
<p>What is the boundary $\partial (e_{01} + e_{12})$? What, intuitively,
does $e_{01} + e_{12}$ represent? Does it make sense why the <em>boundary</em> of
this figure should be what it is?</p>
<p>What about $\partial (e_{01} + e_{12} - e_{02})$? Again, what does
$e_{01} + e_{12} - e_{02}$ represent? Does it make sense why
the <em>boundary</em> of this figure should be what it is?</p>
</div>
<p>So we know that elements of $\mathbb{Z}E$ (resp. $\mathbb{Z}V$)
represent (linear combinations of) edges (resp. vertices). Of course,
we want to look at <em>functions</em> defined on the edges and vertices.
So our next step is to <em>dualize</em> this chain:</p>
\[\cdots \leftarrow
\text{Hom}(0, \mathbb{R}) \leftarrow
\text{Hom}(0, \mathbb{R}) \leftarrow
\text{Hom}(\mathbb{Z}E, \mathbb{R}) \overset{\partial^T}{\longleftarrow}
\text{Hom}(\mathbb{Z}V, \mathbb{R})\]
<p>We’re now looking at all (linear) functions from
$\mathbb{Z}E \to \mathbb{R}$ (resp. $\mathbb{Z}V \to \mathbb{R}$).
By the universal property of free abelian groups, though, we know
that the functions $\mathbb{Z}E \to \mathbb{R}$ correspond exactly
to the functions $E \to \mathbb{R}$ (extended linearly).</p>
<p>Moreover, our boundary operator $\partial$ has become a <em>coboundary</em>
operator $\partial^T$ that points the other direction<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote" rel="footnote">6</a></sup>. Here if
$F : V \to \mathbb{R}$ then we define $\partial^T f : E \to \mathbb{R}$ by</p>
\[(\partial^T F) (e) = F(\partial e)\]
<p>Moreover, our notation $\partial^T$ is not misleading.
$\text{Hom}(\mathbb{Z}V, \mathbb{R})$ has a basis of characteristic functions</p>
\[\{ \chi_{v_0}, \chi_{v_1}, \chi_{v_2} \}\]
<p>where</p>
\[\chi_{v_i}(v_j) = \begin{cases} 1 & i=j \\ 0 & i \neq j \end{cases}\]
<p>Similarly $\text{Hom}(\mathbb{Z}E, \mathbb{R})$ has a basis of characteristic
functions, and it turns out that, with respect to these “dual bases”, the map
$\partial^T$ is actually represented by the transpose of $\partial$!</p>
<div class="boxed">
<p>If you haven’t seen this before, you should convince yourself that
it’s true. Remember that the transpose of a matrix has
<a href="https://en.wikipedia.org/wiki/Transpose_of_a_linear_map">something to do with</a> dualizing.</p>
<p>Moreover, you should check that a function $f$ on the edges
is in the image of $\partial^T$ exactly when it can be integrated.
Moreover, if $f = \partial^T F$, then $F$ <em>is</em> an antiderivative
for $f$.</p>
</div>
<p>We’re in the home stretch! The second half of that box alludes to
something important: A function $f$ can be integrated exactly when
it is in the image of $\partial^T$. With this in mind, we’re finally
led to the definition of the cohomlogy group of our graph:</p>
<p>Since the only map $0 \to \mathbb{R}$ is the trivial one, we can
rewrite our complex as:</p>
\[\cdots \overset{0}{\leftarrow}
0 \overset{0}{\leftarrow}
0 \overset{0}{\leftarrow}
\text{Hom}(\mathbb{Z}E, \mathbb{R}) \overset{\partial^T}{\longleftarrow}
\text{Hom}(\mathbb{Z}j, \mathbb{R})\]
<p>Then we define<sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">7</a></sup></p>
\[H^1 =
\frac
{
\text{Ker}\big ( \partial^T : \text{Hom}(\mathbb{Z}E, \mathbb{R}) \to 0 \big )
}{
\text{Im} \big ( \partial^T : \text{Hom}(\mathbb{Z}V, \mathbb{R}) \to \text{Hom}(\mathbb{Z}E, \mathbb{R}) \big )
}\]
<p>Since there are no two dimensional faces, $\partial^T : \mathbb{Z}E \to 0$
is the trivial map, and so its kernel is everything. In light of this,
we see a slightly simpler definition of $H^1$:</p>
\[H^1 =
\frac
{
\text{Hom}(\mathbb{Z}E, \mathbb{R})
}{
\text{Im} \big ( \partial^T : \text{Hom}(\mathbb{Z}V, \mathbb{R}) \to \text{Hom}(\mathbb{Z}E, \mathbb{R}) \big )
}\]
<p>This says the elements of $H^1$ are exactly the functions on edges, but
we’ve quotiented out by all the functions that we can integrate to the vertices!
So if we want to check if a function can be integrated, we just compute its
cohomology class and check if it’s $0$.</p>
<p>Moreover, the <em>basis</em> of $H^1$ as an $\mathbb{R}$-vector space give us
a collection of “basic” non-integrable functions. Then <em>every</em> function
on the edges can be written as an integrable one, plus some linear
combination of the basic nonintegrable ones. This dramatically reduces
the number of things we have to think about! From the point of view of
integration, we only need to worry about the “good” functions
(which admit antiderivatives) and (typically finitely many) “bad”
functions which we can handle on a case-by-case basis.</p>
<div class="boxed">
<p>If we put $0$s to the right of $\mathbb{Z}V$ as well as to the left of
$\mathbb{Z}E$, we can also look at</p>
\[H^0 =
\frac
{
\text{Ker}\big ( \partial^T : \text{Hom}(\mathbb{Z}V, \mathbb{R}) \to \text{Hom}(\mathbb{Z}E, \mathbb{R}) \big )
}{
\text{Im} \big ( \partial^T : 0 \to \text{Hom}(\mathbb{Z}V, \mathbb{R}) \big )
} =
\text{Ker}\big ( \partial^T : \text{Hom}(\mathbb{Z}V, \mathbb{R}) \to \text{Hom}(\mathbb{Z}E, \mathbb{R}) \big )\]
<p>What is the dimension of $H^0$ in our example? What about for a graph with
multiple connected components? In this sense, $H^0$ detects “$0$-dimensional holes”.</p>
</div>
<hr />
<p>We’ve spent some time now talking about what cohomology is. But again,
part of its power comes from how <em>computable</em> it is. Without the exposition,
you can see it’s really a three step process:</p>
<ol>
<li>
<p>Turn your combinatorial data into a chain complex by taking free
abelian groups and writing down boundary matrices $\partial$.</p>
</li>
<li>
<p>Dualize by hitting each group with $\text{Hom}(\cdot, \mathbb{R})$</p>
</li>
<li>
<p>Compute the kernels and images of $\partial^T$, then take quotients.</p>
</li>
</ol>
<p>Steps $1$ and $2$ should feel very good, and hopefully you’re aware that
taking kernels and images of a linear map <em>should</em> be easy
(even if I know I’m pretty rusty). It turns out computing a vector space
quotient is <em>also</em> easy, though it’s much less widely taught. That doesn’t
matter, though, since <a href="https://www.sagemath.org">sage</a> absolutely remmebers
how to do it.</p>
<p>Since it’s so computable, and the best way to gain intuition for things
is to work through examples, I’ve included some code to do just that!</p>
<hr />
<div class="boxed">
<p>Enter a description of a graph, and then try to figure out what you think
the cohomology should be.</p>
<p>See if you can find geometric features of your graph which make the
dimension obvious! If you want a bonus challenge, can you guess what the
generators will be? Keep in mind there’s lots of generating sets, so you
may get a different answer from what sage tells you even if you’re right.</p>
<p>You might also try to <em>implement</em> the algorithm we described yourself,
at least for simple cases like graphs. You can then check yourself against
the built in sage code below!</p>
</div>
<div class="linked_auto">
<script type="text/x-sage">
# Write the edges in the box.
# You can add isolated vertices by including
# an 'edge' with only one vertex
@interact
def _(Simplices = input_box([["a"],["b","c"],["c","d"],["b","d"]], width=50), auto_update=False):
show("The graph is:")
S = SimplicialComplex(Simplices)
show(S.graph()) # It looks like there's no builtin way to draw complexes...
show("The chain complex is:")
# we did it over the reals in the post,
# but if we use the reals here, sage will
# print 1.00000000000000 instead of 1...
# so we're using the rationals instead
C = S.chain_complex(base_ring=QQ)
# mathjax uses its own font and I'm too lazy to change it
# but it's not monospace, so the ascii_art looks silly
# when we `show` it...
# the solution is to print it instead, since I have
# control over non-mathjax fonts.
# but printing doesn't flush the output buffer, so
# things show up in a silly order!
# we can fix this by manually flushing the buffer ourselves.
# this means the cell complexes are going to be left-aligned, though
# which we'll just have to deal with.
print(ascii_art(C))
sys.stdout.flush()
show("Which dualizes to:")
Cdual = C.dual()
print(ascii_art(Cdual))
sys.stdout.flush()
show("So the cohomology is:")
# the cohomology of the original complex is
# exactly the homology of the dual complex.
H1 = Cdual.homology(deg=1,generators=True)
show(QQ^(len(H1)))
# Remember, the outputs here represent functions!
# The entry in position i is the value that our
# function assigns edge i
show("With generators:")
for g in H1:
show(g[1].vector(1))
</script>
</div>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>See, for instance, <a href="https://jeremykun.com/2013/04/03/homology-theory-a-primer/">this</a>
wonderful series by Jeremy Kun, and even the
<a href="https://en.wikipedia.org/wiki/Homology_(mathematics)#Background">wikipedia page</a>.
The basic idea is that homology groups correspond to “holes” in your space.
These correspond to subsurfaces that aren’t “filled in”. That is, they
aren’t the boundary of another subsurface. This is where the “boundary”
terminology comes from. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>I know this is a link to simplicial <em>homology</em>, but there’s no
good overview page (at least on the first page of google) for
simplicial cohomology. It’s close enough, though, especially since
we’re going to be spending a lot of time talking about simplicial
cohomology in this post. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>If you’ve heard of <a href="https://en.wikipedia.org/wiki/Sheaf_(mathematics)">sheaves</a>
before, this is also why we care about sheaves! They are the right
“data structure” for keeping track of these “locally defined functions”
that we’ve been talking about. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>We can tell we’re onto something important, though, because for nice
spaces, all the different definitions secretly agree! Often when you
have a topic that is very robust under changes of definition, it means
you’re studying something real. We see a similar robustness in, for
instance, the notion of computable function. There’s at least a half
dozen useful definitions of computability, and it’s often useful to
switch between them fluidly to solve a given problem. Analogously, we
have a bunch of definitions of cohomology theories which are known to
be equivalent in many contexts. It’s similarly useful to keep multiple
in your head at once and use the one best suited to a given problem. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:5" role="doc-endnote">
<p>For $\partial$ from edges to vertices, we know what our orientation
should be (always subtract the low vertex from the high vertex),
but it’s less clear what signs each of the edges bounding a triangle
should receive… It’s even <em>less</em> clear what signs the faces bounding
a tetrahedron should get! In fact, the issue of signs
(and orientation in general) is a <a href="https://en.wikipedia.org/wiki/Simplicial_homology#Boundaries_and_cycles">bit fussy</a>. Once you pick a convention,
though (for us, it’s high minus low), the orientation in higher dimensions
is set in stone. You shouldn’t worry too much about the formulas for $\partial$.
What matters is the signs are chosen to make $\partial \partial \sigma = 0$
for every $n+2$-simplex $\sigma$. This should make a certain amount of sense,
as the boundary of a figure should not have its own boundary…
Thats worth some meditation. <a href="#fnref:5" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:6" role="doc-endnote">
<p>Oftentimes you’ll see this written as $d$ in the literature, since it acts
like a differential. Indeed in the case of De Rham Cohomology it literally
is the derivative! <a href="#fnref:6" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:7" role="doc-endnote">
<p>In general, if we have a complex
\(\cdots \overset{\partial^T_{n+2}}{\longleftarrow}
C^{n+1} \overset{\partial^T_{n+1}}{\longleftarrow}
C^{n} \overset{\partial^T_{n}}{\longleftarrow}
C^{n-1} \overset{\partial^T_{n-1}}{\longleftarrow} \cdots\)
The $n$th cohomology group is
\(H^n =
\frac
{
\text{Ker} \big ( \partial^T_{n+1} : C^n \to C^{n+1} \big )
}{
\text{Im} \big ( \partial^T_n : C^{n-1} \to C^n \big )
}\)
Again, if I end up writing a follow-up post with higher dimensional
examples, you’ll hear <em>lots</em> more about this. <a href="#fnref:7" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Mon, 01 Mar 2021 00:00:00 +0000
https://grossack.site/2021/03/01/cohomology-intuitively.html
https://grossack.site/2021/03/01/cohomology-intuitively.htmlLinearly Ordered Groups and CH<p>Earlier today <a href="https://math.jonathanalcaraz.com/">Jonathan Alcaraz</a> gave a GSS talk about
Linearly Ordered (LO) Groups, which are a fun topic with connections to
dynamics, topology, geometric group theory, etc. This reminded me of a
problem I told myself to think about a while ago, and so I decided to
finally do that. After a bit of thought, a friend from CMU (Pedro Marun)
and I were able to figure it out. This post is going to be somewhat
more meandering than usual (if you can imagine such a thing), because I want
to showcase what the flow of thoughts was in solving the problem.
At the end I’ll clean things up and write them linearly.</p>
<p>I guess we should start with what a LO Group is, but it’s pretty much
what it says on the tin:</p>
<div class="boxed">
<p>A (Left) <span class="defn">Linearly Ordered Group</span> is a
group $G$ equipped with a total order $\leq$ which is compatible
with (left) multiplication in the following sense:</p>
<p>\(g_1 \leq g_2 \quad \implies \quad hg_1 \leq hg_2\)</p>
</div>
<p>I first heard of LO Groups from an exercise in Marker’s
“Model Theory: An Introduction”, where an exercise has you
use compactness to show every torsion free abelian group admits
a compatible linear order. I heard about them again on mse,
to the surprise of nobody. Somebody <a href="https://math.stackexchange.com/q/3928388/655547">asked</a> for examples of
finitely generated left orderable groups. I knew about the abelian
example because of Marker, but I was curious about nonabelian examples.</p>
<p>This led me down a rabbit hole of papers to skim, including
Katheryn Mann’s “Left Orderable Groups that Don’t Act on the Line”
(see <a href="https://e.math.cornell.edu/people/mann/papers/germsatinfinity.pdf">here</a>). This paper mentions a classical result:</p>
<div class="boxed">
<p>A countable group is LO if and only if it embeds in $\text{Homeo}_+(\mathbb{R})$,
the group of orientation preserving homeomorphisms of $\mathbb{R}$.</p>
<p>The order on $\text{Homeo}_+(\mathbb{R})$ is as follows:</p>
<p>Enumerate \(\mathbb{Q} = \{q_n\}\). Then we say $f \lt g$ exactly when
$f q_i \lt g q_i$, where $i$ is least with $f q_i \neq g q_i$
(this is more or less the lex order on $\prod_{\omega} \mathbb{R}$).</p>
</div>
<p>As soon as I saw this, I wondered if anything was special about “countable” here.
If we assume the Continuum Hypothesis (CH) fails, what can we say about other
LO groups of size $\lt \mathfrak{c}$? Do they all have to embed in
$\text{Homeo}_+(\mathbb{R})$ as well?</p>
<p>I keep a list of “problems to think about”, so I added this and left some
brief thoughts before going back to answering mse questions.</p>
<hr />
<p>When Jonathan brought up this theorem in his talk, it reminded me to think
about that problem. I found a proof of the result to see if it immediately
worked for larger cardinalities, and much to my surprise it relies <em>heavily</em>
on the countability of $G$! This is a summary of a proof from Clay and Rolfsen’s
“Ordered Groups and Topology” (see <a href="https://arxiv.org/abs/1511.05088">here</a>), Theorem 2.23.</p>
<p>$\ulcorner$
Let $G$ be countable and LO. Then by looking at $G \times \mathbb{Q}$ with
the lex order, we can assume $G$’s ordering is dense. Moreover, it is easy
to see that $G$ is torsion free, so for any element $g$, there is always
some $g_L \lt g$ and some $g_R \gt g$ ($g^{-1}$ works for one, and $g^2$ for the other).</p>
<p>So $G$ is a countable dense linear order without endpoints! If you’re a
logician your heart should be leaping now. Cantor’s famed
<a href="https://en.wikipedia.org/wiki/Back-and-forth_method">back and forth argument</a> shows that <em>any</em> such ordering is isomorphic
(as an order) to $(\mathbb{Q}, \lt)$. It was really exciting to see this
familiar face pop up in this proof! But since $(G, \lt) \cong (\mathbb{Q}, \lt)$
embeds densely in $(\mathbb{R}, \lt)$, we can extend the left action of $G$ on
itself to a homeomorphism of $\mathbb{R}$.
<span style="float:right">$\lrcorner$</span></p>
<p>This theorem relies on a back and forth argument for most of the heavy lifting,
and that argument fails <em>spectacularly</em> for uncountable cardinalities.
In fact, for any uncountable $\kappa$ there are $2^\kappa$ nonisomorphic
dense linear orders without endpoints of cardinality $\kappa$
(see <a href="https://math.stackexchange.com/q/2580875/655547">here</a>, for instance). This made me start wondering if the theorem is
actually <em>false</em> for groups of size, say, $\aleph_1$.</p>
<p>I texted Pedro, a close friend and set theorist, with some ideas that he
pretty quickly found flaws in. He had a good idea, though, and reminded me
that $\mathbb{R}$ doesn’t contain any chains of length $\omega_1$. That is,
there’s no monotone function $f : \omega_1 \to \mathbb{R}$.</p>
<p>I thought if we could find a LO group $G$ with some $\omega_1$ chain,
then we should be done. My thought process was baiscally:</p>
<ul>
<li>If \(G \hookrightarrow \text{Homeo}_+(\mathbb{R})\), then $G \curvearrowright \mathbb{R}$.</li>
<li>If \(\{ g_\alpha \}_{\omega_1}\) is a chain in $G$, then \(\{ g_\alpha x \}_{\omega_1}\) should be a chain in $\mathbb{R}$ once we pick
some initial value $x$.</li>
</ul>
<p>Of course, this turned out to be wrong too. It’s not hard to find homeomorphisms
$f \lt g$ where $fx \not \lt gx$. It was a good start, though, on the way to
the right answer.</p>
<p>If nothing else, we should just build such a group to show we know how, right?
This is a simple compactness argument:</p>
<ul>
<li>Look at the language of ordered groups, but add \(\omega_1\) many ~ bonus constants ~ \(x_\alpha\).</li>
<li>Look at the theory which includes the sentences
<ul>
<li>“I am an ordered group”</li>
<li>”\(x_\alpha \lt x_\beta\)” for each $\alpha \lt \beta$.</li>
</ul>
</li>
<li>Now each finite subtheory only refers to finitely many constants, so $\mathbb{Z}$ is a model.</li>
<li>Then compactness buys us a model of the whole theory – an ordered group with a chain of length $\omega_1$.</li>
<li>Now by Lowenheim-Skolem, we look at the elementary submodel containing this chain.
This is also an ordered group with a chain of length $\omega_1$, but it’s guaranteed to
have cardinality $\aleph_1$.</li>
</ul>
<p>So we’ve successfully found a LO group of size $\aleph_1$ which contains an
increasing chain of length $\omega_1$… But didn’t we say this doesn’t actually
solve our problem?</p>
<p>This is where I remembered a fact from Descriptive Set Theory: For a
compact metric space $X$, we actually know that \(\text{Homeo}(X)\) is
<a href="https://en.wikipedia.org/wiki/Polish_space">polish</a> (see Kechris’s “Classical Descriptive Set Theory”, I.9B, example 8).
There’s a classic argument that $\mathbb{R}$ doesn’t contain any chains of
length $\omega_1$ which seems to only use separability<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, and the
dream would be to show this continues to hold in a general polish space.</p>
<p>Of course, we <em>also</em> need to check that \(\text{Homeo}_+(\mathbb{R})\) is
actually polish. The above theorem only guarantees polishness for <em>compact</em>
spaces $X$, and the reals are (among other things) not compact.</p>
<p>First, I searched for “borel ordering” in Kechris’s book, and found a
reference to Harrington, Marker, and Shelah’s “Borel Orderings”
(see <a href="https://www.ams.org/journals/tran/1988-310-01/S0002-9947-1988-0965754-3/S0002-9947-1988-0965754-3.pdf">here</a>). Corollary 3.2 gives exactly what we want<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>, but it’s phrased
in terms of subsets of $\mathbb{R}$… But now we know what to search for,
and we quickly find a <a href="https://math.stackexchange.com/q/184200/655547">mse question</a> which cites the paper and makes me
feel confident that I’m not misinterpreting it.</p>
<p>All that’s left is to show $\text{Homeo}_+(\mathbb{R})$ is really polish,
but our journey ends like it began, on <a href="https://math.stackexchange.com/q/732380/655547">mse</a>.</p>
<div class="boxed">
<p>As a nice exercise, can you show that the order on $\text{Homeo}_+(\mathbb{R})$
really is borel? That is, can you show</p>
\[\{ (f,g) ~|~ f \leq g \}
\subseteq
\text{Homeo}_+(\mathbb{R}) \times \text{Homeo}_+(\mathbb{R})\]
<p>is a borel subset?</p>
</div>
<hr />
<p>Ok. Now that the exposition is out of the way, we’re holding a draft of a
proof in our heads. It was a wandering path, but look how deceptively simple
it looks once we organize our thoughts and write it down:</p>
<div class="boxed">
<p>Theorem ($\lnot \mathsf{CH}$):</p>
<p>There exists a LO group of size $\aleph_1$ which does not embed in
$\text{Homeo}_+(\mathbb{R})$</p>
</div>
<p>$\ulcorner$
Since $(\mathbb{Z}, \lt)$ is an infinite LO group, a standard
logical compactness argument furnishes an LO group of size
$\aleph_1$ which contains an increasing sequence \(\{g_\alpha\}\)
of length $\omega_1$. Call such a group $G$.</p>
<p>Then since \(\text{Homeo}_+(\mathbb{R})\) is a polish space
(cf. <a href="https://math.stackexchange.com/q/732380/655547">here</a>) and its ordering is borel, a theorem of
Shelah and Harrington (cf. Corollary 3.2 <a href="https://www.ams.org/journals/tran/1988-310-01/S0002-9947-1988-0965754-3/S0002-9947-1988-0965754-3.pdf">here</a>)
shows that no chain of length $\omega_1$ can exist in
$\text{Homeo}_+(\mathbb{R})$.</p>
<p>Since $G$ contains such a chain, it cannot embed into
$\text{Homeo}_+(\mathbb{R})$.
<span style="float:right">$\lrcorner$</span></p>
<p>Can you believe that teeny little proof took <em>hours</em> of reading and thinking
(times two people, no less!) to figure out? It really makes you appreciate
how much work goes into some of the longer and tricker theorems you come across.</p>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Any two elements
\(x_\alpha \lt x_{\alpha_1}\) must contain a rational between them. Since
there’s only countably many rationals, we can’t have a chain of uncountable
length. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>And after looking through the paper, I’m <em>extremely</em> grateful I didn’t
try to stubbornly prove it myself. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Fri, 26 Feb 2021 00:00:00 +0000
https://grossack.site/2021/02/26/lo-groups.html
https://grossack.site/2021/02/26/lo-groups.htmlSage Sums<p>Today I learned that <a href="https://www.sagemath.org">sage</a> can automatically
simplify lots of sums for us by interfacing with <a href="https://maxima.sourceforge.io/">maxima</a>.
I also learned recently that the <code class="language-plaintext highlighter-rouge">init.sage</code> file exists, which let me fix some
minor gripes with my sage. Notably, I was able to add commands <code class="language-plaintext highlighter-rouge">aa</code> and <code class="language-plaintext highlighter-rouge">nn</code>
which automatically get ascii art or a numeric answer for the most recent
expression! This is going to be a short post just to highlight how these things
work, since I had to figure them out for myself.</p>
<p>I was reading Concrete Mathematics the other night when I came across the
section on <a href="https://en.wikipedia.org/wiki/Gosper%27s_algorithm">Gosper’s Algorithm</a>.
This promises to solve a large class of sums
(the <a href="https://en.wikipedia.org/wiki/Hypergeometric_function">hypergeometric</a> ones)
algorithmicaly, which is extremely alluring. I periodically find myself trying to
simplify tricky sums (either for mse questions or for some problem I’m thinking about)
and it would be nice to offload that thinking to a computer.</p>
<p>Unfortunately, googling around for “gosper’s method sage” and similar didn’t
actually give anything useful (at least not quickly). In hindsight, it turns
out there’s actually a <code class="language-plaintext highlighter-rouge">gosper_sum</code> built in
(see the <a href="https://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/expression.html#sage.symbolic.expression.Expression.gosper_sum">docs</a>),
but for some reason I didn’t find it at the time. After some searching I instead
found a <a href="https://github.com/benyoung/AeqB-sage">github repo</a> that coded
up gosper’s algorithm, as well as a bunch of other algorithms from a book.
This was how I found my way to Petkovsek, Wilf, and Zeilberger’s
<a href="https://www2.math.upenn.edu/~wilf/AeqB.html">A=B</a>, which has lots of similar
algorithms for algorithmically simplifying sums. It’s an extremely interesting
read, both mathematically and historically, and I’ve been enjoying it so far.</p>
<p>Before I learned it was built-in after all, I was planning to put up a blog post
with an implementation of gosper’s algorithm so that people could come here to
simplify their sums. Thankfully, I did eventually find the implementation, which
saved me a bunch of coding! Sage actually aliases over
python’s default <code class="language-plaintext highlighter-rouge">sum</code> function, and will pass off symbolic sums to maxima
where they’re evaluated using tons of powerful techniques (one of which is
gosper’s algorithm). The reason I was having trouble finding a function for this
was (in part) because it’s baked into the <code class="language-plaintext highlighter-rouge">sum</code> function already!</p>
<p>I’m still putting up this post, in part to share this realization with
anyone else who didn’t know about it (which probably isn’t many people…),
but in part to still provide a place where people can come to simplify sums.
In case you don’t have a sage installation on your own computer, you can
modify one of the examples below and evaluate your favorite summation here!</p>
<p>Let’s see some quick examples. The syntax <code class="language-plaintext highlighter-rouge">sum(f,k,a,b)</code> corresponds to
$\sum_{k=a}^b f$.</p>
<div class="auto">
<script type="text/x-sage">
n,k = var('n,k')
# I think we're legally obligated to make this our first sum.
# hold=True keeps it from evaluating
sum1 = sum(binomial(n,k),k,0,n, hold=True)
# so that we can display the original sum as the LHS here
# unhold then lets the expression evaluate as it would naturally
show(sum1 == sum1.unhold())
# You can also define a symbolic function, then use it in the sum
f = k * binomial(n,k)
sum2 = sum(f,k,0,n, hold=True)
show(sum2 == sum2.unhold())
</script>
</div>
<p>This can solve fairly complex sums. These come from an exercise in A=B
(exercise 1d and 1e from chapter 5). After seeing the solutions,
I’m definitely glad I didn’t have to work them out by hand!</p>
<div class="auto">
<script type="text/x-sage">
n,k = var('n,k')
soln_d = sum(k^4 * 4^k / binomial(2*k,k), k, 0, n, hold=True)
show(soln_d == soln_d.unhold())
f = factorial(3*k) / (factorial(k) * factorial(k+1) * factorial(k+2) * 27^k)
soln_e = sum(f,k,0,n, hold=True)
show(soln_e == soln_e.unhold())
</script>
</div>
<p>This has already helped me “in the wild”. There is an
<a href="https://math.stackexchange.com/q/4039066/655547">mse question</a>
which asked about the sum $\sum_{n=0}^\infty \frac{16n^2 + 20n + 7}{(4n+2)!}$.
A commenter asks whether OP wants a closed form, or merely a convergence result.
The sum certainly <em>looks</em> like it doesn’t admit a nice closed form, but I’ve
been deceived before. Instead of wasting a few minutes trying to find a
nice closed form (which is what I would have done even a few days ago),
we can simply ask sage:</p>
<div class="auto">
<script type="text/x-sage">
n = var('n')
f = (16*n^2 + 20*n + 7) / factorial(4*n + 2)
# I also just learned oo is an alias for Infinity!
soln = sum(f,n,0,oo, hold=True)
show(soln)
print("This is exactly: ")
show(soln.unhold())
print("This is approximately: ")
show(soln.unhold().n())
</script>
</div>
<p>Sage happily computed a closed form for this sum… It just happens to use
a bunch of hypergeometric functions! This pretty quickly answers the
“does OP want a closed form” question, assuming OP’s professor isn’t a sadist<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>.</p>
<hr />
<p>As an aside, in the above example we computed something exactly, but then
used <code class="language-plaintext highlighter-rouge">.n()</code> in order to get a numerical value
(which is often better for getting a sense of things). Since sage will let you
write <code class="language-plaintext highlighter-rouge">_</code> to get the output of the last command, <code class="language-plaintext highlighter-rouge">_.n()</code> is probably my most
typed command. Either that or <code class="language-plaintext highlighter-rouge">ascii_art(_)</code>, which draws an ascii version of
whatever your most recent output was. Since I use sage in a terminal, rather
than a jupyter notebook, this saves me endless parsing related headaches
when it comes to actually reading sage’s output.</p>
<p>If you also find yourself using these commands all the time, I can’t recommend
the following aliases enough. These are part of my <code class="language-plaintext highlighter-rouge">init.sage</code>, and have changed
my life. If you want to see my entire sage configuration, you can find it
(with the rest of my dotfiles)
<a href="https://github.com/HallaSurvivor/dotfiles/blob/master/init.sage">here</a>.</p>
<div class="no_out">
<script type="text/x-sage">
# get the ipython instance so we can
# do black magic with our repl
_ipy = get_ipython()
# add a macro so typing nn will
# automatically convert the most
# recent output to a numeric.
_ipy.define_macro('nn', '_.n()')
# add a macro so typing aa will
# automatically run ascii_art
# on the most recent output.
_ipy.define_macro('aa', 'ascii_art(_)')
</script>
</div>
<hr />
<p>Before I end this post, there are a few more parting observations
that I want to squeeze in.</p>
<p>First, sage can solve recurrences for you as well,
by using either maxima’s <code class="language-plaintext highlighter-rouge">solve_rec</code> or
<a href="https://www.sympy.org/en/index.html">sympy</a>’s <code class="language-plaintext highlighter-rouge">rsolve</code>. I
have a wrapper in my <code class="language-plaintext highlighter-rouge">init.sage</code> that makes using the latter
slightly more convenient.</p>
<p>Second, if you’re faced with a particularly stubborn sum that sage won’t
simplify for you, you should try using maxima directly. You can actually
do this from inside sage by using <code class="language-plaintext highlighter-rouge">maxima.console()</code> and then loading the
<code class="language-plaintext highlighter-rouge">simplify_sum</code> package. You can see a worked out example
<a href="https://stackoverflow.com/a/28663533/3911897">here</a>, and you can see all the
high-power tools that <code class="language-plaintext highlighter-rouge">simplify_sum</code> buys you
<a href="https://github.com/andrejv/maxima/blob/master/share/solve_rec/simplify_sum.mac">here</a>.</p>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Rather magically, though, this numerically agrees with $e + \sin(1)$ up
to all available digits, according to an
<a href="http://wayback.cecm.sfu.ca/cgi-bin/isc/lookup?number=3.55975281326694&lookup_type=simple">inverse symbolic calculator</a>.
Sage says this is a fluke (that is, they aren’t actually equal), but it’s an
extremely bizarre coincidence. Life is full of mysteries. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Thu, 25 Feb 2021 00:00:00 +0000
https://grossack.site/2021/02/25/sage-sums.html
https://grossack.site/2021/02/25/sage-sums.htmlMeasure Theory and Differentiation (Part 1)<p>So I had an analysis exam <s>yesterday</s> <s>last week</s> a while ago
(this post took a bit of time to finish writing). It roughly covered the material in
chapter 3 of Folland’s “Real Analysis: Modern Techniques and Their Applications”.
I’m decently comfortable with the material, but a lot of it has always felt
kind of unmotivated. For example, why is the <a href="https://en.wikipedia.org/wiki/Lebesgue_differentiation_theorem">Lebesgue Differentiation Theorem</a>
called that? It doesn’t <em>look</em> like a derivative… At least not at first glance.</p>
<p>A big part of my studying process is fitting together the various theorems
into a coherent narrative. It doesn’t have to be linear
(in fact, it typically isn’t!), but it should feel like the theorems share
some purpose, and fit together neatly.
I also struggle to care about theorems before I know what they do. This is
part of why I care so much about examples – it’s nice to know what problems
a given theorem solves.</p>
<p>After a fair amount of reading and thinking<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, I think I’ve finally fit the
puzzle pieces together in a way that works for me. Since I wrote it all down
for myself as part of my studying, I figured I would post it here as well in
case other people find it useful. Keep in mind this is probably obvious to
anyone with an analytic mind, but it certainly wasn’t obvious to me!</p>
<p>Let’s get started!</p>
<hr />
<p>To start, we need to remember how to relate functions and measures. Everything
we say here will be in $\mathbb{R}$, and $m$ will be the ($1$-dimensional)
Lebesgue Measure.</p>
<div class="boxed">
<p>If $F$ is increasing and continuous from the right, then there is a
(unique!) regular borel measure $\mu_F$
(called the <a href="https://en.wikipedia.org/wiki/Lebesgue%E2%80%93Stieltjes_integration">Lebesgue-Stieltjes Measure</a> associated to $F$)
so that</p>
\[\mu_F((a,b]) = F(b) - F(a)\]
<p>Moreover, given any regular borel measure $\mu$ on $\mathbb{R}$, the function</p>
\[F_\mu \triangleq
\begin{cases}
\mu((0,x]) & x \gt 0 \\
0 & x = 0 \\
-\mu((x,0]) & x \lt 0
\end{cases}\]
<p>is increasing and right continuous.</p>
</div>
<p>This is more or less the content of the <a href="https://en.wikipedia.org/wiki/Carath%C3%A9odory%27s_extension_theorem">Carathéodory Extension Theorem</a>.
It’s worth taking a second to think where we use the assumptions on $F$.
The fact that $F$ is increasing means our measure is positive. Continuity
from the right is a bit more subtle, though. Since $F_\mu$ is always right
continuous, we need to assume our starting function is right continuous
in order to guarantee $F_{\mu_F} = F$.</p>
<p>This is not a big deal, though. A monotone function is automatically continuous
except at a countable set (see <a href="https://math.stackexchange.com/questions/84870/how-to-show-that-a-set-of-discontinuous-points-of-an-increasing-function-is-at-m">here</a> for a proof) and at its countably many
discontinuities, we can force right-continuity by defining</p>
\[\tilde{F}(x_0) \triangleq \lim_{x \to x_0^+} F(x)\]
<p>which agrees with $F$ wherever $F$ is continuous.
If we put our probabilist hat on, we say that $F_\mu$ is the
<span class="defn">Cumulative Distribution Function</span> of $\mu$.
Here $F_\mu(x)$ represents the total (cumulative) mass we’ve seen so far.</p>
<p>It turns out that Lebesgue-Stieltjes measures are extremely concrete, and
a lot of this post is going to talk about computing with them<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>. After all,
it’s entirely unclear which (if any!) techniques from a calculus class carry
over when we try to actually integrate against some $\mu_F$. Before we can
talk about computation, though, we have to recall another (a priori unrelated)
way to relate functions to measures:</p>
<div class="boxed">
<p>Given a positive, locally $L^1$ function $f$, we can define the regular measure $m_f$ by</p>
\[m_f(E) \triangleq \int_E f dm\]
<p>Moreover, if $m_f = m_g$, then $f=g$ almost everywhere.</p>
</div>
<p>The locally $L^1$ conditions says that $\int_E f dm$ is finite
whenever $E$ is bounded. It’s not hard to show that this is equivalent to
the regularity of $m_f$, which we’ll need shortly.</p>
<p>Something is missing from the above theorem, though.
We know sending $F \rightsquigarrow \mu_F$ is
faithful, in the sense that $F = F_{\mu_F}$ and $\mu_{F_\mu} = \mu$. We’ve
now introduced the measure $m_f$, but we didn’t say how to recover $f$
from $m_f$… Is it even possible? The answer is yes, as a corollary of a
much more powerful result:</p>
<div class="boxed">
<p><span class="defn">Lebesgue-Radon-Nikodym Theorem</span></p>
<p>Every measure $\mu$ decomposes (uniquely!) as</p>
\[\mu = \lambda + m_f\]
<p>for some measure $\lambda \perp m$ and some function $f$.</p>
<p>Moreover, we can recover $f$ from $\mu$ as<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup></p>
\[f(x) = \lim_{r \to 0} \frac{\mu(B_r(x))}{m(B_r(x))}\]
<p>for almost every $x$. Here, as usual $B_r(x) = (x-r,x+r)$ is the ball of
radius $r$ about $x$.</p>
<p>People often write $f = \frac{d \mu}{dm}$, and call it the
<span class="defn">Radon-Nikodym Derivative</span>. Let’s see why.</p>
</div>
<p>In the case $\mu = m_f$, then this shows us how to recover
$f$ (uniquely) from $m_f$, and life is good:</p>
\[\frac{d m_f}{dm} = f\]
<p>The converse needs a ~bonus condition~. In order to say
$\mu = m_{\frac{d\mu}{dm}}$, we need to know that $\mu$ is
<a href="https://en.wikipedia.org/wiki/Absolute_continuity#Absolute_continuity_of_measures">absolutely continuous</a> with respect to $m$, written $\mu \ll m$.</p>
<div class="boxed">
<p>As an exercise, do you see why this condition is necessary? If
$\mu \not \ll m$, why don’t we have a chance of writing $\mu = m_f$
for any $f$?</p>
</div>
<p>In the case of Lebesgue-Stieltjes measures, Lebesgue-Radon-Nikodym buys us
something almost magical. For almost every $x$, we see:</p>
\[\begin{aligned}
\frac{d\mu_F}{dm}
&= \lim_{r \to 0} \frac{\mu_F(B_r(x))}{m(B_r(x))} \\
&= \lim_{r \to 0} \frac{F(x+r) - F(x-r)}{x+r - (x-r)} \\
&= \lim_{r \to 0} \frac{F(x+r) - F(x-r)}{2r} \\
&= F'(x)
\end{aligned}\]
<p>Now we see why we might call this $f$ the Radon-Nikodym <em>derivative</em>. In
the special case of Lebesgue-Stieltjes measures, it literally <em>is</em> the
derivative. We saw earlier that $F = F_{m_f}$ acts like an antiderivative of $f$,
and now we see $f = \frac{d \mu_F}{dm}$ works as a derivative of $F$ as well!</p>
<p>In fact, yet more analogies are true! Let’s take a look at the
<span class="defn">Lebesgue Differentiation Theorem</span></p>
<div class="boxed">
<p>For almost every $x$, we have:</p>
<p>\(\lim_{r \to 0} \frac{1}{m B_r(x)} \int_{B_r(x)} f(t) dm = f(x)\)</p>
</div>
<p>Why is this called the <em>differentiation</em> theorem?
Let’s look at $F_{m_f}$, which you should remember is a kind of antiderivative
for $f$.</p>
<p>For $x > 0$ (for simplicity), we have $F_{m_f}(x) = m_f((0,x]) = \int_{(0,x]} f dm$.
If we rewrite the theorem in terms of $F_{m_f}$, what do we see?</p>
\[\begin{aligned}
f(x)
&= \lim_{r \to 0} \frac{1}{m B_r(x)} \int_{B_r(x)} f dm \\
&= \lim_{r \to 0} \frac{1}{(x+r) - (x-r)} \int_{x-r}^{x+r} f dm \\
&= \lim_{r \to 0} \frac{1}{2r} \left ( \int_{0}^{x+r} f dm - \int_{0}^{x-r} f dm \right )\\
&= \lim_{r \to 0} \frac{F_{m_f}(x+r) - F_{m_f}(x-r)}{2r} \\
&= F_{m_f}'(x)
\end{aligned}\]
<p>So this is giving us part of the fundamental theorem of calculus<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup>! This theorem
(in the case of Lebesgue-Stieltjes measures) says exactly that (for almost every $x$)</p>
\[\left ( x \mapsto \int_0^x f dm \right )' = f(x)\]
<p>Let’s take a moment to summarize the relationships we’ve seen. Then we’ll
use these relationships to actually <em>compute</em> with Lebesgue-Stieltjes integrals.</p>
<div class="boxed">
\[\bigg \{ \text{increasing, right-continuous functions $F$} \bigg \}
\leftrightarrow
\bigg \{ \text{regular borel measures $\mu_F$} \bigg \}\]
\[\bigg \{ \text{positive locally $L^1$ functions $f$} \bigg \}
\leftrightarrow
\bigg \{ \text{regular borel measures $m_f \ll m$} \bigg \}\]
<p>Moreover:</p>
<ul>
<li>
<p>By considering $F_{m_f}$ we see functions of the first kind are antiderivatives
of functions of the second kind.</p>
</li>
<li>
<p>By considering $\frac{d \mu_F}{dm}$, we see functions of the second kind
are (almost everywhere) derivatives of functions of the first kind.</p>
</li>
<li>
<p>Indeed, $\frac{d \mu_F}{dm} = F’$ almost everywhere.</p>
</li>
<li>
<p>And $F_{m_f}’ = f$ almost everywhere.</p>
</li>
</ul>
</div>
<hr />
<p>Why should we care about these theorems? Well, Lebesgue-Stieltjes integrals
arise fairly regularly in the wild, and these theorems let us actually
compute them! It’s easy to integrate against $m_f$, since monotone convergence
gives us $\int g dm_f = \int g f dm$.</p>
<p>Then this buys us the (very memorable) formula:</p>
\[\int g d \mu_F = \int g \frac{d \mu_F}{dm} dm = \int g F' dm\]
<p>and now we’re integrating against lebesgue measure, and all our years of
calculus experience is applicable!</p>
<p>Of course, I’ve left out an important detail: Whatever happened to that
measure $\lambda$?
The above formula is true exactly when $F$ is continuous everywhere. At points
where it is <em>discontinuous</em> we need to change it slightly by using
$\lambda$. These are called <a href="https://en.wikipedia.org/wiki/Singular_measure">singular measures</a>, and they can be
pretty <a href="https://en.wikipedia.org/wiki/Cantor_distribution">pathological</a>. A good first intuition, though, is to think of them
like <a href="https://en.wikipedia.org/wiki/Dirac_measure">dirac measures</a>, and that’s the case that we’ll focus on in this post<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup>.</p>
<p>Let’s write \(H = \begin{cases} 0 & x \lt 0 \\ 1 & 0 \leq x \end{cases}\).
This us usually called the <span class="defn">heaviside function</span>.</p>
<p><img src="/assets/images/lebesgue-ftc-1/heaviside.png" /></p>
<p>Recall our interpretation of this function: $H(x)$ is supposed to
represent the mass of $(-\infty, x]$. So as we scan from left to right,
we see the mass is constantly $0$ until we hit the point $0$. Then suddenly
we jump up to mass $1$. But once we get there, our mass stays constant again.</p>
<p>So $H$ thinks that $0$ has mass $1$ all by itself, and thinks that there’s
no other mass at all!</p>
<p>Indeed, we see that</p>
\[\mu_H((a,b]) = H(b) - H(a) = \begin{cases} 1 & 0 \in (a,b] \\ 0 & 0 \not \in (a,b] \end{cases}\]
<p>So $\mu_H$ is just the dirac measure at $0$ (or $\delta_0$ to its friends)!
Notice this lets us say the “derivative” of $H$ is $\delta_0$, by analogy
with the Lebesgue-Stieltjes case. Or conversely, that $H$ is the
“antiderivative” of $\delta_0$. This shows us that recasting calculus in
this language actually buys us something new, since there’s no way to make
sense of $\delta_0$ as a traditional function.</p>
<p>It’s <em>finally</em> computation time! Since we know $\int g d\delta_0 = g(0)$,
and (discrete) singular measures look like (possibly infinite) linear
combinations of dirac measures, this lets us compute
all increasing right-continuous Lebesgue-Stieltjes measures that are likely
to arise in practice. Let’s see some examples! If you want to see more,
you really should look into Carter and van Brunt’s
“The Lebesgue-Stieltjes Integral: A Practical Introduction”. I mentioned
it in a footnote earlier, but it really deserves a spotlight. It’s full of
concrete examples, and is extremely readable!</p>
<hr />
<p>Let’s start with a continuous example. Say
\(F = \begin{cases} 0 & x \leq 0 \\ x^2 & x \geq 0 \end{cases}\).</p>
<p><img src="/assets/images/lebesgue-ftc-1/example1.png" /></p>
<p>So $\mu_F$ should think that everything is massless until we hit $0$.
From then on, we start gaining mass faster and faster as we move to the right.
If you like, larger points are “more dense” than smaller ones, and thus
contribute more mass in the same amount of space.</p>
<p>Say we want to compute</p>
\[\int_{-\pi}^\pi \sin(x) d \mu_F = \int_{-\pi}^\pi \sin(x) \cdot F' dm\]
<p>We can compute \(F' = \begin{cases} 0 & x \leq 0 \\ 2x & x \geq 0 \end{cases}\),
so we split up our integral as</p>
\[\int_{-\pi}^0 \sin(x) \cdot 0 dm + \int_0^\pi \sin(x) \cdot 2x dm\]
<p>But both of these are integrals against lebesgue measure $m$! So these are
just “classical” integrals, and we can use all our favorite tools.
So the first integral is $0$, and the second integral is $2\pi$
(integrating by parts). This gives</p>
\[\int_{-\pi}^\pi \sin(x) d \mu_F = 2\pi\]
<p>That wasn’t so bad, right?</p>
<hr />
<p>Let’s see another, slightly trickier one. Let’s look at
\(F = \begin{cases} x & x \lt 0 \\ e^x & x \geq 0 \end{cases}\)</p>
<p><img src="/assets/images/lebesgue-ftc-1/example2.png" /></p>
<p>You should think through the intuition for what $\mu_F$ looks like.
You can then test your intuition against a computation:</p>
\[\mu_F = \lambda + m_f\]
<p>In the previous example, $\lambda$ was the $0$ measure since our function
was differentiable everywhere. Now, though, we aren’t as lucky. Our
function $F$ is not differentiable at $0$, so we will have to work with
some nontrivial $\lambda$.</p>
<p>Let’s start with the places $F$ <em>is</em> differentiable. This gives us the
density function \(f = F' = \begin{cases} 1 & x \lt 0 \\ e^x & x \gt 0 \end{cases}\).</p>
<p>We can also see the point $0$ has mass $1$. In this case we can more or less
read this off the graph (since we have a discontinuity where we jump up by $1$),
but in more complex examples we would compute this by using
$\mu_F({ 0 }) = \lim_{r \to 0^+} F(r) - F(-r)$. You can see that this
does give us $1$ in this case, as expected. So we see (for $f$ as before)</p>
\[\mu_F = \delta_0 + m_f\]
<p>So to compute</p>
\[\int_{-1}^1 4 - x^2 d\mu_F =
\int_{-1}^1 4 - x^2 d(\delta_0 + m_f) =
\int_{-1}^1 4 - x^2 d \delta_0 + \int_{-1}^1 (4 - x^2)f dm\]
<p>we can handle the $\delta_0$ part and the $f dm$ part separately!</p>
<p>We know how to handle dirac measures:</p>
\[\int_{-1}^1 4 - x^2 d \delta_0 =
\left . (4 - x^2) \right |_{x = 0} = 4\]
<p>And we also know how to handle “classical” integrals:</p>
\[\int_{-1}^1 (4 - x^2) f dm =
\int_{-1}^0 (4 - x^2) dm + \int_0^1 (4 - x^2) e^x dm =
\frac{11}{3} + (3e-2)\]
<p>So all together, we get \(\int_{-1}^1 4 - x^2 d\mu_F = 4 + \frac{11}{3} + (3e-2)\).</p>
<div class="boxed">
<p>As an exercise, say
\(F = \begin{cases} e^{3x} & x \lt 0 \\ 2 & 0 \leq x \lt 1 \\ 2x+1 & 1 \leq x \end{cases}\)</p>
<p>Can you intuitively see how $\mu_F$ distributes mass?</p>
<p>Can you compute</p>
<p>\(\int_{-\infty}^2 e^{-2x} d\mu_F\)</p>
</div>
<div class="boxed">
<p>As another exercise, can you intuit how $\mu_F$ distributes mass when
$F(x) = \lfloor x \rfloor$ is the floor function?</p>
<p>What is $\int_1^\infty \frac{1}{x^2} d\mu_F$? What about $\int_1^\infty \frac{1}{x} d\mu_F$?</p>
</div>
<hr />
<p>Ok, I hear you saying. There’s a really tight connection between
increasing (right-)continuous functions $F$ on $\mathbb{R}$ and
positive integrable functions $f$. This connection is at its tightest
wherever $F$ is actually continuous, as then the measures $\mu_F$ and $m_f$
have a derivative relationship, which is reflected in the same derivative
relationship of functions $F’ = f$. Not only does this give us a way to
generalize the notion of derivative to functions that might not normally
have one (as in the case of the heaviside function and the dirac delta),
it gives us a concrete way of evaluating Lebesgue-Stieltjes integrals.</p>
<p>But doesn’t this feel restrictive? There are lots of functions $F$ which aren’t
(right-)continuous or increasing that we might be interested in differentiating.
There are <em>also</em> lots of nonpositive functions $f$ which we might be interested
in integrating. Since we got a kind of “fundamental theorem of calculus” from
these measure theoretic techniques, if we can show how to apply these techniques
to a broader class of functions, we might be able to get a more general
fundamental theorem of calculus.</p>
<p>Of course, to talk about more general functions $F$, we’ll need to allow
our measures to assign <em>negative</em> mass to certain sets. That’s ok, though,
and we can even go so far as to allow <em>complex</em> valued measures! In fact,
from what I can tell, this really is the raison d’être for signed and
complex measures. I was always a bit confused why we might care about these
objects, but it’s beginning to make more sense.</p>
<p>This post is getting pretty long, though, so we’ll talk about the signed
case in a (much shorter, hopefully) part 2!</p>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>I was mainly reading Folland (Ch. 3), since it’s the book for the course.
I’ve also been spending time with Terry Tao’s lecture notes on the subject
(see <a href="https://terrytao.wordpress.com/2010/10/16/245a-notes-5-differentiation-theorems/">here</a>, and <a href="https://terrytao.wordpress.com/2009/01/04/245b-notes-1-signed-measures-and-the-radon-nikodym-lebesgue-theorem/">here</a>), as well as
<a href="http://web.stanford.edu/~eugeniam/math205a/L3.pdf">this</a> PDF from Eugenia Malinnikova’s measure theory course
at Stanford. I read parts of Axler’s new book, and while I meant to read
some of Royden too, I didn’t get around to it. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>As an aside, I really can’t recommend Carter and van Brunt’s
“The Lebesgue-Stieltjes Integral: A Practical Introduction” enough.
It spends a lot of time on concrete examples of computation, which is
exactly what many measure theory courses are regrettably missing.
Chapter 6 in particular is great for this, but the whole book is excellent. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>We can actually relax this from balls $B_r(x)$ to a family ${E_r}$
that “shrinks nicely” to $x$, though it’s still a bit unclear to me
what that means and what it buys us. It seems like one important feature
is that the $E_r$ don’t have to contain $x$ itself. It’s enough to take up
a (uniformly) positive fraction of space near $x$. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>There’s another way of viewing this theorem which is quite nice. I
think I saw it on Terry Tao’s blog, but now that I’m looking for it I
can’t find it… Regardless, once we put on our nullset goggles, we
can no longer evaluate functions. After all, for any particular point
of interest, I can change the value of my function there without changing
its equivalence class modulo nullsets. However, even with our nullset
goggles on, the integral $\frac{1}{m B_r(x)} \int_{B_r(x)} f dm$ is well
defined! So for almost every $x$, we can “evaluate” $f$ through this
(rather roundabout) approach. The benefit is that this notion of evaluation
does not depend on your choice of representative! <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:5" role="doc-endnote">
<p>In no small part because I’m not sure how you would actually integrate
against a singular continuous measure in the wild… <a href="#fnref:5" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Sun, 21 Feb 2021 00:00:00 +0000
https://grossack.site/2021/02/21/lebesgue-ftc-1.html
https://grossack.site/2021/02/21/lebesgue-ftc-1.htmlTalk - Why Think -- Letting Computers do Math for Us<p>Yesterday I gave my second talk at the Graduate Student Seminar at UCR.
I decided to talk about something near and dear to me, a topic which first
got me interested in logic: decidability.
The idea of decidability is to look for theories which are simple enough to
admit a computer program (called a <span class="defn">decider</span>)
which can tell you whether or not a given sentence is true.</p>
<p>I was first introduced to the decidability of certain logics in
Computational Discrete Math (<a href="https://cs.cmu.edu/~sutner/CDM/index.html">CDM</a>)
which was the class where I met my advisor Klaus Sutner. I’m lazy at times,
and so the idea of a decidable logic was really exciting. I wanted to
know as much as I could so that, one day, I would be able to answer a tricky
question by asking a computer!</p>
<p>Of course, now I realize that a lot of the time it’s faster to just
solve the problem yourself than ask a decider
(particularly if you have to write the decider yourself…) but
the interest has stuck with me. I think it’s a super cool topic,
and I was really pleased to get a chance to talk at length about it!</p>
<p>There are a <em>ton</em> of decidability results in logic, but only an hour
in a talk. Also, a lot of the techniques for proving decidability are
somewhat technical. This made drafting the talk a little bit tricky,
particularly since I was speaking to a room of non-logicians.
The best bet, I thought, was to try and survey a
few powerful techniques (completeness and automaticity)
and give a high level description of how the proofs go. Then I ended with a
discussion of some negative results, and a tangent on the
resolution of <a href="https://en.wikipedia.org/wiki/Hilbert%27s_tenth_problem">Hilbert’s 10th Problem</a>.
It’s not directly related, but Matiyasevich’s Theorem was my favorite
theorem for a while, and the material was so nearby that I couldn’t resist including it!</p>
<p>All in all, I think the talk went quite well ^_^. Klaus is (among other things)
an Automata Theorist, and working closely with him for a few years
made me love automata too. I was happy to get to share some of that
enthusiasm with people, even if I had to gloss over some details.
Plus, I’m really proud of the example computation done on an automaton.
I made it with Evan Wallace’s <a href="http://madebyevan.com/fsm">FSM Maker</a> and
then tweaked the tikz slide by slide to do the animation. Normally I would
draw the machine on a blackboard and point at the current state, but I think the colors served
as a nice substitute for a talk with slides.</p>
<p>I had someone ask me how the automatic structure is useful in
deciding a theory, and in hindsight I should have included a slide on that.
I’m glad they asked, though, because it gave me a chance to describe it
verbally. That’s a really obvious oversight, and I’m a bit upset that
people who only download the slides won’t get a chance to see an
overview of that proof. Maybe I’ll write it up in a blog post one day
and include a simple example…</p>
<p>As for the other material, it’s always harder to tell over zoom,
but I think people followed the talk fairly well.
The section on completeness was necessarily a bit technical, and I’m
almost certain I lost some people in the proof that $\mathsf{DLO}$ has
Quantifier Elimination. That said, I expected to lose some people there
(it’s not an obvious bit of combinatorics, even if it’s easy once you’re
familiar with it), so I’m not too upset about it. The point of that slide
was to show that Quantifier Elimination is a strategy for getting control
over your favorite theory. If anyone ever needs it for their research,
they’ll have plenty of time to look for it and learn it themselves
now that they know it exists.</p>
<p>As one last regret for the road, someone asked where people are studying
these questions. I threw out Cornell and UIUC as guesses, but in hindsight
I don’t think I made it clear that I don’t actually know for certain
that people there are working on this stuff. I said that in any good logic
department you’ll have people interested in these things, and that’s true,
but I don’t actually know if there’s anyone explicitly doing work in this area.
Also, I should have probably plugged CMU…</p>
<p>As always, the abstract and slides are below. Plus a link to a
youtube video<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> with a recording of the talk.</p>
<hr />
<p>Why Think? Letting Computers Do Math For Us</p>
<p>There are a number of results in logic of the form “If your question can be
asked a certain way, then there is an algorithm which tells you the answer”.
These are called Decidability Theorems, because an algorithm can Decide
if a proposition is true or false. In this talk we will survey some results in this
area, discuss a few techniques for proving these results, and discuss some
open problems are only a few computer cycles away from being solved.</p>
<p>The talk slides are <a href="/assets/docs/why-think/talk.pdf">here</a>.
There’s at least one minor typo
(I say Łoś-Tarski at one point when I mean Łoś-Vaught)</p>
<p>A recording of the talk is embedded below.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ClmQ3OW11Qg" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<hr />
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Unrelated, but I just got my first subscriber and commenter!
It’s cool to see at least one person care about what I say
enough to ask a question in the comments. And even though
youtube subscriptions are free (which is definitely a good
thing given my youtube habit…) it’s still exciting that
someone (who I don’t know!) subbed ^_^ <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Sat, 23 Jan 2021 00:00:00 +0000
https://grossack.site/2021/01/23/why-think.html
https://grossack.site/2021/01/23/why-think.htmlTalk - Syntax and Semantics (Trans Math Day 2020)<p>I’ve been busy with some assignments and grading, so it took me a while to
post this. We got there eventually, though! I gave a talk at an online
conference for Trans Math Day on December 5th. There were a lot of interested
speakers, so the organizers gave us 5 minute, 10 minute, and 20 minute spots.
I was given a 5 minute talk, which is a borderline impossible assignment –
Obviously I was still exited to give it, there were just a slew of challenges
to work out.</p>
<p>I’m not a complete stranger to this format. As an undergraduate, I was given a
15 minute slot to present my thesis work (on Abelian Autaomata Groups), and
I wanted to discuss as much as I could (after all, I was proud of that work!).
I ended up leaning into the manic energy and powered through, barely stopping
to breathe.</p>
<p>I didn’t want to give that kind of talk, through. This was an online conference,
and nobody present knew me. It’s fun to give a comically fast paced
presentation when you know everyone knows you, but in a room of strangers,
it’s better to be professional. So I had to find something which was simultaneously
interesting and explicable in 5 minutes… I settled on Syntax and Semantics.</p>
<p>There are <em>lots</em> of fun theorems that place restrictions on the complexity
of an object (its semantics) based on how simple that object is to describe
(its syntax). I decided to give a short outline of the idea, followed by one
example from algebra and one example from analysis. In the end, I used 7 minutes.
While I shudder to think of using almost 150% of my allotted time, I think
every talk goes around 2 minutes over. So I’ll happily think additively
instead of multiplicatively in this instance :P</p>
<p>I asked if the talk could be recorded, but in the interest of protecting the
privacy of some attendees, the organizers politely declined. I still have the
slides, though, and sometime soon I’ll put up that blog post I keep promising
outlining some more examples…</p>
<p>As a last aside, the conference was a lot of fun. It was great to be in a
(zoom) room with a bunch of other trans mathematicians, and many of the talks
were extremely interesting! One person gave the most lucid account of Riemann-Roch
I’ve ever seen (which is made more impressive by the size of the time slots),
and I even left with some fun problems to think about once I have some more
free time! All in all, I hope this becomes an annual event, and I hope to
continue being involved ^_^</p>
<hr />
<p>Syntax and Semantics as an Organizing Principle</p>
<p>The key observation in Mathematical Logic is that the syntax
of mathematics (the symbols we write on a page)
is different from the semantics of mathematics (the meaning
we as humans prescribe those symbols). By studying them
separately, we can prove theorems of the form “any object
which is easy to describe cannot be too complicated”.
In this talk we will survey a collection of results of this form
which the speaker has found useful in their own research and
education.</p>
<p>The slides are <a href="/assets/docs/tmd-syntax-and-semantics/talk.pdf">here</a></p>
Wed, 16 Dec 2020 00:00:00 +0000
https://grossack.site/2020/12/16/tmd-syntax-and-semantics.html
https://grossack.site/2020/12/16/tmd-syntax-and-semantics.html