<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>Mon, 27 Apr 2026 08:30:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=johnbender" rel="self" type="application/rss+xml"></atom:link><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><item><title><![CDATA[New comment by johnbender in "Make formal verification and provably correct software practical and mainstream"]]></title><description><![CDATA[
<p>To follow on this sentiment at a slight tangent, I am happy for the enthusiastic attempts from all quarters but folks seem to misunderstand that incremental progress in academia is often due to the problems being very hard. Formal verification in the presence of weak memory models is an ongoing problem that only recently has seemed tractable thanks to the hard work of the folks at MPI etc over more than a decade of publications and iterating on logics like Iris</p>
]]></description><pubDate>Sat, 28 May 2022 23:49:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=31544914</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=31544914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31544914</guid></item><item><title><![CDATA[New comment by johnbender in "Make formal verification and provably correct software practical and mainstream"]]></title><description><![CDATA[
<p>I think this depends on the spec language and the target system. I’ve never encountered a spec more complicated than the program as the goal is always abstraction but I don’t mean to discount your experiences and complexity is affected by tooling familiarity and quality.<p>Separately the spec can often have its own properties which can be verified as a means to interrogate its correctness. For example state machines as spec, temporal logic properties and model checking where the state machine is the abstraction for a concrete system. Worth noting that proving state machines are an abstraction of a concrete system is a going research concern though.</p>
]]></description><pubDate>Sat, 28 May 2022 23:36:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=31544834</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=31544834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31544834</guid></item><item><title><![CDATA[New comment by johnbender in "Make formal verification and provably correct software practical and mainstream"]]></title><description><![CDATA[
<p>I think this sharply discounts the value of the step before the proof which is writing the specification in a formal language/logic. This often surfaces these misunderstandings before a proof is even necessary.<p>That doesn’t guarantee that the spec will be the right one (as you say) but it’s astounding how often just writing it down formally improves the implementation through rigorous thought.</p>
]]></description><pubDate>Sat, 28 May 2022 23:13:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=31544681</link><dc:creator>johnbender</dc:creator><comments>https://news.ycombinator.com/item?id=31544681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31544681</guid></item></channel></rss>