This weekly roundup thread is intended for all culture war posts. 'Culture war' is vaguely defined, but it basically means controversial issues that fall along set tribal lines. Arguments over culture war issues generate a lot of heat and little light, and few deeply entrenched people ever change their minds. This thread is for voicing opinions and analyzing the state of the discussion while trying to optimize for light over heat.
Optimistically, we think that engaging with people you disagree with is worth your time, and so is being nice! Pessimistically, there are many dynamics that can lead discussions on Culture War topics to become unproductive. There's a human tendency to divide along tribal lines, praising your ingroup and vilifying your outgroup - and if you think you find it easy to criticize your ingroup, then it may be that your outgroup is not who you think it is. Extremists with opposing positions can feed off each other, highlighting each other's worst points to justify their own angry rhetoric, which becomes in turn a new example of bad behavior for the other side to highlight.
We would like to avoid these negative dynamics. Accordingly, we ask that you do not use this thread for waging the Culture War. Examples of waging the Culture War:
-
Shaming.
-
Attempting to 'build consensus' or enforce ideological conformity.
-
Making sweeping generalizations to vilify a group you dislike.
-
Recruiting for a cause.
-
Posting links that could be summarized as 'Boo outgroup!' Basically, if your content is 'Can you believe what Those People did this week?' then you should either refrain from posting, or do some very patient work to contextualize and/or steel-man the relevant viewpoint.
In general, you should argue to understand, not to win. This thread is not territory to be claimed by one group or another; indeed, the aim is to have many different viewpoints represented here. Thus, we also ask that you follow some guidelines:
-
Speak plainly. Avoid sarcasm and mockery. When disagreeing with someone, state your objections explicitly.
-
Be as precise and charitable as you can. Don't paraphrase unflatteringly.
-
Don't imply that someone said something they did not say, even if you think it follows from what they said.
-
Write like everyone is reading and you want them to be included in the discussion.
On an ad hoc basis, the mods will try to compile a list of the best posts/comments from the previous week, posted in Quality Contribution threads and archived at /r/TheThread. You may nominate a comment for this list by clicking on 'report' at the bottom of the post and typing 'Actually a quality contribution' as the report reason.

Jump in the discussion.
No email address required.
Notes -
I'm afraid it's not so simple.
What you're saying is that Lean's soundness relies solely on the soundness of the kernel. This is true and is a constructive property of provers structured like Lean. But moreover you're claiming implicitly this is true insofar as the kernel code has no soundness bug. That however is false. Unsoundness can be introduced in Lean by non-Lean code.
Lean's kernel is written in C++ and runs on a specific hardware and software stack.
Per Thompson's well known argument, the behavior of compiled software can be arbitrarily changed by subtle changes in its compiler. This means that any change in:
Any of these can, and can in covert ways, result in unsoundness in a run of Lean.
Moreover, and in turn, any change in whichever programs compiled any element of the chain that created these artifacts, can have the same effect. Including any earlier versions of any involved compilers that compiled later versions being used at any point.
Ergo, any trust put in a verification made by Lean is implicity a trust in millions of lines of code which were not written by Lean authors.
Moreover, even if Lean were self hosting and bootsrappable, along the lines of a further and more production ready Lean4Lean, that still wouldn't remove the necessary trust in the initial bootstrap and its software and hardware setup, on top of any further hardware setup you're running the resulting binary on.
So no, it's not a complicated proof versus a relatively small kernel codebase. It's the millions of lines constituting at minimum an entire computing stack (and practically many) versus a complicated proof.
And these are not theoretical attacks, we had a recent high profile case a few years ago and landed in many distro's sshd builds through the vector i'm describing here.
Nor is tampering with mathematicians to steer them towards untruths unprecedented, and in fact the precedent is literally the kind of actor that has access to the sophistication and 0-days necessary for such an attack.
Technically true, practically irrelevant. Compilers can and are tested and are under even greater scrutiny than Lean. They're used in applications much more serious than what's basically glorified recreational mathematics.
I'm puzzled that you conflate the Ken Thompson hack, which is an undetectable modification of the toolchain, with a pedestrian supply chain attack like a CVE-2024-3094.
The practical obstacles to doing a Ken Thompson hack are immense, which is why it's never been done. CVE-2024-3094 is a completely different vector that would be impossible if ssh checked every change going into its dependencies, which is easily done in the age of machine intelligence.
And what libraries does the Lean kernel depend on? Just GMP, which in turn depends only on the C++ standard library. Not a lot of room for supply chain attacks, you're basically stuck trying to compromise every compiler on the planet, including all the already built binaries, without anyone noticing, despite the fact that everyone and their mother is watching every patch going into LLVM and GCC. I know they say that academic politics are so bitter because the stakes are so low, but you have to have a sense of proportion here.
You'd probably have an easier time convincing mathematicians of some bullshit - no complicated attacks required.
It was done, by Thompson. The talk wasn't theoretical.
I didn't think you were the kind of guy who takes tech demos seriously.
Something having been done is a pretty good indication of it being able to be done.
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
I guess xz is not a true scotsman, is XCodeGhost a true scotsman?
So your answer to the criticism that the attack surface is large is to make it even larger?
Compiler trojans don't live in source, the whole point is that they're in the binary, so what you're proposing here is to run every single binary through some kind of transformer, and then in turn trust both that the transformer is perfect at finding exploits (which we know is not the case, since we have no reliable countermeasure against injections at this time), but also that they have not been tampered with.
As to the proposition that the stakes of validating mathematical propositions are low, need I remind you that essentially all bank accounts, all forms of identification, all permissioned computer systems, and basically everything these days is only the way it is because certain non-obvious mathematical propositions are true? If you own cryptographers, you own everything.
I mean how exactly can you propose to stand here and tell me that the NSA would not have backdoors in post-quantum encryption algorithms if they could, and that they wouldn't compromise formal proof systems if that gave them a better chance of achieving those goals?
Closer, but it's both missing the viral nature of the KTH and also it's coarse - it simply tacks on some libraries. Creating a compiler bug that corrupts every compiler it compiles in the same way and corrupts Lean in a particular way in a way that's robust to refactorings of Lean and every other compiler basically requires you to have AGI in the compiler.
Adding monitoring doesn't increase the attack surface.
They must be in source at some point, that's the whole point of the KTH. You introduce a bug that transmits itself to every compiler that is built, and then you can fix the bug because it will be inserted if it's built by a compromised compiler. But it must be in the source code to begin with.
Compromising implementations is just better. You don't run the risk of infecting your toolchain with your exploit. Nobody asks questions about why you don't use the same algorithms as everyone else. It's also eminently practical, unlike introducing a viral compiler bug that only acts up when you try to validate a crypto proof with lean.
My mistake, if jailed properly it's not in the operation chain.
Of course the longer the chain the more complicated it gets. But you don't need to go that far:
Doesn't matter, we know for a fact they did it at the research level for DUAL_EC_DRBG and DES.
Steps 1 and 2 are hilariously brittle. Step 3 needs to be done to all compilers and it needs to propagate itself into every compiler that the compilers build, otherwise it's a simple matter of fixing the compiler bug or compiling Lean with another compiler. Step 5 runs the risk of proving an obviously false theorem at which point the jig is up.
On top of all this, your op gets blown if someone just bootstraps GCC starting with a compiler simple enough to manually verify the binary of.
Getting people to use an inherently insecure algorithm doesn't run the risk of infecting your own tooling with the bug. The NSA would also like to be able to formally verify proofs.
I'll gladly concede that these attacks are very difficult to execute since you seem to be conceding that they are possible.
But since this is about the epistemological posture of mathematics as a discipline, does it not strike you as scandalous that the hardest form of knowledge available to us is now at the mercy of who controls infrastructure rather than the careful application of reason?
Mathematics becoming a posteriori seems momentous to me.
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link