3,453 research outputs found
A Generic Formalised Framework for Reasoning About Weak Memory Models
This paper describes Coq libraries devoted to the semantic of relaxed memory models. These libraries formalise a framework which covers a large class of industrial models. Implementing this framework inside a proof assistant has significantly helped improving its design and crafting the most concise and relevant specifications. Similarly the use of a proof assistant has been instrumental in the study of the semantic of synchronisation primitives, which we illustrate by the formal proof of a barrier placement theorem. We explain the choices we made to re-design our Coq libraries, and in particular what we gained from adopting a small-scale reflection methodology
A Small Scale Reflection Extension for the Coq system
This is the user manual of Ssreflect, a set of extensions to the proof scripting language of the Coq proof assistant. While these extensions were developed to support a particular proof methodology - small-scale reflection - most of them actually are of a quite general nature, improving the functionality of Coq in basic areas such as script layout and structuring, proof context management, and rewriting. Consequently, and in spite of the title of this document, most of the extensions described here should be of interest for all Coq users, whether they embrace small-scale reflection or not
An introduction to small scale reflection in Coq
International audienceThis tutorial presents the Ssreflect extension to the Coq system. This extension consists of an extension to the Coq language of script, and of a set of libraries, originating from the formal proof of the Four Color theorem. This tutorial proposes a guided tour in some of the basic libraries distributed in the Ssreflect package. It focuses on the application of the small scale reflection methodology to the formalization of finite objects in intuitionistic type theory
Reflecting BDDs in Coq
Projet COQWe propose an implementation and a proof of correctness of binary decision diagrams (BDDs), completely formalized in Coq. This not only shows that BDD algorithms are correct, but also yields a certified BDD algorithm running in Caml, using extraction, and even allows us to run BDD-based algorithms inside Coq itself, by reflection. The latter point paves the path for a smooth integration of symbolic model-checking in the Coq proof assistant. Extensive experimental results show that this approach works in practice, and is able to solve both relatively hard propositional problems and actual industrial hardware verification problems
Equations for Hereditary Substitution in Leivant's Predicative System F: A Case Study
This paper presents a case study of formalizing a normalization proof for
Leivant's Predicative System F using the Equations package. Leivant's
Predicative System F is a stratified version of System F, where type
quantification is annotated with kinds representing universe levels. A weaker
variant of this system was studied by Stump & Eades, employing the hereditary
substitution method to show normalization. We improve on this result by showing
normalization for Leivant's original system using hereditary substitutions and
a novel multiset ordering on types. Our development is done in the Coq proof
assistant using the Equations package, which provides an interface to define
dependently-typed programs with well-founded recursion and full dependent
pattern- matching. Equations allows us to define explicitly the hereditary
substitution function, clarifying its algorithmic behavior in presence of term
and type substitutions. From this definition, consistency can easily be
derived. The algorithmic nature of our development is crucial to reflect
languages with type quantification, enlarging the class of languages on which
reflection methods can be used in the proof assistant.Comment: In Proceedings LFMTP 2015, arXiv:1507.07597. www:
http://equations-fpred.gforge.inria.fr
Towards the Integration of an Intuitionistic First-Order Prover into Coq
An efficient intuitionistic first-order prover integrated into Coq is useful
to replay proofs found by external automated theorem provers. We propose a
two-phase approach: An intuitionistic prover generates a certificate based on
the matrix characterization of intuitionistic first-order logic; the
certificate is then translated into a sequent-style proof.Comment: In Proceedings HaTT 2016, arXiv:1606.0542
Extending SMTCoq, a Certified Checker for SMT (Extended Abstract)
This extended abstract reports on current progress of SMTCoq, a communication
tool between the Coq proof assistant and external SAT and SMT solvers. Based on
a checker for generic first-order certificates implemented and proved correct
in Coq, SMTCoq offers facilities both to check external SAT and SMT answers and
to improve Coq's automation using such solvers, in a safe way. Currently
supporting the SAT solver zChaff, and the SMT solver veriT for the combination
of the theories of congruence closure and linear integer arithmetic, SMTCoq is
meant to be extendable with a reasonable amount of effort: we present work in
progress to support the SMT solver CVC4 and the theory of bit vectors.Comment: In Proceedings HaTT 2016, arXiv:1606.0542
Gradual Certified Programming in Coq
Expressive static typing disciplines are a powerful way to achieve
high-quality software. However, the adoption cost of such techniques should not
be under-estimated. Just like gradual typing allows for a smooth transition
from dynamically-typed to statically-typed programs, it seems desirable to
support a gradual path to certified programming. We explore gradual certified
programming in Coq, providing the possibility to postpone the proofs of
selected properties, and to check "at runtime" whether the properties actually
hold. Casts can be integrated with the implicit coercion mechanism of Coq to
support implicit cast insertion a la gradual typing. Additionally, when
extracting Coq functions to mainstream languages, our encoding of casts
supports lifting assumed properties into runtime checks. Much to our surprise,
it is not necessary to extend Coq in any way to support gradual certified
programming. A simple mix of type classes and axioms makes it possible to bring
gradual certified programming to Coq in a straightforward manner.Comment: DLS'15 final version, Proceedings of the ACM Dynamic Languages
Symposium (DLS 2015
Tactics for Reasoning modulo AC in Coq
We present a set of tools for rewriting modulo associativity and
commutativity (AC) in Coq, solving a long-standing practical problem. We use
two building blocks: first, an extensible reflexive decision procedure for
equality modulo AC; second, an OCaml plug-in for pattern matching modulo AC. We
handle associative only operations, neutral elements, uninterpreted function
symbols, and user-defined equivalence relations. By relying on type-classes for
the reification phase, we can infer these properties automatically, so that
end-users do not need to specify which operation is A or AC, or which constant
is a neutral element.Comment: 16
- …