<?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>Automata on CS Theorems</title><link>https://cs.lozic.me/areas/automata/</link><description>Recent content in Automata on CS Theorems</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 26 Nov 2027 12:00:00 +0100</lastBuildDate><atom:link href="https://cs.lozic.me/areas/automata/index.xml" rel="self" type="application/rss+xml"/><item><title>Model Checking, LTL, and Buchi Automata</title><link>https://cs.lozic.me/posts/t049-model-checking-ltl-and-buchi-automata/</link><pubDate>Fri, 26 Nov 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t049-model-checking-ltl-and-buchi-automata/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Your distributed lock service deadlocks once a month. You cannot reproduce it.&lt;/p&gt;
&lt;p&gt;The logs show three nodes in states that, as far as you can reconstruct, should
not co-occur. You add tracing. It does not happen again for six weeks, then
happens twice in a day during a deploy. You write a stress test that runs a
million random interleavings overnight and finds nothing.&lt;/p&gt;</description></item><item><title>The Myhill–Nerode Theorem</title><link>https://cs.lozic.me/posts/t040-the-myhill-nerode-theorem/</link><pubDate>Fri, 06 Aug 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t040-the-myhill-nerode-theorem/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;You need to prove a language is not regular. Everyone points you at the pumping
lemma, and you spend an afternoon losing to it.&lt;/p&gt;
&lt;p&gt;The statement is a nest of quantifiers: for every regular language there exists
a pumping length $p$ such that for every string $w$ with $|w| \ge p$ there exists
a decomposition $w = xyz$ with $|xy| \le p$ and $|y| &amp;gt; 0$ such that for all $i
\ge 0$, $xy^i z$ is in the language. To use it you negate all of that and play a
game against an adversary who picks $p$ and the decomposition while you pick $w$
and $i$.&lt;/p&gt;</description></item><item><title>Kleene's Theorem: Regexes Are Finite Automata</title><link>https://cs.lozic.me/posts/t039-kleenes-theorem-regexes-are-finite-automata/</link><pubDate>Fri, 30 Jul 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t039-kleenes-theorem-regexes-are-finite-automata/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Your service goes down. CPU pinned at 100% on one core, no memory growth, no
error logs, requests timing out.&lt;/p&gt;
&lt;p&gt;The cause is a validation regex — something reasonable-looking like
&lt;code&gt;^(a+)+$&lt;/code&gt;, or in real life a URL or email validator with nested quantifiers —
matched against a 30-character string that happens not to match. The engine is
exploring an exponential number of ways to split the input among the nested
groups, and it will get there eventually, some time after the heat death of
everything.&lt;/p&gt;</description></item><item><title>The Chomsky Hierarchy</title><link>https://cs.lozic.me/posts/t038-the-chomsky-hierarchy/</link><pubDate>Fri, 08 Jan 2027 12:00:00 +0100</pubDate><guid>https://cs.lozic.me/posts/t038-the-chomsky-hierarchy/</guid><description>&lt;h2 id="symptom"&gt;Symptom&lt;/h2&gt;
&lt;p&gt;The most upvoted answer in Stack Overflow history is a refusal to answer. Someone
asked how to match nested HTML tags with a regular expression, and the reply is
a page of escalating horror about the centre not holding. It is funny, and it is
also a theorem, which is not obvious from reading it.&lt;/p&gt;</description></item></channel></rss>