Category Archives: Numbers are hard

Sequential compactness and the splitting number

In talking with people in #scala earlier I ended up looking through some of my old maths articles. In particular this one. I noticed that I mentioned “So far the only counterexampe I have depends on the value of the reaping number, tau. It’s fairly standard (I’ll write a post on it at some point) that {0, 1}^{tau} is not sequentially compact”.

The details of the above are wrong: Firstly, I meant the splitting number rather than the reaping number (a post I found elsewhere on the internet confirms I was confusing the two – I’m not even sure what the reaping number actually is). Secondly, “fairly standard” my ass. I couldn’t find anything on it, so had to recreate it from scratch. I mean, it’s not a new result and there have been papers on it, but it’s not by any means a commonly reproduced proof. I have no access to maths journals in order to check out the original papers, and hence there will be a deplorable lack of citations here. Sorry.

Still, four years later, here’s that post. I’ve written it up as a pdf rather than subjecting you to embedded LaTeX in the post.

This entry was posted in Numbers are hard on by .

Axioms, definitions and agreement

A while ago I posted A Problem of Language, a response to an article claiming that Scala was not a functional language. This isn’t an attempt to revive that argument (and please don’t respond to it with such attempts. I’m likely to ignore or delete comments on the question of whether Scala is a functional language). It’s a post which is barely about programming, except by example. Really it’s a post about the philosophy of arguments.

My point was basically that without a definition of “functional language” (which no one had provided) it was a meaningless assertion to make.

Unfortunately this point isn’t really true. I think I knew that at the time of writing but glossed over it to avoid muddying the waters, as it’s false in a way that doesn’t detract from the basic point of the article, but it’s been bugging me slightly so I thought I’d elaborate on the point and the basic ideas.

Let’s start with what’s hopefully an unambiguous statement:

Brainfuck is not a functional language

Hopefully no one wants to argue the point. :-)

Well, why is brainfuck not a functional language? It doesn’t have functions!

So, we’re making the following claim:

A functional language must have a notion of function

(in order to make this fully formal you’d probably have to assert some more properties functions have to satisfy. I can’t be bothered to do that).

Hopefully this claim is uncontroversial.

But what have we done here? We’ve, based on commonly agreed statements, proved that Brainfuck is not functional without having defined “functional programming language”. i.e. my claim that you need a definition in order to meaningfully claim that a language is not functional is false.

What you need in order to make this claim is a necessary condition for the language to be functional. Then on showing that condition does not hold you have demonstrated the dysfunctionality of the language.

But how do we arrive at necessary conditions without a definition? Well, we simply assert them to be true and hope that people agree. If they do agree, we’ve achieved a basis on which we can conduct an argument. If they don’t agree, we need to try harder.

A lot of moral arguments come down to this sort of thing. Without wanting to get into details, things like arguments over abortion or homosexuality frequently come down to arguments over a basic tenet: Do you consider a fetus to be of equal value to a human life, do you consider homosexuality to be inherently wrong, etc. (what I said about arguments RE Scala holds in spades for arguments on these subjects). It’s very rare for one side to convince the other of anything by reasoned argument, because in order to construct a reasoned argument you have to find a point of agreement from which to argue and that point of agreement just isn’t there.

Mathematically speaking, what we’re talking about is an Axiom. Wikipedia says:

In traditional logic, an axiom or postulate is a proposition that is not proved or demonstrated but considered to be either self-evident, or subject to necessary decision. Therefore, its truth is taken for granted, and serves as a starting point for deducing and inferring other (theory dependent) truths.

I consider this definition to be true, but perhaps a bit obfuscated. I’d like to propose the following definition. It’s overly informal, but I find it’s a better way to think about it:

An axiom is a point which we agree to consider true without further discussion as a basis for arriving at an agreement.

(This may give the hardcore formalists a bit of a fit. If so, I apologise. :-) It is intended to be formalist more in spirit than letter )

The most important part of this is that axioms are social tools. They don’t have any sort of deeper truth or meaning, they’re just there to form a basis for the discussion.

This entry was posted in Numbers are hard, rambling nonsense and tagged , on by .

Old mathematics posts

I’ve imported my old maths blog, A Mathematician’s Scratchpad. It’s available under the category mathematics. Unfortunately I can’t get the LaTeX to compile. The old LaTeX-render plugin I used no longer works with the latest version of wordpress, and I’m experiencing a host of problems with the new one (not least among them “It makes my site shit-slow”), so I’ve disabled it. Hopefully it should be reasonably readable anyway.

Most likely none of this stuff is particularly interesting to anyone who reads this blog currently, but I’m enjoying the nostalgia trip. :-)

This entry was posted in Numbers are hard on by .

Silly Proofs 3

Woo hoo. Blog is back. :-)

Here’s a new silly proof I spotted recently.

Theorem: Let \(f : \omega_1 \to \mathbb{R}\) be continuous. Then \(f\) is eventually constant.

Proof:

This proof assumes the that \(2^{\aleph_0} > \aleph_1\). The result doesn’t actually need this though, which is one of the main reasons this proof is silly.

So, \(f\) is continuous. \(\omega_1\) is countable compact, thus so is \(f(\omega_1)\). But \(\mathbb{R}\) is a metric space, so countably compact subsets are compact. But every compact subspace of \(\mathbb{R}\) has cardinality \(\aleph_0\) or \(2^{\aleph_0}\). We know that \(2^{\aleph_0} > \aleph_1\), so it can’t be \(2^{\aleph_0}\). Hence it has cardinality \(\aleph_0\). By the pigeon hole principle we must have \(f\) being constant on some uncountable set. But for any \(t\) the set \(\{ x : f(x) = t \}\) is closed, with these being disjoint for distinct values of \(t\). You can’t have disjoint uncountable closed sets in \(\omega_1\), so all but one of these sets must be countable. Thus take an upper bound for all the countable subsets, say \(y\). \(f\) is constant on \( [y, \omega_1) \).

This entry was posted in Numbers are hard on by .

A New Theorem?

I can’t actually take much credit for this. I made the initial conjecture that sparked this theorem, but my friend John Bytheway was the first person to codify the actual theorem and prove it. My proof of it is pretty independent of his, but I probably wouldn’t have come up with it unless I already knew the theorem was true. (The neccesary part of the theorem is stolen from him, but the sufficiency part is entirely mine).

Note: In this post I take the slightly unconventional approach that a Normal space needn’t be \(T_1\). i.e. a Normal topological space is one in which any two disjoint closed sets have disjoint neighbourhoods, but points needn’t be closed. I could invent a new term for this, like quasinormal, but I really can’t be bothered. Feel free to replace ‘normal’ with ‘quasinormal’ wherever you see it if this makes you more comfortable. It may be readily verified that the usual proof of Urysohn’s lemma in no way depends on the closedness of points, so Urysohn’s lemma holds for this new definition of normal.

First we need some preliminary definitions.

Definition 1:

Let \(X\) be a topological space and \(f : X \to \mathbb{R}\) a function, not neccesarily continuous. For \(x \in X\) we define the oscillation of \(f\) at \(x\) \to be

\(\omega_f(x) = \inf\limits_{U \ni x} \mathrm{diam} f(U)\)

where \(U\) ranges over open sets.

We define the total oscillation of \(f\) to be

\(\delta(f) = \sup\limits_{x \in X} \omega_f (x) \)

We now prove some preliminary results about \(\delta\)

Proposition 2:

Let \(X\) be an arbitrary topological space and consider \(B(X)\) the Banach space of bounded functions on \(X\) and \(C(X)\) the closed subspace consisting of the continuous bounded functions. Consider \(\delta : B(X) \to [0, \infty)\)

  1. \(\delta(f) = 0\) iff \(f\) is continuous.
  2. \(\delta(f + g) \leq \delta(f) + \delta(g)\)
  3. \(\delta(tf) = |t| \delta(f)\)
  4. \(\delta(f) \leq 2 ||f||\)
  5. \(\delta(f) \leq 2 d(f, C(X))\)

These are all perfectly trivial to prove, so I’m not going to bother.

What I noticed is that in almost every case I considered the final inequality was in fact an equality. I could prove a weaker result for Compact hausdorff spaces (I showed that \(||f|| \leq \delta(f)\), but I couldn’t do any better, so I passed this over to John to see what he could come up with. He came up with the following theorem, which is the main theorem of this post:

\(\delta(f) = 2 d(f, C(X))\) for every \(f \in B(X)\) iff \(X\) is normal.

I’ll prove this in two parts. For the right to left implication I’ll in fact prove something stronger:

Theorem 4:

Let \(X\) be a normal topological space and let \(f \in B(X)\). Then there is a (not usually unique) continuous function \(h\) with \(||f – h|| = 2 \delta(f)\).

As is my wont, the proof of this will precede by a couple clever definitions and then drop out as practically a corollary of a Big Theorem.

The big theorem in question is the following, which is due to Tong. I conjectured it, tinkered around with proving it for a bit, went to look up something about semicontinuous functions in Engelking’s general topology book and saw the theorem staring out at me from one of the exercises.

Theorem 5:

Let \(X\) be a normal topological space. Let \(f, g : X \to \mathbb{R}\) be upper semicontinuous and lower semicontinuous respectively with \(f \leq g\). There is a continuous function \(h\) with \(f \leq h \leq g\).

Note the direction of the inequality and which are upper and lower semicontinuous respectively. If you reverse this then the theorem becomes false.

I’m not actually going to prove this here – I’ve not yet totally sorted out the details of the proof in my mind. It’s basically a modified version of the standard proof of Urysohn’s lemma, but with additional constraints on the sets constructed. (Update: See here for a proof.)

Anyway, we now make some more definitions:

Definition 6:

Let \(f \in B(X)\). Define

\(f^*(x) = \inf\limits_{U \ni x} \sup f(U)\)

\(f_*(x) = \sup\limits_{U \ni x} \inf f(U)\)

where U ranges over open sets.

Proposition 7:

These satisfying the following properties:

  1. \(f_* \leq f \leq f^*\)
  2. \(f_*\) is lower semicontinuous. \(f^*\) is upper semicontinuous.
  3. If \(f\) is upper semicontinuous then \(f^* = f\). Similary if \(f\) is lower semicontinuous then \(f_* = f\).
  4. The maps \(f \to f^*\) and \(f \to f_*\) are monotone with respect to the pointwise ordering.
  5. If \(g, h\) are lower, upper semicontinuous respectively and \(g \leq f \leq h\) then \(g \leq f_* \leq f \leq f^* \leq h\)
  6. \(\omega_f(x) = f^*(x) – f_*(x)\)

Again, these are all really very easy to prove (assuming you prove them in order), so I’m not going to do it. I’ll actually not use most of these, but those that I don’t use are of independent interest. i.e. they’re cool. :-)
Now, we have:

Proof of theorem 4:

Note that \(\delta(f) = \sup (f^*(x) – f_*(x)\). Consequently we have that

\( f^* – \frac{1}{2}\delta(f) \leq f_* + \frac{1}{2} \delta(f) \)

Now, the left hand side is upper semicontinuous and the right hand side is lower semicontinuous. Thus we have an interpolating continuous function \(h\).

So

\( f^* – \frac{1}{2}\delta(f) \leq h \leq f_* + \frac{1}{2} \delta(f) \)

But we have that \(f \leq f^*\) and \(f_* \leq f\).

So

\( f – \frac{1}{2}\delta(f) \leq h \leq f + \frac{1}{2} \delta(f) \)

i.e. \(||f – h|| \leq \frac{1}{2} \delta\)
But we know that \(||f – h|| \geq \frac{1}{2} \delta\) by our very first proposition. Hence we have equality.

QED

Lemma 8:

If for every \(f \in B(X)\) we have \(d(f, C(X)) = \frac{1}{2} \delta(f)\) then \(X\) is normal.

Proof:

This proof is entirely John’s.

Let \(A, B\) be disjoint closed sets. Define \(f : X \to \mathbb{R}\) by \(f|_A = -1\), \(f|_B = 1\) and \(f(x) = 0\) otherwise.

By considering appropriate neighbourhoods we may see that \(\omega_f(x) \leq 1\) for every \(x\). i.e. \(\delta(f) \leq 1\). Consequently we have \(d(f, C(X)) \leq \frac{1}{2}\) and may find a continuous function \(h\) with \(||f – h|| \leq \frac{3}{4}\).

Thus we have that \(h|_A \leq – \frac{1}{4}\) and \(h|_B \geq \frac{1}{4}\). Composing with some appropriate function from \([-1, 1] \to [0, 1]\) we get a continuous function \(g\) which separates the two closed sets. Then \(g^{-1}([0, \frac{1}{2}))\) and \(g^{-1}((\frac{1}{2}, 1])\) are appropriate disjoint neighbourhoods of \(A\) and \(B\).

QED

This entry was posted in Numbers are hard on by .