silveroak
practical-fm
Our great sponsors
silveroak | practical-fm | |
---|---|---|
3 | 4 | |
97 | 460 | |
- | - | |
7.3 | 4.1 | |
almost 2 years ago | about 1 month ago | |
Coq | ||
Apache License 2.0 | - |
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.
silveroak
-
Type Theory Forall Podcast #13 - C/C++, Emacs, Haskell, and Coq. The Journey (John Wiegley)
Some other examples, Google has some people using Coq for hardware synthesis silveroak, there is a paper on using Coq for verifying some data structure at Facebook/Meta this year at CPP.
-
There's an ongoing effort to rewrite Principia Mathematica using Coq
There are ongoing research projects about that, you may want to have a look at Kôika (https://github.com/mit-plv/koika), Kami (https://github.com/mit-plv/kami), Lutsig (https://github.com/CakeML/hardware) and silveroak (https://github.com/project-oak/silveroak). Closer to HLS there is also Vericert (https://github.com/ymherklotz/vericert). There may be other research project I am unaware of, feel free to add them in a reply, I am interested in it.
- Silveroak - Formal specification and verification of hardware
practical-fm
-
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?
koika - A core language for rule-based hardware design 🦑
magmide - A dependently-typed proof language intended to make provably correct bare metal code possible for working software engineers.
vericert - A formally verified high-level synthesis tool based on CompCert and written in Coq.
ouroboros-high-assurance - High-assurance implementation of the Ouroboros protocol family
hacspec - Please see https://github.com/hacspec/hax
CommunityModules - TLA+ snippets, operators, and modules contributed and curated by the TLA+ community
kami - A Platform for High-Level Parametric Hardware Specification and its Modular Verification
hacl-star - HACL*, a formally verified cryptographic library written in F*
saw-script - The SAW scripting language.
timewinder - Temporal Logic of Actions in Rust via Starlark
crucible - Crucible is a library for symbolic simulation of imperative programs
CrossHair - An analysis tool for Python that blurs the line between testing and type systems.