- If ETH is true then Clique requires time \(2^{\Omega(n)}\) on \(n\)-vertex graphs, or \(2^{\Omega(\sqrt{m})}\) on graphs with \(m\) edges.
- If ETH is true then finding a clique of size \(k\) cannot be done in time \(f(k)\,n^{o(k)}\) for any computable function \(f\), so the trivial \(n^{O(k)}\) algorithm is essentially optimal.
- If SETH is true then the orthogonal vectors problem on \(n\) vectors of dimension \(\omega(\log n)\) cannot be solved in time \(n^{2-\epsilon}\) for any \(\epsilon > 0\).
Computational Complexity
Computational Complexity and other fun stuff in math and computer science from Lance Fortnow and Bill Gasarch
Wednesday, October 28, 2026
The Exponential Time Refutation
Sunday, October 25, 2026
When is it plausible that a result is optimal?
(Lance and Bill did a vidcast about the OpenAI Document Drop. See here. My spellcheck thinks that vidcast and OpenAI are not words.)
The Metric TSP problem is TSP where, for all vertices \(x,y,z\),
\(w(x,z) \le w(x,y) + w(y,z) \).
In 1976 Christofides and Serdyukov (independently of each other) showed that there is a poly time algorithm for a 1.5-approx to Metric TSP.
Some people thought the 1.5 could be improved.
Some people thought that 1.5 is optimal.
1.5 is a natural number. Hmm, that's not quite right. 1.5 is a pretty number. It would not be a surprise if someone had proven
If there is a poly time (\(1.5-\epsilon\)) approx then P=NP.
Indeed, people tried to prove that.
In 2020 Anna R. Karlin, Nathan Klein, and Shayan Oveis Gharan proved
there is a poly time (\(1.5-\frac{1}{10^{36}}\)) approximation algorithm.
Darling thinks this result is hilarious. I tried to tell her that the result is important since
a) We now know that 1.5 is NOT optimal.
b) One of the authors, Nathan Klein, had been in my REU program in 2015.
c) The arxiv version has one author using their middle initial, one author doing nothing for their middle name, and one author spelling out their entire middle name. I think that's unusual.
She was not impressed.
Nobody believes that \(1.5-\frac{1}{10^{36}}\) is optimal.
Is there a current conjecture? Klein told me he thinks 4/3. A pretty number.
The recent results on Matrix Mult and Int Mult give a contrast involving pretty runtime and ugly runtimes.
MATRIX MULT
Let \(\omega\) be the least \(a\) such that two \(n\times n\) matrices can be multiplied together with \(O(n^a)\) operations. This definition is not quite right for two reasons:
(i) It is possible (though I think unlikely) that there is no least \(a\), For example, if there is a sequence of algorithms with runtime \(O(n^{2.1})\), \(O(n^{2.01})\), \(O(n^{2.001})\), \(\ldots\), then there is no least \(a\),
(ii) It is possible (though I thought unlikely before Oct 6, 2026), that the runtime may be different over different fields.
We keep the incorrect definition to prove that ChatGPT is not the boss of me.
Here are some known results. I may have missed some:
The traditional algorithm: \(\omega\le 3\).
Strassen's Algorithm (1969): \(\omega\le \log_2 7 = 2.807\ldots \).
Coppersmith-Winograd (1990): \(\omega \le 2.376\ldots \).
Stothers (2010): \(\omega \le 2.3736\ldots\).
Wednesday, October 21, 2026
Reading Messy Proofs
In fall of 1985 when I started graduate school, my advisor Michael Sipser asked me to read an early handwritten manuscript by Johan Håstad of his switching lemma. I spent many hours decoding the notation and working through the messy conditional probabilities until I felt I had checked every step of the proof. When I started presenting this to Sipser, he stopped me and said he didn't want the details but instead the intuition of the proof. I had nothing.
I'm reminded of this story as I hear the complaints of how badly OpenAI wrote the 712 papers released on October 6th, as though humans wrote crystal-clear proofs beforehand, definitely not the case in general, especially in the early versions.
Noam Nisan once told me that reading a badly written proof leads to better understanding since you really need to figure out the details instead of having them neatly spelled out. Perhaps, but do not use this as an excuse for not taking the time to write the details properly.
I approach reading the proof of a new result by assuming the proof is wrong until I'm convinced otherwise. Working my way through early versions of Immerman-Szelepcsényi and Toda's theorem definitely forced me to understand these proofs well so I could explain them to others.
I just gave up on fully understanding some results like the original PCP theorem and Ran Raz's Parallel Repetition Theorem, despite seeing the authors give talks on the papers. Sometimes you have to trust the authors and others who hopefully have read the paper. Don't even get me started on László Babai's Graph Isomorphism in quasipolynomial time. And some papers, like Primes in P, require mathematical results in other subfields that I just have to accept.
Sometimes you'll just get better versions of proofs, most famously Irit Dinur's combinatorial proof of the PCP theorem. I only really understood the switching lemma years later when Sophie Laplante and I wrote a Kolmogorov complexity-based proof building on a then-new proof of Alexander Razborov.
When I get stuck in a proof, I sometimes ask the authors, but usually as a last resort unless I can talk to them in person. That's an advantage we have now: you can ask AI to get you over a hurdle in a proof. Claude, while maybe not as good at proving theorems as the unreleased OpenAI model, does a better job writing them up. And one hopes that we'll see simplified and possibly strengthened versions of some of these important results, written by humans or human-AI collaborations. Maybe we'll even get the intuition Sipser told me to seek all those years ago.
Sunday, October 18, 2026
AI, Math, the document-drop. Non-Tech Thoughts
So what to make of OpenAI and the future of Math? Here are some points I've either:
thought of myself or heard from a human or read from an AI.
Throughout this post I use the term AI to mean an AI system that produces mathematical results. I decline to say OpenAI or Anthropic as generic terms since about 20 years ago I used Intrade as a generic term for Betting Markets---then Intrade went out of business. I wish I had bet on that happening. Oh well.
1) Some of the proofs were Lean-formalized and some were not. If a proof is Lean-verified do we know the proof is valid? The issue is not bugs in Lean. The issue is that coding a theorem/proof into Lean may be done incorrectly. So Lean might be verifying a proof of a theorem different than what was intended.
Thursday, October 15, 2026
Complexity and Lean
In the OpenAI Math Drop some papers have Lean proofs, others don't, including L = RL = BPL. Why is it hard to formalize results on complexity classes?
Let's consider an example, Lautemann's proof that BPP is in \(\Sigma^p_2\). It's a beautiful proof because it comes down to a single formula. I gave the full proof in a 2025 post, but to remind you, here is the setup.
Let \(B\) be in BPP, accepted by a probabilistic polynomial-time Turing machine \(M\) with error bounded by \(2^{-n}\). Let \(A(x,r)\) be true iff \(M(x)\) using random tape \(r\) accepts. \(A(x,r)\) is deterministically polynomial-time computable. We can assume \(|r|=|x|^k\) for some \(k\).
Here is the \(\Sigma^p_2\) expression for input \(x\) of length \(n\). All quantification is over binary strings of length \(n^k\). Let \(\oplus\) be bitwise parity (XOR) and \(\vee\) be logical OR.
\[\exists z_1,\ldots,z_{n^k}\ \forall y\ \ A(x,z_1\oplus y) \vee \cdots \vee A(x,z_{n^k}\oplus y)\]The hard part of the proof, besides coming up with this formula itself, is the probabilistic argument to show you always get the right answer.
So this seems simple enough to give a full Lean proof. And it is not too hard (for Claude) to get Lean to formalize the probabilistic argument, though even there Lean makes you deal with details we wave away on paper. When \(x\not\in B\) the argument needs \(n^k2^{-n}<1\), which fails for small \(n\), so short inputs need separate handling. But you also need to show the following:
Let \(A(x,r)\) be polynomial-time computable. Then given \(x\), \(y\) and the \(z_i\) as inputs, you can compute \(A(x,z_1\oplus y) \vee \cdots \vee A(x,z_{n^k}\oplus y)\) in polynomial time, where \(u\oplus v\) is bitwise parity.
There is nothing challenging about this statement. It is so painfully obviously true that I didn't even bring up this point in the 2025 post. But proving you can do this in polynomial time on a Turing machine, even though the only operations are bitwise parity, ORs and composition, is just very complicated to formalize in Lean.
Some suggest that using Cobham's characterization might be easier. But see below for what you need to do for bitwise parity alone. Imagine how complicated it would all get for something like Toda's theorem.
Update: Since I first drafted this post, OpenAI dropped a claimed Lean proof of L = RL = BPL, so maybe ignore this whole post?
Cobham defined his class as the smallest set of functions on the natural numbers (viewed as binary strings, with \(|x|\) the length of \(x\) and \(|0|=0\)) that contains the constant zero, the projections, the two successor functions \(s_0(x)=2x\) and \(s_1(x)=2x+1\), and the smash function \(x\#y=2^{|x|\cdot|y|}\), and that is closed under composition and bounded recursion on notation. The second operation defines a new function \(f\) from functions \(g\), \(h_0\), \(h_1\) in the class by \[\begin{aligned} f(0,\vec{y})&=g(\vec{y})\\ f(s_i(x),\vec{y})&=h_i(x,\vec{y},f(x,\vec{y})) \end{aligned}\] for \(i\in\{0,1\}\) and \(s_i(x)\neq 0\), provided that \(f(x,\vec{y})\leq k(x,\vec{y})\) for some \(k\) already in the class. The recursion runs over the bits of \(x\), so it takes only \(|x|\) steps. The smash function gives the outputs polynomial growth in their lengths, and the bound \(k\) keeps that growth from compounding over the recursion. Cobham's theorem says that this class is exactly the set of functions computable in polynomial time.
As an example, consider bitwise XOR, \(f(x,y)=x\oplus y\). The difficulty is that bounded recursion on notation peels bits off only one argument, while XOR has to move through \(x\) and \(y\) together. The fix is to recurse on a long enough counter \(T\) and extract the bits of \(x\) and \(y\) by shifting. We first need four helper functions, each defined by a single bounded recursion on notation: \[\begin{aligned} \mathrm{par}(0)=\mathrm{par}(s_0(x))&=0, & \mathrm{par}(s_1(x))&=1\\ \mathrm{half}(0)&=0, & \mathrm{half}(s_i(x))&=x\\ \mathrm{msp}(0,x)&=x, & \mathrm{msp}(s_i(w),x)&=\mathrm{half}(\mathrm{msp}(w,x))\\ C(0,u,v)=C(s_0(a),u,v)&=u, & C(s_1(a),u,v)&=v \end{aligned}\] with bounds \(1\), \(x\), \(x\) and \(s_1(u)\#s_1(v)\) respectively. Here \(\mathrm{msp}(w,x)=\lfloor x/2^{|w|}\rfloor\), so bit \(j\) of \(x\) is \(\mathrm{par}(\mathrm{msp}(w,x))\) for any \(w\) with \(|w|=j\). \(C\) is a conditional on the low bit of \(a\). Composition then gives the XOR of the low bits of \(a\) and \(c\), \(\beta(a,c)=C(a,\mathrm{par}(c),C(c,1,0))\), and appending the low bit of \(b\) to \(z\), \(\mathrm{app}(b,z)=C(b,s_0(z),s_1(z))\).
Now we recurse on \(w\) with \(T\), \(x\) and \(y\) as parameters, building the answer from the top bit down. Let \(m_i=\mathrm{msp}(s_i(w),T)\), which has length \(|T|-|w|-1\), the position of the next bit to append, and let \(b_i=\beta(\mathrm{msp}(m_i,x),\mathrm{msp}(m_i,y))\) be that bit of \(x\oplus y\). Then \[\begin{aligned} G(0,T,x,y)&=0\\ G(s_i(w),T,x,y)&=\mathrm{app}(b_i,G(w,T,x,y)) \end{aligned}\] By induction, \(G(w,T,x,y)\) is \(x\oplus y\) shifted right by \(|T|-|w|\) bits, so it is bounded by \(s_1(x)\#s_1(y)\). Finally we set \[f(x,y)=G(T,T,x,y)\quad\text{where } T=s_1(x)\#s_1(y).\] The smash gives \(|T|=(|x|+1)(|y|+1)+1\geq\max(|x|,|y|)\), so the recursion starts above the high bits of both arguments, where every bit is zero. \(T\) is much longer than it needs to be, but that costs only polynomially many extra steps.
Sunday, October 11, 2026
Conjectures that I thought would not be proved in my lifetime....were
Lance blogged on the OpenAI solutions to many problems here and also created a website of the TCS-related problems OpenAI claims to have solved here.
Terry Tao seems to have had an infinite number of guest bloggers talking about AI and Math even before the OpenAI .... WE NEED A WORD FOR IT. My proofreader suggests GARBARGE DUMP. I prefer the more neutral DOCUMENT DUMP.
Scott blogged about what he calls the Mathocalypse
Peter Woit weighted in on what he calls the Slopocalypse. He has many astute observations. Among them: he has good reasons to think that Lean-formalized does not necessarily mean that a proof is correct. For another skeptical-of-Lean viewpoint see here.
Now it's my turn to comment on the DOCUMENT DUMP. For now I will just discuss some of the results without getting into what it means for the future of mathematics, the future of academia, and the future of humanity.
--------------------------------
1) Let \(G\) be the graph whose vertex set is \(\mathbb{R}^2\), with an edge between every pair of points exactly a unit distance apart. The chromatic number \(\chi(G)\) is called the chromatic number of the plane. For nearly 70 years, all that was known was \( 4\le \chi\le 7\). We denote \(\chi(G)\) by \(\chi\).
GOOD NEWS: the manuscript is here.
Wednesday, October 07, 2026
Open No More
I wrote the post below last week. That was a quaint and quiet time. Last night OpenAI released a treasure trove of 722 manuscripts solving 372 major open problems in mathematics including from theoretical computer science:
- A proof of the unique games conjecture (formalized in Lean)
- A full derandomization of randomized log space
- Matrix multiplication in \(n^{2.25+\epsilon}\) time (formalized in Lean)
Adam Bouland, Andrew Huang, Anand Natarajan, Itay Shalit and Avishay Tal posted a paper giving an oracle where \(\mathrm{BQP}\) is not in \(\mathrm{IP}\) (interactive proofs). Now \(\mathrm{BQP}\) is in \(\mathrm{IP}\) since \(\mathrm{BQP}\subseteq\mathrm{PSPACE}=\mathrm{IP}\), but the \(\mathrm{IP}=\mathrm{PSPACE}\) proof doesn't relativize and Bouland et al. show you can even get an oracle that puts \(\mathrm{BQP}\) out of \(\mathrm{IP}\).
The paper also states "Together with recent work due to Scott Aaronson, Anand Natarajan, Avishay Tal, and Ági Villányi, our work also gives the first oracle separation between IP and MIP, answering a question dating back to Fortnow's thesis." \(\mathrm{MIP}\) is the set of languages with multi-prover interactive proofs.
When I saw this paper, I pulled my PhD thesis off the shelf and indeed on page 40 I wrote "What is the relation between MIP and IP? Is there, for instance, an oracle separating the two classes".
When I wrote the thesis in 1989 we didn't know yet that \(\mathrm{IP}=\mathrm{PSPACE}\) and \(\mathrm{MIP}=\mathrm{NEXP}\) so we really didn't have any idea whether multiple provers actually gave you more power than one prover. When László Babai, Carsten Lund and I proved \(\mathrm{MIP}=\mathrm{NEXP}\) a year later, we had strong evidence that \(\mathrm{IP}\neq\mathrm{MIP}\) since we believe that \(\mathrm{PSPACE}\neq\mathrm{NEXP}\). However since the proof that \(\mathrm{MIP}=\mathrm{NEXP}\) doesn't relativize either, the question of the oracle separation between \(\mathrm{IP}\) and \(\mathrm{MIP}\) remained open until the Bouland et al. paper.
Finally, Eshan Chattopadhyay, Pooya Hatami, Chin Ho Lee, Shachar Lovett, Avishay Tal and Emanuele Viola gave new exponential correlation bounds for polynomials. The authors use that bound to give a new pseudorandom generator against \(\mathrm{AC}^0[\oplus]\) circuits.
When I saw the paper I realized one could use this generator to show that \(\text{Almost-}\oplus\mathrm{P}=\mathrm{BPP}^{\oplus\mathrm{P}}\), answering a question I had wondered about in the 90s. Here \(\text{Almost-}\oplus\mathrm{P}\) is the class of languages \(L\) such that \(L\in\oplus\mathrm{P}^R\) with probability one for a random oracle \(R\). This in turn could be used to give an alternative proof of Toda's theorem. Ken Regan and Jim Royer showed that relative to a random oracle the polynomial-time hierarchy is contained in \(\oplus\mathrm{P}\), so \(\mathrm{PH}\subseteq\text{Almost-}\oplus\mathrm{P}=\mathrm{BPP}^{\oplus\mathrm{P}}\). It would take me a long time to work out and write up the details so I had Claude do it for me.
I still have many more open problems, see for example my survey of open oracle questions. I'd be happy to see them solved. Feel free to use AI but verify the proof. You too could get mentioned on this blog.
Sunday, October 04, 2026
How many humans does it take to make tech seem human? Do you want to be one of them?
(This was written about 9 months ago. Its not out of date... yet)
People think that AI is going to DESTROY some jobs and CREATE some jobs. It may be too early to tell if this is true. Even so, here are some thoughts.
1) Who will win? Who will lose?
2) Historically in the long term society was better off after a tech change (e.g., we live longer now than we did in the farm-era). Will that happen here as well?
3) We have some sense of what kinds of jobs will be destroyed. But what kind will be created? Will they be interesting? See later in this blog for a job you might not have thought of.
4) Many jobs will change. If you are over X years old then think about how much technology has changed your job even before the AI revolution. (The value of X may vary depending on how high-tech you are.)
For an intelligent view of the questions above, see here.
For my view of one aspect of this, read on.
There is one job which has been either created or expanded by AI:
Annotator.
(See here for an ARTICLE about these jobs, from which I got most of the rest of this post. The word ARTICLE is in caps so when I refer to it later you'll know what I am referring to.)
The job consists of looking at pictures and labeling things.
Here is a direct quote from the manual:
LABEL real items that can be worn by real people.
Does Lady Gaga count as a real person? She sometimes wears dresses made of meat. Should that count? See here for a real article about her and see here for the Weird Al parody of Born that Way. Note that this is Weird AL, not Weird Artificial Intelligence. (See here for the Weird AI for Weird AL problem.)
They do this to create data for AI.
a) The jobs don't pay well though there are some exceptions.
b) The jobs are boring though there are some exceptions (and that may depend on the worker).
c) This job is needed because AI keeps running into edge cases. This may have happened with AI's attempts to solve my GROUP ONE-GROUP TWO prez-VP problem from a prior blog post here or my baseball-brother-pitchers post here.
c) KEY: People in AI used to think this is a temporary thing and these jobs will soon be automated. This might not be the case. There are SO MANY edge cases that AI encounters. The more we expect from AI the more edge cases there will be.
A quote from page 26 (of the ARTICLE pointed to above) which is informative if you can parse it. I think.
Put another way, ChatGPT seems so human because it was trained by an AI that was mimicking humans who were rating an AI that was mimicking humans who were pretending to be a better version of an AI that was trained on human writing.