Giter VIP home page Giter VIP logo

regexp-brzozowski's Introduction

Regexp Brzozowski

Docker CI Contributing Code of Conduct Zulip DOI

Coq library that formalizes decision procedures for regular expression equivalence, using the Mathematical Components library. The formalization builds on Brzozowski's derivatives of regular expressions for correctness.

Meta

Building and installation instructions

The easiest way to install the latest released version of Regexp Brzozowski is via OPAM:

opam repo add coq-released https://coq.inria.fr/opam/released
opam install coq-regexp-brzozowski

To instead build and install manually, do:

git clone https://github.com/coq-community/regexp-Brzozowski.git
cd regexp-Brzozowski
make   # or make -j <number-of-cores-on-your-machine> 
make install

Documentation

The paper on the formalization was written at Chalmers, in the ForMath Project. More information about the project and its achievements is available on the Chalmers website:

Overview of the Coq files:

  • glue.v: Basic definitions and lemmas.
  • regexp.v: Description and properties of regular expressions.
  • gfinset.v: Alternative definition of finite sets.
  • finite_der.v: The main proof that the set of derivatives of a regular expression is finite. The proof uses an abstract notion of similarity with the Brzozowski requirements.
  • equiv.v: Description of the equivalence procedure and proof of its correctness. In case of non-equivalence, we also produce a witness which is recognized by the first language but not by the second.
  • sim1.v: Naive implementation of similarity checking (by double inclusion), with only Brzozowski simplifications.
  • sim2.v: More efficient implementation of similarity checking (with a "compilation" of regular expressions) which implements many more simplifications.
  • ex.v: A few test cases which allow comparing the decision procedures in sim1.v and sim2.v inside Coq.

regexp-brzozowski's People

Contributors

orchid-hybrid avatar palmskog avatar vsiles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

orchid-hybrid

regexp-brzozowski's Issues

Consider changing name of the repo/project

The current name (regexp-Brzozowski) is both hard to spell and hard to pronounce for most people in the Coq community. A better name could be more generic, like "regexp-decision" or "regexp-equivalence".

Transfer repository to coq-community for maintenance?

Dear Vincent,

Since this repository is unmaintained, would you be willing to transfer it to coq-community?
It's an organization of Coq enthusiasts who collaboratively develop or maintain important Coq projects.
If you are interested, you can find more information here: https://github.com/coq-community/manifesto.

Even if transfer the ownership you and Thierry will still be credited as the authors, see https://github.com/coq-community/lemma-overloading, for example.

One thing we usually ask (but this is not a prerequisite) -- to relicense the code from GPL, which was not developed with proof assistants in mind, to a more permissive MIT license or something like that.

Please let me know what you think.

Best regards,
Anton Trunov
coq-community maintainer

Make project depend on RegLang definitions

Partly due to shared heritage, the definitions of languages and regular expressions in this project and RegLang are closely related. Since RegLang is now part of the Coq Platform, this project should be made to depend on the definitions in RegLang as far as possible.

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.