Giter Site home page Giter Site logo

sniper's Introduction

Sniper

Sniper is a Coq plugin that provides a new Coq tactic, snipe, that provides general proof automation.

This plugin is an extension of SMTCoq, a plugin to safely call external SMT solvers from Coq. Sniper extends SMTCoq by translating (a subset) of Coq goals into first-order logic before calling SMTCoq.

The translation is implemented through a combination of modular, small transformations that independently eliminate specific aspects of Coq logic towards first-order logic. These small transformations are safe, either generating proof terms on the fly (certifying transformations) or being proved once and for all in Coq (certified transformations). A crucial transformation is given by the Trakt plugin.

This version is an experimental version using the Trakt plugin.

Installation and use

This part describes the steps required to try the snipe tactic. It can be used with Coq-8.17.

You will need the following packages. The names are those for debian, please adapt as required for your distribution.

  • opam: for installing coqide, metacoq and smtcoq
  • pkg-config: required for creating an opam switch
  • libgtksourceview-3.0-dev: required by coqide
  • git: for installing smtcoq through opam
  • bison, flex: for compiling veriT

If opam was not installed on your machine you have to initialize it (all the files are confined within ~/.opam):

opam init --bare --no-setup

It requires OCaml between 4.09 and 4.10:

opam switch create 4.09.1
eval $(opam env)

You need to add two opam repositories:

opam repo add coq-released https://coq.inria.fr/opam/released
opam repo add coq-extra-dev https://coq.inria.fr/opam/extra-dev

Then simply install this version of Sniper:

opam install -y .

Installation of the automatic prover and use

You also need the veriT SMT solver, using these sources. Once unpacked, compilation of veriT is as follows:

cd veriT9f48a98
./configure
make

We need the veriT binary to be in PATH in order for Sniper to use it:

export PATH="$PATH:$(pwd)"
cd ..

Examples, tests and benchmarks

Commented examples are available at examples.v.

License

As an extension of SMTCoq, Sniper is released under the same license as SMTCoq: CeCILL-C. See the file LICENSE for details.

Authors

See the file AUTHORS.

sniper's People

Contributors

louiseddp avatar pierrevial avatar tomaz1502 avatar pi8027 avatar vblot avatar ckeller avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.