Skip to Content.
Sympa Menu

coq-club - [Coq-Club] (co)datatype question

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] (co)datatype question


Chronological Thread 
  • From: Andrei Popescu <uuomul AT yahoo.com>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Cc: Jasmin Blanchette <blanchette AT in.tum.de>, Dmitriy Traytel <traytel AT in.tum.de>
  • Subject: [Coq-Club] (co)datatype question
  • Date: Tue, 15 Apr 2014 11:14:45 -0700 (PDT)
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:Message-ID:Date:From:Reply-To:Subject:To:Cc:MIME-Version:Content-Type; b=VM+1Yekw9RF73fq6qExfTZ2MMa180ec4iEfhNgVZWd2xjP7Yusg/BhdhIM2I2ysqFQ8FOUPS2J2Qkq+VMm391RiWLulqZMh2zY71iIywSG82qTkc02MWB9FDpNppWVHJxnXc/1wgaD3HCjHoJXXr0ETcaEM67S4lld+wzpDLb/c=;

Dear Coq,

Greetings from Isabelle/HOL! 

I have recently undergone a major category-theory-based surgery at my datatype system (of course without affecting my kernel). Due to inherent limitations of my underlying logic, I still cannot handle dependent datatype families, or inner-nested (co)corecursion such as:

Inductive TermModuloAlpha (A:Type) : Type :=
   | Var : A -> TermModuloAlpha (A)
   | App : TermModuloAlpha (A) -> TermModuloAlpha (A) -> TermModuloAlpha (A)
   | Lam : TermModuloAlpha (Option (A)) -> TermModuloAlpha (A)

But within the HOL fragment I can now model things like:

(1) Outer-nested (co)recursion through (co)datatypes, such as

(1.a) Inductive RoseTree (A:Type) : Type :=
   | Node : List (RoseTree (A)) -> RoseTree (A)

(1.b) Inductive RoseTree (A:Type) : Type :=
   | Node : Stream (RoseTree (A)) -> RoseTree (A)

(1.c) Coinductive RoseTree (A:Type) : Type :=
   | Node : List (RoseTree (A)) -> RoseTree (A)

(2) Outer-nested (co)recursion through (suitably bounded) non-datatypes, such as

Inductive RoseTree (A:Type) : Type :=
   | Node : FiniteSet (RoseTree (A)) -> RoseTree (A)

Now comes my question:  My surgeons are finishing the camera-ready version of an ITP paper on this, and would like to provide an accurate comparison with other systems. How do you model the above situations?  As far as I
understand after glimpsing through your medical records, you can handle (1.a) by (automatically?) reducing the situation to mutual recursion.  However, you cannot directly represent (1.b), (1.c) and (2) -- I may of course be wrong, and this is why I am asking you.  

All the best,
  Isabelle/HOL




  • [Coq-Club] (co)datatype question, Andrei Popescu, 04/15/2014

Archive powered by MHonArc 2.6.18.

Top of Page