why3 VS acsl-by-example

Compare why3 vs acsl-by-example and see what are their differences.

why3

SPARK 2014 repository for the Why3 verification platform. (by AdaCore)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
why3 acsl-by-example
1 1
27 94
- -
9.5 1.8
26 days ago almost 3 years ago
OCaml TeX
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

why3

Posts with mentions or reviews of why3. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-12-30.
  • Why the C Language Will Never Stop You from Making Mistakes
    5 projects | news.ycombinator.com | 30 Dec 2021
    With Frama-C you can prove doubly linked lists and all manner of complicated pointer manipulating graph algorithms. It does not impose a Rust-like pointer ownership policy as does SPARK.

    However, for embedded development, SPARK's restrictions are a good trade-off, as the more restrictive rules allow more proofs to be fully automated than with Frama-C and simplify diagnostic messages. A fly-by-wire avionics computer doesn't need to dynamically allocate a billion graph nodes. But SPARK is not "general purpose" like C with Frama-C is.

    AdaCore's SPARK tool stack is not actually written in SPARK as far as I can see, much of it is actually OCaml and Coq/Gallina for the Why3 component also used by Frama-C. See all the .ml OCaml and .v Gallina source code for yourself:

    https://github.com/AdaCore/why3

    And of course the compiler backend for Ada/SPARK is GNU GCC, written in unverified C:

    https://github.com/gcc-mirror/gcc/tree/master/gcc/config

    Compare with CompCert, the formally verified C compiler:

    https://github.com/AbsInt/CompCert

    Frama-C unfortunately requires a user to be mathematician-logician logic programming expert to fully utilize. One can begin training in Coq/Gallina with the large free online Software Foundations course:

    https://softwarefoundations.cis.upenn.edu/

acsl-by-example

Posts with mentions or reviews of acsl-by-example. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-12-30.
  • Why the C Language Will Never Stop You from Making Mistakes
    5 projects | news.ycombinator.com | 30 Dec 2021
    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.

What are some alternatives?

When comparing why3 and acsl-by-example you can also consider the following projects:

CompCert - The CompCert formally-verified C compiler

sol2 - Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:

hacl-star - HACL*, a formally verified cryptographic library written in F*

gcc

RecordFlux - Formal specification and generation of verifiable binary parsers, message generators and protocol state machines

spark-by-example - SPARK by Example is an adaptation of ACSL by Example for SPARK 2014, a programming language which is a formally verified subset of Ada