From maggesi at math.unifi.it Thu Nov 8 04:45:33 2007 From: maggesi at math.unifi.it (Marco Maggesi) Date: Thu, 08 Nov 2007 10:45:33 +0100 Subject: [POPLmark] A new solution to part 1A using nested datatypes. Message-ID: <4732DABD.6090303@math.unifi.it> Hi all, we propose a new solution to part 1A of the Challenge based on Nested Datatypes in the Coq proof assistant. This work is a radical improvement of our previous attempt. In particular, the new formalization is much shorter (2.7 kb gzipped) than the previous one. A web page with a brief description and the sources of the formalization is available from http://web.math.unifi.it/~maggesi/mechanized/fsub/ Andr? Hirschowitz, Marco Maggesi From bcpierce at cis.upenn.edu Thu Nov 8 07:19:30 2007 From: bcpierce at cis.upenn.edu (Benjamin Pierce) Date: Thu, 8 Nov 2007 07:19:30 -0500 Subject: [POPLmark] A new solution to part 1A using nested datatypes. In-Reply-To: <4732DABD.6090303@math.unifi.it> References: <4732DABD.6090303@math.unifi.it> Message-ID: > we propose a new solution to part 1A of the Challenge based on Nested > Datatypes in the Coq proof assistant. > > This work is a radical improvement of our previous attempt. In > particular, the new formalization is much shorter (2.7 kb gzipped) > than > the previous one. That is impressively compact! Two small questions... 1) How should one "pronounce" the narrowing and transitivity properties? 2) Why doesn't the built-in inversion tactic give you a useful result? Regards, - Benjamin From maggesi at math.unifi.it Thu Nov 8 11:25:48 2007 From: maggesi at math.unifi.it (Marco Maggesi) Date: Thu, 08 Nov 2007 17:25:48 +0100 Subject: [POPLmark] A new solution to part 1A using nested datatypes. In-Reply-To: References: <4732DABD.6090303@math.unifi.it> Message-ID: <4733388C.9050005@math.unifi.it> Benjamin Pierce wrote: >> we propose a new solution to part 1A of the Challenge based on Nested >> Datatypes in the Coq proof assistant. >> >> This work is a radical improvement of our previous attempt. In >> particular, the new formalization is much shorter (2.7 kb gzipped) than >> the previous one. > > That is impressively compact! > > Two small questions... > > 1) How should one "pronounce" the narrowing and transitivity properties? For the transitivity property Lemma transitivity : forall X (G:env X) s q t, G \- s << q -> G \- q << t -> G \- s << t. X is a set of "free variables", G is an environment where terms can have free variables in X, (s q t : ftype X) are terms with free variables in X. The rest should be obvious. The narrowing property is more complicated. Lemma narrowing : forall X (G:env X) Y (Dp Dq:env Y) (f:^X->Y) p q m n, (forall y, y = f None \/ Dp y = Dq y) -> WF (G & p) Dp f -> WF (G & q) Dq f -> Dq \- m << n -> G \- p << q -> Dp \- m << n. The key point, perhaps, is to understand how the WF hypothesis are used. In short, G=\Gamma, G&p=G,X<:P and Dp is a name for \Gamma,X<:P,\Delta. Their types are G : env X G&p : env ^X Dp Dq : env Y We need a way to specify how the set of variable ^X is embedded in the other set of variable Y. This is the role of (f:^X->Y). So the intuition is that ^X is a subset of Y and f is the inclusion map, (even if we do not need to assume f to be injective). Then, the hypothesis WF (G & p) Dp f says that Dp is a well formed extension of G&p with respect to the 'reindexing' f. Finally, the hypothesis forall y, y = f None \/ Dp y = Dq y assures that the terms P and Q are bound to the "same" variable (i.e., to indexes that corresponds through f) in G&p, G&q, Dp, Dq. Hope this helps to clarify. > 2) Why doesn't the built-in inversion tactic give you a useful result? When dependent types occur in a non trivial way, the hypothesis generated by the inversion tactic are expressed with JMeq. To be honest I didn't try very hard to find a way to take advantage of these hypothesis (easily, i.e., without solving second order unification problems "by hand") since my tactic seemed to be simple and effective enough any way. > Regards, > > - Benjamin M. From Scott.Owens at cl.cam.ac.uk Fri Nov 9 07:22:17 2007 From: Scott.Owens at cl.cam.ac.uk (Scott Owens) Date: Fri, 9 Nov 2007 12:22:17 +0000 Subject: [POPLmark] A sound semantics for OCaml light Message-ID: We are pleased to announce the public release of OCaml light, a formal semantics for a substantial, practical subset of the Objective Caml language. It is written in Ott, generating proof assistant definitions for HOL-4 and (in draft form) Coq and Isabelle/HOL. It comprises a small-step operational semantics and a syntactic, non- algorithmic type system. A type soundness theorem has been proved and mechanized using the HOL-4 proof assistant. To ensure that the operational semantics accurately models Objective Caml, an executable version of the semantics has been created (and proved equivalent in HOL to the original, relational version) and tested on a number of small test cases. For more information please visit http://www.cl.cam.ac.uk/~so294/ocaml. -Scott, Gilles, Peter, and Tom From sweirich at cis.upenn.edu Tue Nov 20 15:21:57 2007 From: sweirich at cis.upenn.edu (Stephanie Weirich) Date: Tue, 20 Nov 2007 15:21:57 -0500 Subject: [POPLmark] Coq Tutorial at POPL 2008: Using Proof Assistants for Programming Language Research Message-ID: ====================================================================== Tutorial Announcement and Call for Participation Using Proof Assistants for Programming Language Research Or: How to Write Your Next POPL Paper in Coq San Francisco, CA, 8 Jan 2008 Co-located with POPL 2008 Sponsored by ACM SIGPLAN http://plclub.org/popl08-tutorial/ ======================================================================= The University of Pennsylvania PLClub invites you to participate in a tutorial on using the Coq proof assistant to formalize programming language metatheory. This tutorial will be tailored to people who are familiar with syntactic proofs of programming language metatheory (type soundness, etc.), but have never used a proof assistant. At the end of the day, participants will have a reading knowledge of Coq and a running start on using Coq in their own work. This tutorial will be hands-on, with breaks for exercises; participants are strongly encouraged to bring a laptop running Coq 8.1 (or a later release) and either Proof General or CoqIDE. Tutorial topics - Defining language semantics in Coq - Abstract syntax - Inductively-defined relations - Derivations - Proving simple results - Fundamental tactics - Automation - Forward and backward reasoning - Scaling up to POPLmark - Semantic functions and conversion - Sets and environments - Representing binding - Locally nameless representation - Freshness through cofinite quantification - Syntactic type soundness Registration will be through the POPL 2008 registration site: http://www.regmaster.com/conf/popl2008.html The tutorial is organized and presented by members of the University of Pennsylvania PLClub: Brian Aydemir, Aaron Bohannon, Benjamin Pierce, Jeffrey Vaughan, Dimitrios Vytiniotis, Stephanie Weirich, and Steve Zdancewic. Questions can be sent to Stephanie Weirich (sweirich at cis.upenn.edu).