677 karma · joined September 16, 2022
Lisp is not a language, but a descriptor for a family of languages. Most Lisps are not functional in the modern sense either.
Similarly, there are functional C-like languages, but not all C-likes are functional, and "learn c-likes" is vague the same way "learn lisp" is.
The idea is that you define a number of pre- and post- condition predicates for a function that you want proved (in what's effectively the header file of your Ada program). Like with tests, these checks that show that the output is correct are often shorter than the function body, as in this sorting example.
Then you implement your function body and the prover attempts to verify that your post-conditions hold given the pre-conditions. Along the way it tries to check other stuff like overflows, whether the pre- and post- conditions of the routines called inside are satisfied, etc. So you can use the prover to try to ensure in compile-time that any properties that you care about in your program are satisfied that you may otherwise catch in run-time via assertions.
Note that I added a format-on-save hook in my config, and since I do completions using corfu and not company, I didn't include that part of the package.
Notably it needs KiCad to run and takes ~140 hours to boot.
Seems like the reason for KiCad and the slow operation is that the emulation occurs at a really low level, and they've written a program to digitize all of the computer's schematics and convert them into netlists (which is then converted into systemC components for the emulator): https://github.com/Datamuseum-DK/R1000.HwDoc
a video explaining the process?: https://www.youtube.com/watch?v=oMRTr0bPuOA