Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Release of DBGen v0.5.2

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Release of DBGen v0.5.2


Chronological Thread 
  • From: Emmanuel Polonowski <polonowski AT u-pec.fr>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] Release of DBGen v0.5.2
  • Date: Tue, 26 Feb 2013 12:16:45 +0100

Dear Coq-club members,

I am pleased to announce that the release of DBGen 0.5.2 is now available at
http://www.lacl.fr/~polonowski/Develop/DBGen/dbgen.html .

DBGen is a tool designed to help the computer theoretist to formalize
higher-order languages in the De Bruijn setting. From a Coq inductive
definition annotated with special comments, it generates a Coq file with all
the definitions and statements needed to work with De Bruijn encodings (up to
the substitution lemma). It also provide a named syntax and a smart
translation function.
DBGen handles mutually inductive definitions and multiple distinct index
sets: definitions, statements and proofs will proceed along the user
inductive syntax definition.

Input file is a simple Coq module with special annotations that describes the
binding structure of the defined syntax (aka DBEB abstract syntax). For
instance, source syntax for System F is written as follows:

Module SYS_F_terms.

Inductive type : Type :=
| tvar ((* index *) i : nat)
| tconst (n : nat)
| tarrow (A B : type)
| tall ((* bind type in *) A : type).

Inductive term : Type :=
| var ((* index *) x : nat)
| app (t1 t2 : term)
| lam (A : type) ((* bind term in *) t : term)
| tapp (t : term) (A : type)
| gen ((* bind type in *) t : term).

End SYS_F_terms.

With this annotations, DBGen will produce a Coq module of the given name
SYS_F_terms (around 2200 lines) that contains this definition (without the
comments), the three lifting functions (term_lift_in_term : nat -> nat ->
term -> term, type_lift_in_term : nat -> nat -> term -> term and
type_lift_in_type : nat -> nat -> type -> type), the three substitution
functions (term_subst_in_term : term -> nat -> term -> term,
type_subst_in_term : type -> nat -> term -> term and type_subst_in_type :
type -> nat -> type -> type) and a large collection of statements with their
proofs, up to the three substitution lemmas.

Moreover, a tactic named dbgen_tac is built with all the simplification
lemmas and is therefore able to simplify and decompose arbitrary terms that
contains lifting and substitution functions invocation.

A user manual and a large set of examples are provided in the distribution.

The main changes in v0.5.2 are:
- Handles mixed constructors with (at most) one index parameter and other
non-index parameters.
- Handles simultaneous definition of parameters of the same category (as in
"app (t u : term)").
- Performs static checking of source syntax for: no multiple index in a
constructor, only user defined binding categories.

See http://www.lacl.fr/~polonowski/Develop/DBGen/dbgen.html for more details.
Comments and experimentations are very welcome !

Best regards,
Emmanuel Polonowski

--
Emmanuel Polonowski
Directeur de l'ESIAG-MIAGE
Université Paris-Est Créteil
www.lacl.fr/~polonowski



  • [Coq-Club] Release of DBGen v0.5.2, Emmanuel Polonowski, 02/26/2013

Archive powered by MHonArc 2.6.18.

Top of Page