coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Robin Green <greenrd AT greenrd.org>
- To: Coq List <coq-club AT pauillac.inria.fr>
- Subject: [Coq-Club] Uniqueness of a term of a given type
- Date: Wed, 04 Jul 2007 10:28:06 +0100
- List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>
- Organization: Systems Research Group, UCD Dublin
I am curious about the general question of: given a type in the
Calculus of Inductive Constructions, does there exist a unique term of
that type? And moreover, if there does, how to prove this in Coq?
Here is a simple example (in Coq 8.1 syntax), based on id_t, the type of
the polymorphic identity function id (Definition id (a:Type) (x:a) :
a := x.)
Definition id_t := forall (a : Type), a -> a.
(* This is not allowed:
Definition weird : id_t := fun (a : Set) (x : a) => match a with nat =>
0 | _ => x end. *)
Lemma uniqueness_of_id : exists! f:id_t, True.
I posit that all functions having type id_t must either:
a) be equal to id as defined above (note that I am assuming functional
extensional equality), or
b) be of the same form as "weird" above, and hence disallowed.
and hence uniqueness_of_id is true in CiC.
However, how would I prove this in Coq?
Would I need any axioms other than those in the Coq standard library?
Thanks,
--
Robin
- [Coq-Club] Uniqueness of a term of a given type, Robin Green
- Re: [Coq-Club] Uniqueness of a term of a given type, Bruno Barras
Archive powered by MhonArc 2.6.16.