Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/formal-land/coq-of-js
🌍 🐓 Formal verification for JavaScript
https://github.com/formal-land/coq-of-js
coq javascript verification
Last synced: 7 days ago
JSON representation
🌍 🐓 Formal verification for JavaScript
- Host: GitHub
- URL: https://github.com/formal-land/coq-of-js
- Owner: formal-land
- License: mit
- Created: 2019-09-13T17:01:54.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-07-10T23:38:13.000Z (over 1 year ago)
- Last Synced: 2024-07-30T17:54:32.679Z (4 months ago)
- Topics: coq, javascript, verification
- Language: JavaScript
- Homepage: https://formal-land.github.io/coq-of-js/
- Size: 3.01 MB
- Stars: 8
- Watchers: 3
- Forks: 0
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌍 🐓 coq-of-js
> Import JavaScript programs to Coq. Prove all the things! 🐓[![travis status](https://img.shields.io/travis/com/formal-land/coq-of-js/master.svg?label=travis-ci&style=flat-square)](https://travis-ci.org/formal-land/coq-of-js)
[![codecov status](https://img.shields.io/codecov/c/github/formal-land/coq-of-js.svg?style=flat-square)](https://codecov.io/gh/formal-land/coq-of-js)**Online demo: https://formal-land.github.io/coq-of-js/**
The aim of this project is to import JavaScript programs to the [Coq](https://coq.inria.fr/) language, to do [formal verification](https://en.wikipedia.org/wiki/Formal_verification) on JavaScript code.
**Still under heavy development**
## Run
For now: a web-interface to do development, with four columns:
* the JavaScript input;
* the Coq output;
* the JavaScript AST;
* the Coq AST.From the command line:
```
npm install
npm start
```
or with [Yarn](https://yarnpkg.com/lang/en/):
```
yarn install
yarn start
```## Examples
See the [online demo](https://formal-land.github.io/coq-of-js/).## Todo
We want to validate the basis:
* have a good project settings (tests, error handling, ...);
* import a reasonable volume of syntax;
* handle modules;
* handle a definition of side-effects;
* handle records vs maps, sum types, avoiding problems of structural typing vs nominal typing.## Related work
TODO: read all the links!
* https://blog.acolyer.org/2018/01/19/javert-javascript-verification-toolchain/
* https://coq-club.inria.narkive.com/OzUzWkqV/is-there-a-minimal-subset-of-javascript-both-useful-for-formal-verification-and-practical-enough
* https://vtss.doc.ic.ac.uk/2018/03/19/formal-methods-meets-js.html
* https://vtss.doc.ic.ac.uk/slides/ECMA_JaVerT.pdf
* https://vtss.doc.ic.ac.uk/slides/From_JSCert_to_JSExplain_and_beyond.pdf
* http://spiral.imperial.ac.uk/bitstream/10044/1/55840/6/Fragoso2017Towards.pdf
* https://www.jswebtools.org/
* https://vtss.doc.ic.ac.uk/research/javascript.html
* https://www.doc.ic.ac.uk/~pg/publications/FragosoSantos2019JaVerT.pdf