acsl-by-example
spark-by-example
acsl-by-example | spark-by-example | |
---|---|---|
1 | 3 | |
94 | 150 | |
- | - | |
1.8 | 0.0 | |
almost 3 years ago | over 1 year ago | |
TeX | Ada | |
MIT License | - |
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.
acsl-by-example
-
Why the C Language Will Never Stop You from Making Mistakes
Yes, Frama-C uses a plugin architecture, and there are plugins to verify all kinds of things, including functional correctness. The Frama-C tutorials page,
https://frama-c.com/html/tutorials.html
Has a link to the ACSL-by-example PDF which gives examples of creating in C various C++ STL inspired data structures and routines:
https://github.com/fraunhoferfokus/acsl-by-example/blob/mast...
Also, it is less effort to write bug-free code in OCaml than C. The Coq/Gallina proof assistant even has an OCaml-extraction (and also Haskell-extraction) feature where you extract runnable code from a formally verified algorithm in the Gallina specification language. (It's generally easier to proof theorems about code in the theorem prover itself, go figure.) Most of these C verification tools are written in OCaml, not C, with varying levels of assistance from Coq/Gallina.
The main reason the functional languages make it easier is because you generally execute side-effect free functions on data structures to give them the mathematical property you want. For example, you execute a lexicographical sort function on a list of strings and then the strings in the list all satisfy the mathematical property of a total ordering. You don't have to do any reasoning about the "in-between state" where pointers under the hood are being manipulated, and you don't have to add pre-conditions and post-conditions about the global environment if the code is side effect free and does not access non-local memory.
spark-by-example
- Spark by Example is an adaptation of ACSL by Example for SPARK 2014, a programm
- SPARK Ada by Example
-
Array sort
There are the sorting generics others have mentioned, but also SPARK By Example has examples of how to prove an array is sorted: https://github.com/tofgarion/spark-by-example/tree/Community2018/sorting
What are some alternatives?
sol2 - Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
adawebpack - Ada WASM Runtime and Bindings for Web API
hacl-star - HACL*, a formally verified cryptographic library written in F*
RecordFlux - Formal specification and generation of verifiable binary parsers, message generators and protocol state machines
spark_unbound - Unbound data structures in Ada-Spark.
CompCert - The CompCert formally-verified C compiler
adastegano - Programa de esteganografía, por Andres_age
gcc
basalt - Collection of formally verified building blocks
libsparkcrypto - A cryptographic library in SPARK 2014
libkeccak - SHA-3 and other Keccak related algorithms in SPARK/Ada.