@@ -896,7 +896,7 @@ In other words, the successor function [S] is insufficiently polymorphic. If we
Abort.
(**Whydidwenotrunintothisprobleminourproofof[fhapp_ass'']?Thereasonisthatthepairconstructorispolymorphicinthetypesofthepaircomponents,whilefunctionslike[S]arenotpolymorphicatall.Useofsuchnon-polymorphicfunctionswith[JMeq]tendstopushtowarduseofaxioms.Theexamplewith[nat]hereisabitunrealistic;morelikelycaseswouldinvolvefunctionsthathave_some_polymorphism,butnotenoughtoallowabstractionsofthesortweattemptedabovewith[pattern].Forinstance,wemighthaveanequalitybetweentwolists,wherethegoalonlytype-checkswhenthetermsinvolvedreallyarelists,thougheverythingispolymorphicinthetypesoflistdataelements.The{{http://www.mpi-sws.org/~gil/Heq/}Heq} library builds up a slightly different foundation to help avoid such problems. *)
(**Whydidwenotrunintothisprobleminourproofof[fhapp_assoc'']?Thereasonisthatthepairconstructorispolymorphicinthetypesofthepaircomponents,whilefunctionslike[S]arenotpolymorphicatall.Useofsuchnon-polymorphicfunctionswith[JMeq]tendstopushtowarduseofaxioms.Theexamplewith[nat]hereisabitunrealistic;morelikelycaseswouldinvolvefunctionsthathave_some_polymorphism,butnotenoughtoallowabstractionsofthesortweattemptedabovewith[pattern].Forinstance,wemighthaveanequalitybetweentwolists,wherethegoalonlytype-checkswhenthetermsinvolvedreallyarelists,thougheverythingispolymorphicinthetypesoflistdataelements.The{{http://www.mpi-sws.org/~gil/Heq/}Heq} library builds up a slightly different foundation to help avoid such problems. *)
%\index{universeinconsistency}%Thiserrormessageremindsusthattheuniversevariablefor[T]stillexists,eventhoughitisusuallyhidden.Toapply[id]toitself,thatvariablewouldneedtobelessthanitselfinthetypehierarchy.Universeinconsistencyerrormessagesannouncecaseslikethisonewhereatermcouldonlytype-checkbyviolatinganimpliedconstraintoveruniversevariables.Sucherrorsdemonstratethat[Type]is_predicative_,wherethiswordhasaCICmeaningcloselyrelatedtoitsusualmathematicalmeaning.Apredicativesystemenforcestheconstraintthat,foranyobjectofquantifiedtype,noneofthosequantifiersmayeverbeinstantiatedwiththeobjectitself.%\index{impredicativity}%Impredicativityisassociatedwithpopularparadoxesinsettheory,involvinginconsistentconstructionslike"the set of all sets that do not contain themselves"(%\index{Russell'sparadox}%Russell'sparadox).SimilarparadoxeswouldresultfromuncontrolledimpredicativityinCoq.*)
%\index{universeinconsistency}%Thiserrormessageremindsusthattheuniversevariablefor[T]stillexists,eventhoughitisusuallyhidden.Toapply[id]toitself,thatvariablewouldneedtobelessthanitselfinthetypehierarchy.Universeinconsistencyerrormessagesannouncecaseslikethisonewhereatermcouldonlytype-checkbyviolatinganimpliedconstraintoveruniversevariables.Sucherrorsdemonstratethat[Type]is_predicative_,wherethiswordhasaCICmeaningcloselyrelatedtoitsusualmathematicalmeaning.Apredicativesystemenforcestheconstraintthat,whenanobjectisdefinedusingsomesortofquantifier,noneofthequantifiersmayeverbeinstantiatedwiththeobjectitself.%\index{impredicativity}%Impredicativityisassociatedwithpopularparadoxesinsettheory,involvinginconsistentconstructionslike"the set of all sets that do not contain themselves"(%\index{Russell'sparadox}%Russell'sparadox).SimilarparadoxeswouldresultfromuncontrolledimpredicativityinCoq.*)
(****InductiveDefinitions*)
...
...
@@ -1109,7 +1110,7 @@ eq_rect_eq : forall (U : Type) (p : U) (Q : U -> Type) (x : Q p) (h : p = p),