Mercurial > cpdt > repo
diff src/GeneralRec.v @ 496:88688402dc82
Pass through Chapter 7
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 20 Jan 2013 07:35:35 -0500 |
parents | f38a3af9dd17 |
children | 3b21f4395178 |
line wrap: on
line diff
--- a/src/GeneralRec.v Sun Jan 20 06:59:34 2013 -0500 +++ b/src/GeneralRec.v Sun Jan 20 07:35:35 2013 -0500 @@ -901,7 +901,7 @@ Error: Universe inconsistency. >> -The problem has to do with rules for inductive definitions that we still study in more detail in Chapter 12. Briefly, recall that the type of the constructor [Bnd] quantifies over a type [B]. To make [testCurriedAdd] work, we would need to instantiate [B] as [nat -> comp nat]. However, Coq enforces a %\emph{predicativity restriction}% that (roughly) no quantifier in an inductive or co-inductive type's definition may ever be instantiated with a term that contains the type being defined. Chapter 12 presents the exact mechanism by which this restriction is enforced, but for now our conclusion is that [comp] is fatally flawed as a way of encoding interesting higher-order functional programs that use general recursion. *) +The problem has to do with rules for inductive definitions that we will study in more detail in Chapter 12. Briefly, recall that the type of the constructor [Bnd] quantifies over a type [B]. To make [testCurriedAdd] work, we would need to instantiate [B] as [nat -> comp nat]. However, Coq enforces a %\emph{predicativity restriction}% that (roughly) no quantifier in an inductive or co-inductive type's definition may ever be instantiated with a term that contains the type being defined. Chapter 12 presents the exact mechanism by which this restriction is enforced, but for now our conclusion is that [comp] is fatally flawed as a way of encoding interesting higher-order functional programs that use general recursion. *) (** * Comparing the Alternatives *)