<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Reversing lists, and on how formal methods are not an unambiguously useful tool for software verification</title>
	<atom:link href="http://thetarpit.org/2017/reversing-lists/feed" rel="self" type="application/rss+xml" />
	<link>http://thetarpit.org/2017/reversing-lists</link>
	<description>"Now I feel like I know less about what that blog is about than I did before."</description>
	<pubDate>Thu, 16 Apr 2026 07:03:35 +0000</pubDate>
	<generator>http://thetarpit.org</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Verisimilitude</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-1816</link>
		<dc:creator>Verisimilitude</dc:creator>
		<pubDate>Sun, 13 Mar 2022 02:48:30 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-1816</guid>
		<description>&lt;blockquote&gt;property-based testing&lt;/blockquote&gt;
I suppose there are worse names than &lt;i&gt;property-based proving&lt;/i&gt;, and it fits well enough.  I'll still call it by the name I've already chosen.

&lt;blockquote&gt;On the other hand: are you familiar with cellular automata? The tables remind me of that.&lt;/blockquote&gt;
Yes.  Well, the most general such implementations are simple table indexing, so I can certainly see the relation.

It's very freeing, to be able to prove a program works, without thinking about it.</description>
		<content:encoded><![CDATA[<blockquote><p>property-based testing</p></blockquote>
<p>I suppose there are worse names than <i>property-based proving</i>, and it fits well enough.  I'll still call it by the name I've already chosen.</p>
<blockquote><p>On the other hand: are you familiar with cellular automata? The tables remind me of that.</p></blockquote>
<p>Yes.  Well, the most general such implementations are simple table indexing, so I can certainly see the relation.</p>
<p>It's very freeing, to be able to prove a program works, without thinking about it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: spyked</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-1812</link>
		<dc:creator>spyked</dc:creator>
		<pubDate>Sat, 12 Mar 2022 10:26:13 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-1812</guid>
		<description>In re: tabular programming: it reminds me on one hand of the so-called "property-based testing", which may be used to automatically generate (as in your linked-list example above) tests emerging from a pre-specified general property, which can be then mechanically verified. On the other hand: are you familiar with cellular automata? The tables remind me of that.</description>
		<content:encoded><![CDATA[<p>In re: tabular programming: it reminds me on one hand of the so-called "property-based testing", which may be used to automatically generate (as in your linked-list example above) tests emerging from a pre-specified general property, which can be then mechanically verified. On the other hand: are you familiar with cellular automata? The tables remind me of that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Verisimilitude</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-1806</link>
		<dc:creator>Verisimilitude</dc:creator>
		<pubDate>Sat, 12 Mar 2022 01:34:43 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-1806</guid>
		<description>I like how that proof didn't focus on proving the constant time properties, and instead introduced explicit control to make it easier to prove.  I should wait to comment on it until after I resume reading FFA.

&lt;blockquote&gt;The difference is that the approach in the current article attempts to over-formalize the mathematical proof for mechanical processing, which is unfortunately the curse of most (all?) "computer-assisted proof systems" devised to date.&lt;/blockquote&gt;

So, no thoughts on my method, then?

Consider a more interesting way to prove those two list algorithms: Consider using a very small memory space of linked-lists, so that every possibility may be enumerated; prove every possible combination be correct; prove the algorithm doesn't depend on the memory space, which can be done by construction; and then prove the size of the memory space be irrelevant.  This can be done mechanically, to good success.  Machines can easily compare billions of values; they should be used like this to prove things more often.</description>
		<content:encoded><![CDATA[<p>I like how that proof didn't focus on proving the constant time properties, and instead introduced explicit control to make it easier to prove.  I should wait to comment on it until after I resume reading FFA.</p>
<blockquote><p>The difference is that the approach in the current article attempts to over-formalize the mathematical proof for mechanical processing, which is unfortunately the curse of most (all?) "computer-assisted proof systems" devised to date.</p></blockquote>
<p>So, no thoughts on my method, then?</p>
<p>Consider a more interesting way to prove those two list algorithms: Consider using a very small memory space of linked-lists, so that every possibility may be enumerated; prove every possible combination be correct; prove the algorithm doesn't depend on the memory space, which can be done by construction; and then prove the size of the memory space be irrelevant.  This can be done mechanically, to good success.  Machines can easily compare billions of values; they should be used like this to prove things more often.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: spyked</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-1773</link>
		<dc:creator>spyked</dc:creator>
		<pubDate>Mon, 07 Mar 2022 09:06:28 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-1773</guid>
		<description>Perhaps you will find my &lt;a href="http://thetarpit.org/2018/ffa-egypt-proof" rel="nofollow"&gt;proof of correctness&lt;/a&gt; for &lt;a href="http://www.loper-os.org/?p=2071" rel="nofollow"&gt;FFA Chapter 5&lt;/a&gt; to be more interesting, but in essence it's another application of structural induction over a very specific programming problem, as is the one above. The difference is that the approach in the current article attempts to over-formalize the mathematical proof for mechanical processing, which is unfortunately the curse of most (all?) "computer-assisted proof systems" devised to date.</description>
		<content:encoded><![CDATA[<p>Perhaps you will find my <a href="http://thetarpit.org/2018/ffa-egypt-proof" rel="nofollow">proof of correctness</a> for <a href="http://www.loper-os.org/?p=2071" rel="nofollow">FFA Chapter 5</a> to be more interesting, but in essence it's another application of structural induction over a very specific programming problem, as is the one above. The difference is that the approach in the current article attempts to over-formalize the mathematical proof for mechanical processing, which is unfortunately the curse of most (all?) "computer-assisted proof systems" devised to date.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Verisimilitude</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-1768</link>
		<dc:creator>Verisimilitude</dc:creator>
		<pubDate>Mon, 07 Mar 2022 00:27:11 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-1768</guid>
		<description>While this was an interesting read, I can't claim to have read it as carefully as a mathematical topic deserves.  Were some trap hidden therein, I didn't come across it.

I've decided upon a different method of proving software correct, one which doesn't require nearly so much thought.  I for now call it Tabular Programming; this article applies it to Roman numerals:
http://verisimilitudes.net/2022-01-31

The basic idea is that a great many things can be represented as a table access, but not everything; by using very simple composition rules, we can use such tables to represent infinity, however; thus the amount of code and computation is reduced to its bare minimum, and a hacker need only check the tables and the few, small rules to prove correctness.  Such programs can trivially be made to have constant time and constant memory properties.  Proving correctness can also be done mechanically, by simply comparing tables for equality, sparing the hacker thought for better things, and this mechanism is easily-understood.

For append and reversal, these methods are overkill; it clearly suffices to prove proper operation for empty list arguments, and then arbitrary lists, and a specialized calculus would make this much more concise.  I've also read the LISP 1.5 programmer's manual, and don't recall McCarthy needing such things therein; the truth was obvious, the truths were the definitions.

Program correctness will come from correctly composing correct components, and I question how much intelligence truly be needed for this.  I'll cease writing before I drone on further.</description>
		<content:encoded><![CDATA[<p>While this was an interesting read, I can't claim to have read it as carefully as a mathematical topic deserves.  Were some trap hidden therein, I didn't come across it.</p>
<p>I've decided upon a different method of proving software correct, one which doesn't require nearly so much thought.  I for now call it Tabular Programming; this article applies it to Roman numerals:<br />
<a href="http://verisimilitudes.net/2022-01-31" rel="nofollow">http://verisimilitudes.net/2022-01-31</a></p>
<p>The basic idea is that a great many things can be represented as a table access, but not everything; by using very simple composition rules, we can use such tables to represent infinity, however; thus the amount of code and computation is reduced to its bare minimum, and a hacker need only check the tables and the few, small rules to prove correctness.  Such programs can trivially be made to have constant time and constant memory properties.  Proving correctness can also be done mechanically, by simply comparing tables for equality, sparing the hacker thought for better things, and this mechanism is easily-understood.</p>
<p>For append and reversal, these methods are overkill; it clearly suffices to prove proper operation for empty list arguments, and then arbitrary lists, and a specialized calculus would make this much more concise.  I've also read the LISP 1.5 programmer's manual, and don't recall McCarthy needing such things therein; the truth was obvious, the truths were the definitions.</p>
<p>Program correctness will come from correctly composing correct components, and I question how much intelligence truly be needed for this.  I'll cease writing before I drone on further.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: spyked</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-632</link>
		<dc:creator>spyked</dc:creator>
		<pubDate>Sun, 06 Jun 2021 12:04:43 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-632</guid>
		<description>In other lulz from the academic space, Australia's science agency pulls the plug on seL4: &lt;a href="https://archive.is/MZlHC" rel="nofollow"&gt;news piece&lt;/a&gt;; &lt;a href="https://microkerneldude.wordpress.com/2021/05/31/trustworthy-systems-research-is-done-are-you-kidding-csiro/" rel="nofollow"&gt;Heiser's comment&lt;/a&gt;.

From my obtuse angle, it looks like Australians have finally figured out that there's no strategic edge to this brain-damaged approach of adding piles of machine-edible annotations that &lt;b&gt;no one else&lt;/b&gt; will read. Dude, specifications are meant to be consumed &lt;b&gt;first&lt;/b&gt; by humans and then, maybe, as an afterthought, verified by machines. There's absolutely no point in rewriting the program as a spec in yet another broken programming language: it's expensive as hell and, owing mainly to the intrinsic property of computers of being &lt;a href="http://thetarpit.org/2020/again-on-general-purpose-tools" rel="nofollow"&gt;systematically misusable&lt;/a&gt;, it yields very rarely and very little.

So in response, instead of addressing this first, you're embarrassing yourself by putting the matter yet again! on the to-do list. What can I say, watching how this obtuseness will destroy you in the not-even-all-that-long term will be sorta fun to watch... as fun as anything can be in the post-&lt;a href="http://thetarpit.org/2020/life-during-the-time-of-covid-the-great" rel="nofollow"&gt;covid&lt;/a&gt; times.</description>
		<content:encoded><![CDATA[<p>In other lulz from the academic space, Australia's science agency pulls the plug on seL4: <a href="https://archive.is/MZlHC" rel="nofollow">news piece</a>; <a href="https://microkerneldude.wordpress.com/2021/05/31/trustworthy-systems-research-is-done-are-you-kidding-csiro/" rel="nofollow">Heiser's comment</a>.</p>
<p>From my obtuse angle, it looks like Australians have finally figured out that there's no strategic edge to this brain-damaged approach of adding piles of machine-edible annotations that <b>no one else</b> will read. Dude, specifications are meant to be consumed <b>first</b> by humans and then, maybe, as an afterthought, verified by machines. There's absolutely no point in rewriting the program as a spec in yet another broken programming language: it's expensive as hell and, owing mainly to the intrinsic property of computers of being <a href="http://thetarpit.org/2020/again-on-general-purpose-tools" rel="nofollow">systematically misusable</a>, it yields very rarely and very little.</p>
<p>So in response, instead of addressing this first, you're embarrassing yourself by putting the matter yet again! on the to-do list. What can I say, watching how this obtuseness will destroy you in the not-even-all-that-long term will be sorta fun to watch... as fun as anything can be in the post-<a href="http://thetarpit.org/2020/life-during-the-time-of-covid-the-great" rel="nofollow">covid</a> times.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The doctorate as a (journey through a) tar pit &#171; The Tar Pit</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-60</link>
		<dc:creator>The doctorate as a (journey through a) tar pit &#171; The Tar Pit</dc:creator>
		<pubDate>Fri, 11 Oct 2019 11:09:23 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-60</guid>
		<description>[...] first part of this journey consisted in studying software that is formally verified at huge costs and which doesn't really fit in head. Fortunately I was also working on some practical problems at [...]</description>
		<content:encoded><![CDATA[<p>[...] first part of this journey consisted in studying software that is formally verified at huge costs and which doesn't really fit in head. Fortunately I was also working on some practical problems at [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The problem of trust &#171; The Tar Pit</title>
		<link>http://thetarpit.org/2017/reversing-lists#comment-52</link>
		<dc:creator>The problem of trust &#171; The Tar Pit</dc:creator>
		<pubDate>Fri, 11 Oct 2019 10:49:23 +0000</pubDate>
		<guid isPermaLink="false">http://wp.thetarpit.org/2017/reversing-lists#comment-52</guid>
		<description>[...] When trust as a whole is broken or otherwise disappears by some other means, society collapses and war ensues. That is not to say that lack of trust (or distrust) is necessarily a cause of war; after all it is not that Genghis Khan didn't trust the peoples he conquered, but that he conquered them first and foremost because he could. Lack of trust is also not a problem in and of itself -- (too much) trust is, especially when it is not accompanied by verification. [...]</description>
		<content:encoded><![CDATA[<p>[...] When trust as a whole is broken or otherwise disappears by some other means, society collapses and war ensues. That is not to say that lack of trust (or distrust) is necessarily a cause of war; after all it is not that Genghis Khan didn't trust the peoples he conquered, but that he conquered them first and foremost because he could. Lack of trust is also not a problem in and of itself -- (too much) trust is, especially when it is not accompanied by verification. [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
