Git Product home page Git Product logo

coq-lint's Introduction

coq-lint: a prototype linter for Coq proof scripts

based on Coq 8.18.0 and serapi 8.18.0+0.18.1

Compiling (from the main directory coq-lint)

ocamlc unix.cma main.ml -o a OR make

Achievements

Transform a proof script into an equivalent (multi-tactics) single-line proof!

Examples

  • see examples/
  • working example : Highschool/orthocenter.v This file comes from the GeoCoq library (one_liner_orthocenter.v is in the gallery/ directory; one can generate it using ./run Highschool/orthocenter.v in the GeoCoq directory)

TODO

  • check and fix the examples tess.v, tata.v and toto.v

  • in GeoCoq, translating the file orientationv. : orie.v works (194 lines) but orien.v does not (269 lines)

  • issues with ... notation (so far replaced by ..)

  • keep comments and handle nested comments properly (in commands, remove them in proofs)

  • handle correctly the remaining "Check" and "Print" inside the proof steps

  • deal with proof steps of the shape "3: intros; reflexivity"

  • deal with structure introduced by { and } properly

  • in case the dev relies on a _CoqProject file, the -R or -Q line should be passed to sertop (e.g. sertop -R.,GeoCoq --printer=human)

FIXED

  • change whether () and . should always be removed. example : now rewrite (Nat.add_succ_r y x.
  • when 'by' occurs in the tactic : put everything in '( )'
  • remove - and * and + when reading the initial file
  • the transformation fails when a tactic starts with a capital letter (and thus is recognized as a Command (should tactics be allowed to start with a capital letter CopR -> copR ?)

EXAMPLES

  • and_or_distrib.v
  • example2.v
  • bar.v (already factorized, no changes)
  • Cantor.v
  • GeoCoq/Highschool/orthocenter.v
  • GeoCoq/Highschool/varignon.v
  • GeoCoq/Highschool/incenter.v (must remove curly brackets first)

coq-lint's People

Contributors

magaud avatar

Watchers

 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.