coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Andrew Appel <appel AT princeton.edu>
- To: coq-club <coq-club AT inria.fr>
- Subject: [Coq-Club] [correction] Announcing VST 2.6 and SF/Verifiable C
- Date: Fri, 18 Sep 2020 08:09:18 -0400 (EDT)
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=appel AT princeton.edu; spf=Pass smtp.mailfrom=appel AT cs.princeton.edu; spf=Pass smtp.helo=postmaster AT yellowcard.cs.princeton.edu
- Ironport-phdr: 9a23:yerMehNvkrgaSFnjGTAl6mtUPXoX/o7sNwtQ0KIMzox0K/z5r8bcNUDSrc9gkEXOFd2Cra4d1KyO7eu8ByRAuc/H7ClcNsQUFlcssoY/p0QYGsmLCEn2frbBThcRO4B8bmJj5GyxKkNPGczzNBX4q3y26iMOSF2kbVImbuv6FZTPgMupyuu854PcYxlShDq6fLh+MAi6oR/eu8ULg4ZuMLo9xxrGrnZHeuld2GdkKU6Okxrm6cq84Z9u/z5Mt/498sJLTLn3cbk/QbFEFjotLno75NfstRnNTAuP4mUTX2ALmRdWAAbL8Q/3UI7pviT1quRy1i+aPdbrTb8vQjSt871rSB7zhygZMTMy7XzahdZxjKJfpxKhugB/zovJa4ybKPZyYqXQds4cSGFcXMheSjZBD5uyYYUPEeQPPvtWoIbhqFsPqhW+GRKhC/nzxjBUnHL7x7E23uYnHArb3AIgBdUOsHHModjpMqcdTPq1w7fGzD7ec/5WwS/955bMchs8pvyDR6pwcdLPxkkrDA7Flk+QqY3jPzyJyOsNr2+b7+x6We2xlmEnthh8rz6yzcgjlofHnJgaykzY9Spn2oY1I8W1RFJ/bNOgDJdduT+WOot5TM4tQ29kpCQ3xqAYtJO4YCUHyZQqywPcZvGGcoWE/w/uWfuTLDl4inxrd7yyigi9/EWm1+byWM600FNQoSpElNnBrm0N1wTN5ciBTPtx5Fmu1iuS1wzL5eFEIFw0larGK5E62LI/ip0TsUHbEi/ugkX2jamWeVk69ei07OTnZK/qqYGBOI9pkg3+Kr4ums25AeskLAcOQ2+b+eKm2LH540L2XahKg/srmafaqJDXPdkXqrC6DgNPz4ov9gizAy273NkWnHQLNlNIdROfg4XtOlzCOu70APm/jli2jTtmxP7LMqf/DpnTKnXPiKrtcah+5kJG1QY/0M5T64hJBrwPIf//QE/8ud7eAxQkKQK72fznB8941o4GWWKAHKuZMKTKvF6I+O0vJ+2MZIgbuTnhMfcl/ePhgWUlll8GZ6WpxYEXaHG+Hvt6PUqZfX3sgtEbHWgUowU+UfTmiFyEUTFNe3a/R78w6i84BY68EIvPW56hjKac0Cq1H5BafGFLB1GUHXftbYqEWvMMaCyIIs9mlzwJTaKuS5c51R6wsA/30KZoLvHO9i0Ar5Lj1d516PHNmhEu8jx0Cd6R3H+QQGFphm8IXSM53LhjoUxhzVeOybR3g/tBFdBK+/xJVho6OoXHwuxhC9HyXxrBcc2TRFanRNWmGzAxQcgrz98AeUYuU+ml2xvExm+hB6If3+iAA4Vx+abB1VDwIdx8wjDIzv9yoUMhR55mM2G8i7E33hDLCoqBx0yBj6uuXbwG3SjG+XuEyyyDsFwOA104arnMQX1KPhielt/+/E6XF+bzW4RiCRNIzIu5EoUPatDtig8XFubuPNDZfGm4gWv2Dg3O3qmNaoHnZ2IbmijRFRpdylFBzTO9LQE7QxyZjSfbBT1qG0joZhq8o+Jl7muhT0k/wh2NaQts26fno0dJ18zZcOsa2/c/gAlksy99RQvvx8jXDdGNuw1nOqhQfIFl7Q==
[correction: the "Coq Platform" (coq + external packages) is not yet available for MacOS, only for Windows. On MacOS, "How to get VST" is through opam.]
Release announcement:
Verified Software Toolchain, version 2.6, and
Verifiable C is a program logic based on higher-order separation logic for the C programming language. Users work interactively in Coq to verify their C programs (as parsed by the front end of CompCert), applying "symbolic execution" proof-automation tactics. VST is proved sound with respect to the operational semantics of CompCert Clight -- so if you compile the rest of the way with CompCert you get a machine-checked guarantee that the assembly language program conforms to the functional specification you proved. But you can also compile with gcc or clang, and it's compatible (though not provably).
VST comes with three forms of documentation:
1. Reference manual, VC.pdf, distributed with the release and also available here.
2. Tutorial introduction with exercises, published as Volume 5 of the Software Foundations series.
3. Many worked examples, available in the progs directory of the standard installation; additional examples in the sha,aes,hmac-drbg,mailbox, and other directories of the git repository.
How to get VST:
1. VST comes packaged with the Windows installer for the Coq 8.12.0 release -- perhaps you already have it! Require Import VST.floyd.proofauto.
2. Or, opam install coq-vst.2.6
3. Or, download from github: https://github.com/PrincetonUniversity/VST/releases/tag/v2.6 and read BUILD_ORGANIZATION.md for instructions.
New in VST, over the last year or two, are:
- Tutorial introduction with exercises, leading up to the "capstone exercise" of verifying a hash table with external chaining. See Software Foundations Volume 5: Verifiable C, by Appel and Cao, 2020.
- Funspec subtyping and subsumption, for a more modular calculus of linking C modules and functions together. See Abstraction and Subsumption in Modular Verification of C Programs, by Beringer and Appel, revised and extended version of a FM 2019 paper.
- Proofs about input/output, using the "interaction trees" model, with the ability to do foundational verification of I/O system-calls. See Connecting Higher-Order Separation Logic to a First-Order Outside World, by Mansky, Honoré, and Appel, ESOP 2020.
- Modular verification of modular programs: an improved system for linking the specifications/verifications of .c files. Described in the Abstraction and Subsumption paper, see also the progs/pile directory of the distribution. (We should really document this better for users; expect better documentation of the linking system in the next release.)
- Better support for verification of C programs that use floating point. See C-language floating-point proofs layered with VST and Flocq, by Appel and Bertot, July 2020.
- Improved proof automation, especially for array- and list- and sequence-manipulating programs, by Qinshi Wang.
- Opam and Coq-Platform easy-install, by Michael Soegtrop (see above, "How to get VST").
Other changes:
In release 2.6 (2 August 2020):
Improved support for floating point proofs (described above).
Coq Platform and Opam (described above)
Adapted to Coq 8.11 and Coq 8.12; avoid most deprecated features.
Adapted to CompCert 3.7.
Improved support for funspec subsumption (described above).
New WITH notation for funspecs: instead of
WITH ... PRE[ ] PROP...LOCAL...SEP POST [] PROP...LOCAL...SEP
it is now,
WITH ... PRE[ ] PROP...PARAMS...GLOBALS...SEP POST [] PROP...RETURNS...SEP
Improved some error messages.
Improved the list_solve and Zlength_solve tactics.
Fix issues #209 #270 (cancel tactic), #347 (typo in hint), #379 (sizeof, alignof), #232 #343 #407 (improve error messages), #363 (start_function efficency), #419 (forward_while), #420 (improve reference manual).
Many other small improvements.
Put "fash" notation in Module to avoid notation pollution.
Reasoning about "store integer field of union, load float" and vice versa.
In release 2.5 (8 January 2020):
Support for proving connections to first-order external APIs (see also this).
Funspec subsumption (see above).
Improved proof automation for sequences and arrays (improved "list_solve" tactic).
Put backtick notation in a Module for compatibility with other libraries that have their own notations.
Fix issues #321 (forward_for_simple_bound), #324 (error message), #332 (error message), #377 (incomplete typechecking long-integer negation).
Performance improvements in Floyd tactics.
In defining Gprogs, "with_library" no longer needed in most cases.
Soundness proof now based directly on CompCert Clight, instead of 2 layers via "Clight_new" semantics.
Avoid Coq features deprecated in Coq 8.10.
Experimental, nonfoundational support for printf and fprintf.
In release 2.4 (23 April 2019):
Improved error messages in forward and forward_call.
Improved hints in "hint" tactic.
Minor improvements in "cancel" tactic.
Entailer no longer does "simpl", better preserving the form of user's conjuncts.
Updates for compatibility with latest Coq release.
Improved sep_apply, new tactics ecancel, EExists.
Respecification of i/o API using (I-Tree) monads.
Demonstration of i/o system calls with memory-buffer arguments.
Improved gather_SEP tactic notation using pattern arguments.
64-bit configurations of C now as robust as 32-bit configurations.
Update VST to CompCert 3.5.
- [Coq-Club] [correction] Announcing VST 2.6 and SF/Verifiable C, Andrew Appel, 09/18/2020
Archive powered by MHonArc 2.6.19+.