Home | Notifications | New Note | Local | Federated | Search | Logout
Note Detail
Reply to @icedquinn@blob.cat
Blurry Moon@sun@shitposter.world (2026-08-22 10:02:38)
@icedquinn my main constraints for this language were: typed capabilities; amenable to future simple formal verification; simple implementation
---Reply---
Blurry Moon@sun@shitposter.world (2026-08-22 10:03:06)
@icedquinn no actual formal verification is happening at this stage, just added annotations to make it easier in the future. I don't know what I'm doing tbh
Reply
---Replies---
Q.U.I.N.N.@icedquinn@blob.cat (2026-08-22 10:10:05)
@sun it largely means that you can make proofs about particular concerns. there are many ways to get there.
hoare logic is all about pre/post conditions, separation logic is basically that with some extra operators about splitting up a heap. they are ways to relate programs to formal logic.
HOL is sort of the easier formal logic since the kernel is just "true because we said so" and a couple of "true if these other facts were true." isabelle/hol has the sledgehammer which auto-derives a lot of proofs by SAT solving.
dependent types are basically turing complete macros, so they are cursed. i don't quite know how lean and coq deal with them; i think there's a proof layer and the code layer and they mix in some sideways means. ATS the proof is a value, it just doesn't exist at runtime, so some parameters exist at runtime and some don't, but it makes it neat and explicit.
what pre/post conditions do is basically let you outsource some proofs to why3. you write a compiler backend that spits out WhyML code and let Why3 outsource the checks to Z3 et all. this works great for some stuff (linear ranges and set memberships.) it can fall back to coq proofs for gnarly shit.
there's also souffle, but eh