Login
You're viewing the discuss.systems public feed.
  • Jul 29, 2026, 7:37 AM
    @0xabad1dea > Theorem provers aren't magic, and have bugs just like all other programs.
    but what about metarocq? :blobcatopenmouth:
    if you have a fully-verified toolchain to evaluate the proof then the theorem prover should be proven to be correct
    💬 3🔄 0⭐ 0

Replies

  • 💬 0🔄 1⭐ 8
  • 💬 0🔄 0⭐ 1
  • 💬 0🔄 0⭐ 0
  • Jul 29, 2026, 10:08 AM

    @mario @shelldozer it very well may be the most formally correct piece of software we've ever produced, but keep in mind it still has to run on a physical computer it's sharing with less-verified software and is also vulnerable to things like Rowhammer-class ram corruption attacks if one wants to intentionally manipulate it.

    There's no final escape hatch beyond which a computer can be absolutely guaranteed to always compute the correct answer, especially when someone has a vested interest in getting it to output the wrong answer.

    💬 2🔄 1⭐ 13
  • Jul 29, 2026, 10:10 AM
    @0xabad1dea @shelldozer ~but that's not a bug anymore, that is a hardware issue. my scope was correct software.~
    i'm tired, sorry :ablobcatmelt:
    i believe there is a way to archive perfect software, be it in a very limited environment.
    💬 0🔄 0⭐ 0
  • Jul 29, 2026, 11:01 AM

    @mario @0xabad1dea @shelldozer right, that's not a bug in software

    so, you can say the following isn't true for metarocq
    > Theorem provers aren't magic, and have bugs just like all other programs.

    but having the probability of hardware issues still makes the following true
    > Theorem provers aren't magic

    💬 1🔄 0⭐ 1
  • Jul 29, 2026, 11:04 AM

    @mario @0xabad1dea @shelldozer not to say, they aren't magic, like i love theorem provers, and they are in a way very magical pieces of software humans have come up with

    all this means is they shouldn't become the single source of truth

    💬 1🔄 1⭐ 4
  • Jul 29, 2026, 11:09 AM
    @calx @0xabad1dea @shelldozer but they actually aren't magic :blobcat3c:
    especially isabelle and rocq are actually somewhat easy to break down to their theoretic basics. they are very good tools to learn about proof theory.
    💬 2🔄 0⭐ 0
  • 💬 0🔄 2⭐ 7
  • 💬 1🔄 0⭐ 0
  • 💬 1🔄 0⭐ 3
  • Jul 29, 2026, 5:20 PM
    @crazazy @0xabad1dea @calx @shelldozer @mansr
    > limits
    depends on the logic at hand. like first-order logic is complete and afaik solved within less than 200 characters of prolog
    peano is incomplete, but here are other arithmetics that are complete like presburger that is complete.
    💬 0🔄 0⭐ 0
  • 💬 0🔄 0⭐ 1
  • Jul 31, 2026, 7:30 PM
    @0xabad1dea @mario @shelldozer Yeah, although couldn't that be minimised a lot by running the checks on different kinds of hardware and underlying implementations? (Given portable enough code)

    Also coming from a more "trusting trust" point-of-view, quite glad they note that proving Coq in Coq itself has quite few problems.
    💬 0🔄 0⭐ 0
  • Jul 29, 2026, 10:56 AM

    @mario @0xabad1dea the hardware can be faulty too, tho. no? and we can have a bit flip error, tho that can be avoided by checking multiple times

    edit: it was already mentioned, my bad

    💬 0🔄 0⭐ 1
  • 💬 1🔄 0⭐ 0
  • Jul 29, 2026, 1:28 PM

    @mario @0xabad1dea @calx

    Verification is only as good as the models and the properties you verify.

    My favourite example of this was a verified Arm core, which had dataflow proofs of all of its TrustZone implementation. This was then laid out for the back end in such a way that the wire that carried the TrustZone state went very close to another wire. Running the right sequence of instructions would induce a current and toggle from NS to S state, allowing unprivileged instructions to jump to secure mode (the layout was done as a research demonstration, not something in real production).

    So even the security properties that were formally verified on the RTL were not actually present in the physical silicon.

    💬 1🔄 10⭐ 53
  • Jul 29, 2026, 1:51 PM
    @david_chisnall @0xabad1dea @calx > the models and the properties
    that is outside the scope of a theorem prover. if you prove properties of an invalid spec you have shown the implementation to be correctly invalid.
    💬 1🔄 0⭐ 0
  • 💬 1🔄 3⭐ 18
  • Jul 29, 2026, 1:55 PM
    @david_chisnall was there any proof that the relevant properties of the abstract machine and the concrete machine were equivalent? :blobcatopenmouth:
    💬 1🔄 0⭐ 0
  • 💬 1🔄 0⭐ 2
  • 💬 0🔄 0⭐ 0
  • Jul 29, 2026, 2:10 PM

    @mario There is some really exciting work to try to prove equivalence between the various layers of lowering from RTL to silicon, but it's very early. It's basically a full abstraction proof and those are hard enough even when you don't have 'physics' as one of the layers.

    💬 0🔄 1⭐ 5
  • Jul 29, 2026, 2:26 PM

    @mario @david_chisnall In certified software development--the ones I was involved with and read about anyway--this is done by a person who signs off that the implementation follows the spec correctly. There's a bunch of this sort of thing that happens before any silicon is made. Takes a long time and is thus very expensive.

    Described situation was a demo during research phase sounds like. I hope they'd have found this before it made to production but yeah, no guarantees.

    💬 1🔄 0⭐ 1
  • Jul 29, 2026, 2:34 PM

    @crazyeddie @mario

    In certified software development--the ones I was involved with and read about anyway--this is done by a person who signs off that the implementation follows the spec correctly.

    No it isn't. At no point in certified software development will anyone sign of on (for example) the C compiler's output being a 100% faithful representation of the C abstract machine. At least, not in any situation where liability may lead back to them, because it is never true (well, it's technically true for CompCERT, though with the all-bets-are-off-if-your-source-code-has-any-undefined-behaviour get-out-of-jail-free card).

    Described situation was a demo during research phase sounds like. I hope they'd have found this before it made to production but yeah, no guarantees.

    No, the point of the demo was that you would not find this. It was a tweak that was possible to make during back-end layout or to the GDSII after you've sent it to the fab, so a completely plausible supply-chain attack on a hardware security mechanism.

    This kind of attack is easier on hardware than software, because you can at least run a compiled program on a simulator.

    💬 1🔄 0⭐ 4
  • Jul 29, 2026, 2:35 PM

    @david_chisnall @mario "At no point in certified software development will anyone sign of on (for example) the C compiler's output being a 100% faithful representation of the C abstract machine."

    This is quite the straw man you've summoned. Didn't get any better either.

    Later.

    💬 1🔄 0⭐ 0
  • 💬 1🔄 0⭐ 1
  • 💬 1🔄 0⭐ 0
  • Jul 29, 2026, 2:38 PM

    @crazyeddie @mario

    I can only assume you're not reading the thread in context because you jumped into a middle of a conversation with a post about a problem with the concrete machine not being a faithful representation of the abstract machine that the proofs were constructed in to say that, in certified software development, people signed off on that.

    💬 0🔄 0⭐ 1
  • Jul 29, 2026, 2:07 PM

    @mario @0xabad1dea @david_chisnall i can't seem to agree with this take, i am probably super wrong, but

    i'll define a theorem prover as something that, when provided with a proof, can say with 100% surety whether the proof contains any mistake or not, and thus if it is valid, according to current database of proven methods

    and if you agree with my definition, that should also include anything that isn't directly a part of the theorem prover, but still impact how it's output gets interpreted by the human, including,
    - the software,
    - the formal proof for that software,
    - the hardware,
    - the formal proof for that hardware,
    - the model of the hardware, and
    - even the human brain interpreting the results,

    without having a 100% surety on all these terms, we can't say that, when theorem prover verifies a proof, the proof is true, with 100% surety.

    💬 1🔄 0⭐ 1
  • Jul 29, 2026, 2:16 PM
    @calx @0xabad1dea @david_chisnall a proof is only valid within it's system. in the case of rocq the system is the calculus of inductive constructions i.e.
    there are extraction systems which translate the formal language of rocq (gallina) into high-level code like ocaml or c.
    these are two different structures, like you have the formal logic side and you have the computation side which are connected via the curry howard correspondence.
    like a theorem prover assists you by providing tools for theorem proving, it's scope is formal logic.
    💬 1🔄 0⭐ 0
  • Jul 29, 2026, 3:22 PM

    @mario @0xabad1dea @david_chisnall this kinda is making sense to me
    basically, what i think you mean is

    when we say "this proof is verified by xyz verifier", all the uncertainty that i mention gets put under the assumption that verifier isn't faulty

    right?

    i was going over whether that assumption can be true in my post, and what you're saying is once we add that assumption to our system, the proof becomes valid in that system, right?

    💬 1🔄 0⭐ 0
  • Jul 29, 2026, 3:29 PM
    @calx @0xabad1dea @david_chisnall > once we add that assumption to our system, the proof becomes valid in that system, right?
    if you are able to prove that assumption within your knowledge space and tactics then it already was part of the system in the first place. but now you don't only have proven that assumption in your system but you have also found an instance of the assumption you can then further use in proving more stuff. at least for constructive logic thats the case.

    > the assumption that verifier isn't faulty
    that can be proven actually
    💬 1🔄 0⭐ 0
  • Jul 29, 2026, 3:39 PM

    @mario @0xabad1dea @david_chisnall
    > > the assumption that verifier isn't faulty
    > that can be proven actually

    but to remove that assumption and to prove it, you'll need to add some other assumption, maybe about the hardware you'll use to prove the previous assumption, or maybe the model modelling the system on which the theorem prover will run

    in no way can a theorem prover, escape from its dependence on the assumptions about the system it is running on

    a normal proof doesn't have any such hidden dependence

    💬 0🔄 0⭐ 1
  • 💬 0🔄 0⭐ 0
  • 💬 1🔄 1⭐ 8
  • 💬 0🔄 0⭐ 4