<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: johnbender</title><link>https://news.ycombinator.com/user?id=johnbender</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 23 Oct 2026 10:14:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=johnbender" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[LLMs are making formal software verification feasible at a much larger scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.anthropic.com/research/formal-verification">https://www.anthropic.com/research/formal-verification</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=50202217">https://news.ycombinator.com/item?id=50202217</a></p>
<p>Points: 348</p>
<p># Comments: 205</p>
]]></description><pubDate>Thu, 22 Oct 2026 22:54:43 +0000</pubDate><link>https://www.anthropic.com/research/formal-verification</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=50202217</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50202217</guid></item><item><title><![CDATA[New comment by johnbender in "Compiler Can Undo Your Security Checks"]]></title><description><![CDATA[
<p>A key problem is that compilation operates on an implicit (compiler writers have this in the back of their heads) notion of correctness which is very roughly “preservation of observable behaviors” where “observable” is sequences of system calls and then return value. That is, the final output of a compiler should never add new sequences of observable behaviors.<p>Security properties on the other hand are very often about the relationship between these sequences. For example we like to say that an external observer/attacker can’t distinguish internal state by the external observations (confidentiality) which requires that two observable traces given different hidden values don’t have different observations from the same starting observable state.<p>If you’re an LTS nerd you know this difference as trace properties vs hyper properties. Compilers try to preserve the former but not the latter.<p>Separately there is the problem of “what is observable?” For example, if you include timing in your observable behaviors suddenly the kinds of compiler passes that are able to preserve observations tends to zero rather quickly.</p>
]]></description><pubDate>Sat, 12 Sep 2026 16:49:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49674332</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=49674332</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49674332</guid></item><item><title><![CDATA[New comment by johnbender in "Cpp2Rust: Translates C++ to safe Rust automatically"]]></title><description><![CDATA[
<p>It depends on what “confirmed identical” means. Most compilers (or translators as you like) only guarantee that the output program represents a subset of the behaviors of the input program so it could be that subset is the “safe as in Rust” subset.</p>
]]></description><pubDate>Fri, 10 Jul 2026 21:42:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48865693</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=48865693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48865693</guid></item><item><title><![CDATA[New comment by johnbender in "In Math, Rigor Is Vital. But Are Digitized Proofs Taking It Too Far?"]]></title><description><![CDATA[
<p>I’m confused by the calculus example and I’m hoping someone here can clarify why one can’t  state the needed assumptions for roughed out theory that still need to be proven? That is, I’m curious if the critical concern the article is highlighting the requirement to “prove all assumptions before use” or instead the idea that sometimes we can’t even define the blind spots as assumptions in a theory before we use it?</p>
]]></description><pubDate>Mon, 30 Mar 2026 14:35:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47574907</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=47574907</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47574907</guid></item><item><title><![CDATA[New comment by johnbender in "I built a programming language using Claude Code"]]></title><description><![CDATA[
<p>In principle (and we hope in practice) the person is still responsible for the consequences of running the code and so it remains important they can read and understand what has been generated.</p>
]]></description><pubDate>Tue, 10 Mar 2026 17:20:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47326179</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=47326179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47326179</guid></item><item><title><![CDATA[New comment by johnbender in "Lean 4: How the theorem prover works and why it's the new competitive edge in AI"]]></title><description><![CDATA[
<p>You have identified the crux of the problem, just like mathematics writing down the “right” theorem is often half or more of the difficulty.<p>In the case of digital systems it can be much worse because we often have to include many assumptions to accommodate the complexity of our models. To use an example from your context, usually one is required to assume some kind of fairness to get anything to go through with systems operating concurrently but many kinds of fairness are not realistic (eg strong fairness).</p>
]]></description><pubDate>Sat, 21 Feb 2026 15:50:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47101872</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=47101872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47101872</guid></item><item><title><![CDATA[New comment by johnbender in "AI makes the easy part easier and the hard part harder"]]></title><description><![CDATA[
<p>Compilers don’t do this error free of course BUT if we want them too we can say what it means for a compiler to be correct very directly _one time_ and have it be done for all programs (see the definition for simulation in the CompCert compiler). This is a major and meaningful difference from AI which would need such a specification for each individual application you ask it to build because there is no general specification for correct translation from
English to Code.</p>
]]></description><pubDate>Mon, 09 Feb 2026 02:47:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=46941024</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=46941024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46941024</guid></item><item><title><![CDATA[New comment by johnbender in "Ask HN: What are you working on? (February 2026)"]]></title><description><![CDATA[
<p>Sure!<p>The first is an attempt to provide a semantics for activity diagrams as constraints on a state machine and thereby allow folks to specify correctness properties for the state machine using a visual language. Existing work on semantics for activity diagrams already exists but doesn’t come with tooling in the way that temporal logic does (<a href="https://arxiv.org/pdf/1409.2366" rel="nofollow">https://arxiv.org/pdf/1409.2366</a>)<p>The second is an attempt to fix a long standing problem with state machine specification languages. While many support composition operators (parallel and/or nesting) none of them come with strong theorems about when temporal properties proven about constituent elements will remain valid in the composite.</p>
]]></description><pubDate>Sun, 08 Feb 2026 23:30:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46939695</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=46939695</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46939695</guid></item><item><title><![CDATA[New comment by johnbender in "Ask HN: What are you working on? (February 2026)"]]></title><description><![CDATA[
<p>FM day job:<p>Interpretation of SysML activity diagrams as temporal logic for use with state machine specifications.<p>Module system for state machine with scoping, ownership type system and attendant theorems to carry proofs of LTL properties about individual parts forward after composition.</p>
]]></description><pubDate>Sun, 08 Feb 2026 22:37:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=46939289</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=46939289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46939289</guid></item><item><title><![CDATA[New comment by johnbender in "My fast zero-allocation webserver using OxCaml"]]></title><description><![CDATA[
<p><a href="https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/linear_types.html" rel="nofollow">https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/line...</a><p>Experimental and of course one can debate whether Haskell is mainstream but I figured it merits a mention.</p>
]]></description><pubDate>Mon, 02 Feb 2026 18:49:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46859655</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=46859655</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46859655</guid></item><item><title><![CDATA[New comment by johnbender in "DHS Says DHS-Certified Real IDs Too Unreliable to Confirm U.S. Citizenship"]]></title><description><![CDATA[
<p>At the outset the article rather bizarrely casts the subject circumstances as a matter of government incompetence in its design and execution of an identification standard as opposed to the reality it then reports on which is DHS tripping over itself to justify unlawful detention of US citizens without cause.</p>
]]></description><pubDate>Thu, 01 Jan 2026 16:30:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46455343</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=46455343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46455343</guid></item><item><title><![CDATA[New comment by johnbender in "A High-Level View of TLA+"]]></title><description><![CDATA[
<p>Formal methods like TLA provide the highest value when you have a property of the system that is subtle but should be comprehensive, which is to say you need to know it’s true for all the behaviors of the system. (Aside: this is true even if you never model check the system because modeling is a good forcing function for clarity in understanding of the system)<p>With that in mind you don’t have to model your whole system as long as you’re comfortable with the boundaries as assumptions in any property/theorem you prove about it! For example, unconstrained variable in a TLA spec do a reasonable job of modeling an overapproximation of inputs from the outside world, so that’s one boundary you could potentially stop at supposing the your proof can go through in that chaotic context.</p>
]]></description><pubDate>Tue, 03 Jun 2025 15:39:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=44171231</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=44171231</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44171231</guid></item><item><title><![CDATA[New comment by johnbender in "Designing type inference for high quality type errors"]]></title><description><![CDATA[
<p>Minor nit:<p>> The job of a compiler error message is to prove to the user that their code is invalid<p>The job of the compiler error message is to convey why the compiler couldn’t demonstrate the code is correct. The code may be valid but the compiler just can’t prove it (analyses are sound but not complete unless the language is strongly normalizing)</p>
]]></description><pubDate>Fri, 23 May 2025 16:14:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44074116</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=44074116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44074116</guid></item><item><title><![CDATA[New comment by johnbender in "Fixrleak: Fixing Java Resource Leaks with GenAI"]]></title><description><![CDATA[
<p>> Besides, gotta start somewhere. It's probably a PoC, for a platform that will eventually handle all sorts of things.<p>I agree and I think we should give folks leeway to make progress but this seems to be the qualifier for nearly every GenAI demo I’ve seen</p>
]]></description><pubDate>Sat, 10 May 2025 17:07:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43947180</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=43947180</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43947180</guid></item><item><title><![CDATA[New comment by johnbender in "Formal Methods: Just Good Engineering Practice? (2024)"]]></title><description><![CDATA[
<p>There’s decades of research in this vein fwiw, usually referred to as symbolic execution and it’s descendants like concolic execution.</p>
]]></description><pubDate>Sat, 11 Jan 2025 00:48:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=42662198</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=42662198</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42662198</guid></item><item><title><![CDATA[New comment by johnbender in "Formal Methods: Just Good Engineering Practice? (2024)"]]></title><description><![CDATA[
<p>A minor point. This is more akin to testing because you’re only checking your formulae against a subset of system traces.<p>Formal methods connotes comprehensive evidence about system behavior. In the case of TLA and similar system that’s a state machine and not the real system but the output for the state machine is a proof that your LTL/CTL/TLA properties hold for all behaviors of the system (traces or trees of traces).</p>
]]></description><pubDate>Sat, 11 Jan 2025 00:47:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42662184</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=42662184</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42662184</guid></item><item><title><![CDATA[New comment by johnbender in "Disks lie. And the controllers that run them are partners in crime (2012)"]]></title><description><![CDATA[
<p>If you view a file system as running concurrently with another instance of itself where it could be preempted at any time indefinitely and where your algorithm for ensuring your crash protocol invariant must be lock free (two threads helps here) then you get a good sense for the complexity of the problem.</p>
]]></description><pubDate>Fri, 17 Nov 2023 07:22:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=38300548</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=38300548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38300548</guid></item><item><title><![CDATA[New comment by johnbender in "The Rise of Fully Homomorphic Encryption"]]></title><description><![CDATA[
<p>Fwiw we have at least some reason to hope in this general context that between clever systems work and tightening theoretical bounds via additional assumptions and clever reasoning we might get to practical implementations for some applications.<p>As (maybe weak) evidence the progress on practical implementations of PCPs/SNARGs<p><a href="https://dl.acm.org/doi/pdf/10.1145/2641562" rel="nofollow">https://dl.acm.org/doi/pdf/10.1145/2641562</a></p>
]]></description><pubDate>Thu, 29 Sep 2022 15:23:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=33021965</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=33021965</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33021965</guid></item><item><title><![CDATA[New comment by johnbender in "Google CEO tells employees not to ‘equate fun with money’ in heated meeting"]]></title><description><![CDATA[
<p>Learning whether the button should change colors is different from actually changing the colors.<p>I agree that the learning part is interesting but at google I suspect those are two different jobs.</p>
]]></description><pubDate>Fri, 23 Sep 2022 14:53:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=32952733</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=32952733</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32952733</guid></item><item><title><![CDATA[New comment by johnbender in "Rolls Royce Ends Boom Supersonic Partnership"]]></title><description><![CDATA[
<p>As an aside Madoff Industries did employ people who earnestly worked outside the Ponzi scheme. I know because I met a few of them when I worked on a database architecture audit for them around 2008.</p>
]]></description><pubDate>Thu, 08 Sep 2022 21:22:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=32772260</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=32772260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32772260</guid></item></channel></rss>