Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Proof design principles & frameworks

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Proof design principles & frameworks


Chronological Thread 
  • From: Matthieu Sozeau <mattam AT mattam.org>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Proof design principles & frameworks
  • Date: Wed, 17 Jan 2018 05:20:08 +0000
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mattam AT mattam.org; spf=Pass smtp.mailfrom=matthieu.sozeau AT gmail.com; spf=None smtp.helo=postmaster AT mail-wr0-f171.google.com
  • Ironport-phdr: 9a23:urkxvxfpZETdxDVaOIewDS/6lGMj4u6mDksu8pMizoh2WeGdxcS4ZR7h7PlgxGXEQZ/co6odzbaO6ua4ASQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTahfL9+Ngm6oRnMvcQKnIVuLbo8xAHUqXVSYeRWwm1oJVOXnxni48q74YBu/SdNtf8/7sBMSar1cbg2QrxeFzQmLns65Nb3uhnZTAuA/WUTX2MLmRdVGQfF7RX6XpDssivms+d2xSeXMdHqQb0yRD+v6bpgRh31hycdLzM2/2/Xhc5wgqxVoxyvugJxzJLPbY6PKPZzZLnQcc8GSWdDWMtaSixPApm7b4sKF+cPOvxXr5Xhp1sOrBuxGxSsD/7yxD9Ph375w7c10/k8GgzB2QwvBc4OsGjOo9XwL6oSVPq6zLXUzTrZavNawzD96JLHch04p/yHQLx+cc3UyUY1FgPFiE2dqZT/PzOS0eQNvXSU7/B6WuKhl24rsQZxoiKgxss0hYnJh54VylDZ9Spi2oo1JNq4RFZlbt6iC5tcriWaNotxQsMkWW1otjw6xqUJuZ66YCgKyIknyAXFZ/ObdIiI5xTuX/uSLzdgnH9pZq6zihKo/UWjyuDwTNS43EhJoyZfj9XBtG0B2hrO4cadUPR95F2u2TOX2gDT9O5EJUc0mLLeK5E7w74wkoMfsErZHiPqgUn2grKae0c59uSy5OTnZbLmppCYN4BqkA3xLqMumsmnDeQ5NAgBQXSb9Pyi2LH/+UD1WrZHg/0snqXErpzXJt4XqrO7DgNIyooj7gywDzai0NQWh3kHK1dFdQqCj4fzJ1HOPPD4DfahjFSxijtr3PfGP7z/DZrXM3jOi7jhfbNn5E5dzAo/18xQ55VRCr0ZOvL8RlfxtMDEDh8+KwG73+HnCMxk2owCXWKPH7SWPbjJsV6I4+IvO/ODaJUUuDb7Mfgl5uThgWU3mV8HLuGV2s4cb2n9FfB7KW2YZ2Dti5EPCzQkpA07GcnjlEGCUDNOL021Ta81+3lvDYu6EY7GboWknKCI2WG8BJIANTMOMUyFDXq9L9bMYPwLci/HepYwwAxBbqCoTsoa7T/rsQb7z7R9Ke+No38XsJvi0J5+4OiBzEhupwwxNNyU1iS2d08xhnkBHmVk2aljvUV4jFCZ3vog2qEKJZlo//pMFzwCG9vcwuh9UY6gXwvAepKWUg7jTIz5WHc+SdU+x9JIaEF4SY2v

Hi Talia,

  You maybe know about it already, the recent book on mathematical components goes a lot into proof methods and the framework behind the library, and is meant to be accessible to the newcomer:

  Apart from that, stackoverflow contains some folk knowledge, as does this very mailing list. Of course CPDT also advocates its so-called Chlipala-style, based on dependent types and automation. And Software Foundations kind of gets a style across as well, but more suited to education than maintainance I believe. There might be other projects with a formulated "style"-guideline addressing proof engineering issues. The HoTT library has a set of guidelines for example: 

  https://github.com/HoTT/HoTT/blob/master/STYLE.md

  Just of the top of my head, TLC by Arthur Charguéraud also has a style guideline. For less "standard" libraries, the relational algebra library by D. Pous employ a mixed typeclass - canonical structure approach that has proved very effective:

  https://perso.ens-lyon.fr/damien.pous/ra

  I'm very happy to learn that you are looking into this subject, which from my viewpoint always looked rather scary and ginormous, but I didn't have your tool to even start thinking of tackling the problem! If you look at the Coq contributions for example, you'll see that each one uses a different style (apart from the few following, e.g. mathcomp's or Chlipala's style). There is work on proof refactoring that Hugo Herbelin and Bruno Barras developed for the 7 -> 8 transition that implemented a beautifier allowing to do systematic translations of term syntax and proof scripts, that is still part of Coq, I guess you might be interested in looking at this as well.

  Isabelle does have at least one style guide, I guess you should ask on the Isabelle list for their take on proof engineering:

  http://proofcraft.org/blog/isabelle-style.html

Best (of luck!),
-- Matthieu

On Wed, Jan 17, 2018 at 3:49 AM Kevin Sullivan <sullivan.kevinj AT gmail.com> wrote:
Nice idea. I don't have specifics to offer. Just a vague intuition that concepts of architecture and of design patterns might be worth thinking about. Kevin

On Jan 16, 2018 18:46, "Talia Ringer" <tringer AT cs.washington.edu> wrote:
Hi all,

I am writing a survey paper on proof engineering, and one of the topics is about design principles and frameworks (which often go hand-in-hand).

I'm already aware of a lot of work in this area (planning for changes, writing good automation that is resilient to changes, deep specifications, and principles and frameworks that address problems within certain domains like mechanized metatheory). However, I'm curious if anyone has any useful pointers, especially for folk knowledge -- the kind of thing I might not find looking through old papers, but that everyone who writes proofs about real systems knows and applies in practice.

Of course, if you have papers you'd like to point me to, that's also welcome, since it helps to know if I've missed anything obvious. This doesn't have to be specific to Coq; please feel free to send me something related to other proof assistants like Isabelle. It is particularly interesting to see what exists within one proof assistant but not within another, and whether that is fundamental or simple due to a lack of tooling.

Thanks for all of your help,

Talia Ringer
University of Washington
http://tlringer.github.io/



Archive powered by MHonArc 2.6.18.

Top of Page