Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Beginner question -- equality of types

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Beginner question -- equality of types


Chronological Thread 
  • From: Frédéric Besson <frederic.besson AT inria.fr>
  • To: Greg Morrisett <greg AT eecs.harvard.edu>
  • Cc: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Beginner question -- equality of types
  • Date: Fri, 7 Jun 2013 00:03:36 +0200

Hello,

On 3 juin 2013, at 23:10, Greg Morrisett
<greg AT eecs.harvard.edu>
wrote:

> The usual way around this is to define syntax for types e.g.,:
>
> Inductive tipe : Set :=
> | Nat : tipe
> | Pair : tipe -> tipe -> tipe
> | Arrow : tipe -> tipe -> tipe.
> […]
> This gets trickier when you have complicated types (e.g.,
> polymorphism or dependent types).

I remember trying once for polymorphic types and ran quickly into troubles.
Without functional equality axiom (I think), for polymorphic types, I could
not prove things like:
f : [[ Arrow t1 t2]]
x : [[t1]]
----------------------
(f x) : [[apply (Arrow t1 t2) t1]]

Is there a known encoding that is axiom-free ?
What subset of Coq can be reflected this way ? Are there known limits ?

--
Frédéric

PS: We ran into this problem when considering a reflexive version of
congruence.
We sidestepped the difficulty by ruling out polymorphism and considering
e.g. (cons nat) and (cons Z) as different constructors.




Archive powered by MHonArc 2.6.18.

Top of Page