magmide
practical-fm
| magmide | practical-fm | |
|---|---|---|
| 22 | 5 | |
| 836 | 607 | |
| 0.0% | 0.7% | |
| 6.6 | 4.4 | |
| about 2 years ago | 4 months ago | |
| Coq | ||
| - | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
magmide
-
Languages on the rise like Rust and Go are being quite vocal against inheritance and many engineers seem to agree. Is this the end of inheritance? What do you think?
https://github.com/magmide/magmide when
-
Kani 0.29.0 has been released!
How close are we to this https://github.com/magmide/magmide
- Announcing Magmide Month! (proof language for/using Rust)
- A dependently-typed proof language intended to make provably correct bare metal code possible for working software engineers.
- Make formal verification and provably correct software practical and mainstream
practical-fm
-
The Math Is Haunted
IME Lean and Coq/Rocq are used more in practice, and have bigger libraries and communities, than Idris and Agda.
Rocq is the most common for program verification, but I suspect mainly due to it being older, and it has weird quirks due to its age, so Lean may catch up. Lean is the most common for proving mathematical theorems.
Big projects verified in Rocq include CompCert, CertiCoq, and sel4. Additionally, some large companies use Rocq to verify critical software like in airplanes (there's a list at https://github.com/ligurio/practical-fm although it may not be accurate). Big projects in Lean include mathlib (collection of various mathematical proofs) and the ongoing work to prove Fermat's Last Theorem. Terrace Tao uses Lean. I'm not aware of "real-world" projects in Idris and Agda but may be wrong.
That said, they're all small communities compared to something like C++ or JavaScript. Moreover, verifying programs is very slow and tedious (relative to writing them), so I wouldn't be surprised if we see a big breakthrough (perhaps with AI) that fundamentally changes the landscape. But remember that even with a breakthrough your skills may be transferable.
-
We Need Simpler Types (speculations on what can be improved in future type systems and on erasing the boundaries between types and values)
https://github.com/ligurio/practical-fm Look for Coq, Agda, Idris, MS - F*.
-
Interested in pursuing a PhD in Formal Methods
Does your current company have FM positions? Maybe you could work and learn at the same time. There are a lot of big name companies that are really investing in FM now that more tools are available. Here’s a list someone compiled that can give you an idea of where it’s being used in industry. I see some info is not quite up-to-date (e.g., IBM does have FM, or formal verification, in the US but I think most research is out of their Israel lab; Rockwell Collins is now Collins Aerospace after being acquired by UTC Aerospace).
-
Formal Verification Methods in industry
When you say "formal verification methods", what kind of techniques are you interested in? While using interactive theorem provers will most likely not become very widespread, there are plenty of tools that use formal techniques to give more correctness guarantees. These tools might give some guarantees, but do not guarantee complete functional correctness. WireGuard (VPN tunnel) is I think a very interesting application where they verified the protocol. There are also some tools in use, e.g. Mythril and CrossHair, that focus on detecting bugs using symbolic execution. There's also INFER from Facebook/Meta which tries to verify memory safety automatically. The following GitHub repo might also interest you, it lists some companies that use formal methods: practical-fm
- A list of companies that use formal verification methods
What are some alternatives?
Rudra - Rust Memory Safety & Undefined Behavior Detection
timewinder - Temporal Logic of Actions in Starlark/Go
csharplang - The official repo for the design of the C# programming language
hacl-star - HACL*, a formally verified cryptographic library written in F*
z3 - The Z3 Theorem Prover
Toy - The Toy Programming Language. Mirrored nightly from https://gitea.krgamestudios.com/krgamestudios/Toy