GithubHelp home page GithubHelp logo

paramcoq's Introduction

The plugin is still in an experimental state. It is not very user friendly (lack of good error messages) and still contains bugs. But is useable enough to "translate" a large chunck of standard library.

Compilation

The plugin currently works on a branch of coq (hopefully, in the future, it will also work on a stable official release). The easy (and long) way to test the plugin is to follow the following steps:

  • Create a fresh directory and move into it:

      mkdir testplugin && cd testplugin 
    
  • Retrieve my branch of coq and compile it (and go take a coffee, or may be 5 coffees):

      git clone -b paramcoq https://github.com/mlasson/coq.git
      cd coq
      ./configure -local 
      make -j 4 
      cd ..
    
  • Retrieve the plugin and compile it:

      git clone https://github.com/mlasson/paramcoq.git
      cd paramcoq 
      make
    

To test the plugin:

    cd test-suite
    make ide

It will compile Parametricity.vo which loads the plugin and contains a translation of the initial modules. Then, it launches coq-ide with some simple examples.

Available commands

The default arity is 2. The default name is automatically generated when translating a constant (otherwise you need to provide it).

  • Parametricity [Recursive] ident [as name] [arity n].

Declare the translation named name from the translation of the constant or the inductive ident. You can use the recursive option to recursively translate all the constant and inductives which are used by ident.

  • Parametricity Translation term [as name] [arity n].

Define a new constant named name obtained by computing the parametricity translation of term.

  • Parametricity Module modulepath.

Recursively translate everything in a module.

  • Realizer constant or variable [as name] [arity n] := term.

Declare term to be the translation of a constant. Useful to translate terms containing section variables, or axioms.

Note that all that both translating a term or module may lead to proof obligations (for some fixpoints and opaque terms if you did not import ProofIrrelevence).

  • [Global | Local] Parametricity Tactict := t.

Use the tactic t to solve proof obligations generated by the Parametricity command.

paramcoq's People

Contributors

mlasson avatar

Stargazers

Emilio Jesús Gallego Arias avatar

Watchers

Pierre-Évariste Dagand avatar Damien Rouhling 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.