Write a software specification in a typed language and check it for internal consistency.
Compare two versions of a spec to see whether a change is backward compatible or breaking.
Import facts from a real running application and compare them against a written spec.
Formally verify properties of a specification using tools like TLA+, Alloy, Z3, or Lean.
| mizchi/dspec | a6216abcd/free-residential-ip-proxy-controller | earthtojake/cad-viewer | |
|---|---|---|---|
| Stars | 32 | 32 | 32 |
| Language | JavaScript | JavaScript | JavaScript |
| Setup difficulty | hard | hard | moderate |
| Complexity | 5/5 | 4/5 | 3/5 |
| Audience | researcher | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires the Nix package manager to provide Pkl, Lean, Z3, TLA+, and Alloy together.
This project is an early prototype of a system for writing software specifications that a computer can actually check and run, instead of specifications that are just plain text documents nobody verifies. It uses a typed configuration language called Pkl to author the specification, so mistakes in the spec's structure get caught early, before that spec is compared against real code or real behavior. The core idea is that a spec written in Pkl has a stable schema and unique ids for each piece, and from that structured spec the tool can generate a natural language description in different languages, check whether a real application matches what the spec describes, and detect drift when the spec and the implementation fall out of sync over time. The command line tool included in the project offers a very large number of operations: checking a spec file for consistency, rendering it as readable text, comparing two versions of a spec to see if a change is backward compatible or breaking, importing facts from a real running application to compare against the spec, and generating structured reports and coverage numbers about how much of a spec has been verified. For deeper formal verification, the project can hook into established tools from computer science research, including TLA+, Alloy, Z3, and Lean, which are used to mathematically prove properties about a system rather than just testing it. This is an early, experimental prototype rather than a finished product, and it currently requires the Nix package manager to set up its development environment with all the required tools installed together. It is aimed at developers and researchers who work on specification-driven or formally verified software, not general audiences. The full README is longer than what was shown.
An early prototype toolkit for writing software specifications in a typed language that can be checked, rendered, and formally verified.
Mainly JavaScript. The stack also includes JavaScript, Node.js, Pkl.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly researcher.
This repo across BitVibe Labs
Verify against the repo before relying on details.