<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Computability on CS Theorems</title><link>https://cs.lozic.me/areas/computability/</link><description>Recent content in Computability on CS Theorems</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 10 Sep 2027 12:00:00 +0100</lastBuildDate><atom:link href="https://cs.lozic.me/areas/computability/index.xml" rel="self" type="application/rss+xml"/><item><title>The Lambda Calculus and the Y Combinator</title><link>https://cs.lozic.me/posts/t041-the-lambda-calculus-and-the-y-combinator/</link><pubDate>Fri, 10 Sep 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t041-the-lambda-calculus-and-the-y-combinator/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;You are writing a language, or a configuration evaluator, or a template engine,
and you need recursion. So you add a &lt;code&gt;letrec&lt;/code&gt; form, and now the evaluator needs
to bind a name before the value it names exists. You reach for a mutable cell, a
placeholder that gets patched after construction, and something about it feels
like cheating.&lt;/p&gt;</description></item><item><title>Kolmogorov Complexity</title><link>https://cs.lozic.me/posts/t023-kolmogorov-complexity/</link><pubDate>Fri, 09 Apr 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t023-kolmogorov-complexity/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;You have two files, each exactly one megabyte.&lt;/p&gt;
&lt;p&gt;The first is a megabyte of the byte &lt;code&gt;0x00&lt;/code&gt;. The second is a megabyte from
&lt;code&gt;/dev/urandom&lt;/code&gt;. Gzip the first and you get a few hundred bytes. Gzip the second
and you get slightly more than a megabyte, because the header costs something and
there is nothing to exploit.&lt;/p&gt;</description></item><item><title>Reductions</title><link>https://cs.lozic.me/posts/t017-reductions/</link><pubDate>Fri, 05 Feb 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t017-reductions/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;You have a new problem. Your build system needs to decide whether two
configuration files can ever produce conflicting outputs. Or your linter needs to
decide whether a regex with backreferences can match a string of a given length.
Or your scheduler needs to decide whether a set of periodic tasks is feasible.&lt;/p&gt;</description></item><item><title>Kleene's Recursion Theorem</title><link>https://cs.lozic.me/posts/t014-kleenes-recursion-theorem/</link><pubDate>Fri, 15 Jan 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t014-kleenes-recursion-theorem/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Write a program that prints its own source code. No file I/O, no reading
&lt;code&gt;__file__&lt;/code&gt;, no cheating.&lt;/p&gt;
&lt;p&gt;The first attempt fails instantly. To print the source you must contain the
source, and then the containing text is also part of the source, so you must
contain that too. The regress is obviously infinite, and most people conclude
after ten minutes that the task is impossible.&lt;/p&gt;</description></item><item><title>The Universal Machine</title><link>https://cs.lozic.me/posts/t013-the-universal-machine/</link><pubDate>Fri, 01 Jan 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t013-the-universal-machine/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;You write a Python program. It runs. What ran it?&lt;/p&gt;
&lt;p&gt;CPython — itself a program, written in C, compiled to x86 instructions, executed
by a CPU whose control unit is arguably interpreting microcode, possibly inside
a virtual machine, on a kernel that scheduled it, all perhaps within a container
image. At no point in that stack does anyone find it strange that a program&amp;rsquo;s
job is running other programs. We build emulators, JITs, WebAssembly runtimes,
Docker, QEMU, and browsers that download and execute arbitrary code from
strangers, and treat every layer as ordinary engineering.&lt;/p&gt;</description></item><item><title>The Church–Turing Thesis</title><link>https://cs.lozic.me/posts/t012-the-church-turing-thesis/</link><pubDate>Fri, 25 Dec 2026 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t012-the-church-turing-thesis/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Somebody says &amp;ldquo;CSS is Turing-complete&amp;rdquo; and the room splits. Half the people
treat it as a joke about a styling language, the other half as a serious claim
with consequences. Both reactions are common and only one is right.&lt;/p&gt;</description></item><item><title>Rice's Theorem</title><link>https://cs.lozic.me/posts/t011-rices-theorem/</link><pubDate>Fri, 16 Oct 2026 12:00:00 +0200</pubDate><guid>https://cs.lozic.me/posts/t011-rices-theorem/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;The security team asks for a scanner with no false positives and no false
negatives. Every piece of malware caught, nothing legitimate quarantined.&lt;/p&gt;
&lt;p&gt;The platform team asks whether the analyzer can flag every function that
performs I/O, so the pure ones can be cached automatically.&lt;/p&gt;</description></item><item><title>The Halting Problem</title><link>https://cs.lozic.me/posts/t010-the-halting-problem/</link><pubDate>Fri, 09 Oct 2026 12:00:00 +0200</pubDate><guid>https://cs.lozic.me/posts/t010-the-halting-problem/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Your CI has a test that hangs. Not fails — hangs. Somebody suggests the obvious
fix: before running a test, check whether it terminates, and skip it if not.&lt;/p&gt;</description></item><item><title>Cantor's Diagonal Argument</title><link>https://cs.lozic.me/posts/t002-cantors-diagonal-argument/</link><pubDate>Fri, 02 Oct 2026 12:00:00 +0200</pubDate><guid>https://cs.lozic.me/posts/t002-cantors-diagonal-argument/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Somebody proposes a tool that will find all the bugs. Not most bugs. All of
them. The pitch has the shape: we enumerate the failure modes, we write a
checker for each, we keep adding checkers, and the set of undetected bugs
shrinks toward zero.&lt;/p&gt;</description></item></channel></rss>