From 7cfc4e5146be5666419451bdd516f1f3f264d24a Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Sun, 25 Jan 2015 14:42:51 +0100 Subject: Imported Upstream version 8.5~beta1+dfsg --- test-suite/bugs/closed/HoTT_coq_100.v | 151 ++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 test-suite/bugs/closed/HoTT_coq_100.v (limited to 'test-suite/bugs/closed/HoTT_coq_100.v') diff --git a/test-suite/bugs/closed/HoTT_coq_100.v b/test-suite/bugs/closed/HoTT_coq_100.v new file mode 100644 index 00000000..c39b7093 --- /dev/null +++ b/test-suite/bugs/closed/HoTT_coq_100.v @@ -0,0 +1,151 @@ +(* File reduced by coq-bug-finder from 335 lines to 115 lines. *) +Set Implicit Arguments. +Set Universe Polymorphism. +Generalizable All Variables. +Record Category (obj : Type) := + Build_Category { + Object :> _ := obj; + Morphism : obj -> obj -> Type; + + Identity : forall x, Morphism x x; + Compose : forall s d d', Morphism d d' -> Morphism s d -> Morphism s d' + }. + +Arguments Identity {obj%type} [!C] x : rename. + +Arguments Compose {obj%type} [!C s d d'] m1 m2 : rename. +Record > Category' := + { + LSObject : Type; + + LSUnderlyingCategory :> @Category LSObject + }. + +Section Functor. + + Context `(C : @Category objC). + Context `(D : @Category objD). + Record Functor := + { + ObjectOf :> objC -> objD; + MorphismOf : forall s d, C.(Morphism) s d -> D.(Morphism) (ObjectOf s) (ObjectOf d) + }. + +End Functor. +Section FunctorComposition. + + Context `(C : @Category objC). + Context `(D : @Category objD). + Context `(E : @Category objE). + Definition ComposeFunctors (G : Functor D E) (F : Functor C D) : Functor C E. + + Admitted. +End FunctorComposition. +Section IdentityFunctor. + + Context `(C : @Category objC). + Definition IdentityFunctor : Functor C C. + + admit. + Defined. +End IdentityFunctor. +Section ProductCategory. + + Context `(C : @Category objC). + Context `(D : @Category objD). + Definition ProductCategory : @Category (objC * objD)%type. + + refine (@Build_Category _ + (fun s d => (C.(Morphism) (fst s) (fst d) * D.(Morphism) (snd s) (snd d))%type) + (fun o => (Identity (fst o), Identity (snd o))) + (fun s d d' m2 m1 => (Compose (fst m2) (fst m1), Compose (snd m2) (snd m1)))). + Defined. +End ProductCategory. +Parameter TerminalCategory : Category unit. + +Section ComputableCategory. + + Variable I : Type. + Variable Index2Object : I -> Type. + Variable Index2Cat : forall i : I, @Category (@Index2Object i). + Local Coercion Index2Cat : I >-> Category. + + Definition ComputableCategory : @Category I. + + refine (@Build_Category _ + (fun C D : I => Functor C D) + (fun o : I => IdentityFunctor o) + (fun C D E : I => ComposeFunctors (C := C) (D := D) (E := E))). + Defined. +End ComputableCategory. +Definition LocallySmallCat := ComputableCategory _ LSUnderlyingCategory. +Section CommaCategory. + + Context `(A : @Category objA). + Context `(B : @Category objB). + Context `(C : @Category objC). + Variable S : Functor A C. + Variable T : Functor B C. + Record CommaCategory_Object := { CommaCategory_Object_Member :> { ab : objA * objB & C.(Morphism) (S (fst ab)) (T (snd ab)) } }. + +End CommaCategory. +Definition SliceCategory_Functor `(C : @Category objC) (a : C) : Functor TerminalCategory C + := {| ObjectOf := (fun _ => a); + MorphismOf := (fun _ _ _ => Identity a) + |}. + +Definition SliceCategoryOver +: forall (objC : Type) (C : Category objC) (a : C), + Category + (CommaCategory_Object (IdentityFunctor C) + (SliceCategory_Functor C a)). + + admit. +Defined. +Section CommaCategoryProjectionFunctor. + + Context `(A : Category objA). + Context `(B : Category objB). + Let X : LocallySmallCat. + + Proof. + hnf. + pose (@SliceCategoryOver _ LocallySmallCat). + exact (ProductCategory A B). + Set Printing Universes. + Defined. +(* Error: Illegal application: +The term + "CommaCategory_Object (* Top.306 Top.307 Top.305 Top.300 Top.305 Top.306 *)" +of type + "forall (objA : Type (* Top.305 *)) + (A : Category (* Top.306 Top.305 *) objA) (objB : Type (* Top.307 *)) + (B : Category (* Top.300 Top.307 *) objB) (objC : Type (* Top.305 *)) + (C : Category (* Top.306 Top.305 *) objC), + Functor (* Top.306 Top.305 Top.305 Top.306 *) A C -> + Functor (* Top.300 Top.307 Top.305 Top.306 *) B C -> + Type (* max(Top.307, Top.305, Top.306) *)" +cannot be applied to the terms + "Category' (* Top.312 Top.311 *)" : "Type (* max(Top.311+1, Top.312+1) *)" + "LocallySmallCat (* Top.309 Top.310 Top.311 Top.312 Top.313 Top.314 Top.306 Top.316 Top.305 *)" + : "Category (* Top.306 Top.305 *) Category' (* Top.312 Top.311 *)" + "unit" : "Set" + "TerminalCategory (* Top.300 *)" : "Category (* Top.300 Set *) unit" + "Category' (* Top.312 Top.311 *)" : "Type (* max(Top.311+1, Top.312+1) *)" + "LocallySmallCat (* Top.309 Top.310 Top.311 Top.312 Top.313 Top.314 Top.306 Top.316 Top.305 *)" + : "Category (* Top.306 Top.305 *) Category' (* Top.312 Top.311 *)" + "IdentityFunctor (* Top.299 Top.302 Top.301 Top.305 Top.306 *) + LocallySmallCat (* Top.309 Top.310 Top.311 Top.312 Top.313 Top.314 + Top.306 Top.316 Top.305 *)" + : "Functor (* Top.306 Top.305 Top.305 Top.306 *) LocallySmallCat + (* Top.309 Top.310 Top.311 Top.312 Top.313 Top.314 Top.306 Top.316 + Top.305 *) LocallySmallCat (* Top.309 Top.310 Top.311 Top.312 Top.313 + Top.314 Top.306 Top.316 Top.305 *)" + "SliceCategory_Functor (* Top.305 Top.306 Top.307 Top.300 *) LocallySmallCat + (* Top.309 Top.310 Top.311 Top.312 Top.313 Top.314 Top.306 Top.316 + Top.305 *) a" + : "Functor (* Top.300 Top.307 Top.305 Top.306 *) TerminalCategory + (* Top.300 *) LocallySmallCat (* Top.309 Top.310 Top.311 Top.312 + Top.313 Top.314 Top.306 Top.316 Top.305 *)" +The 4th term has type "Category (* Top.300 Set *) unit" +which should be coercible to "Category (* Top.300 Top.307 *) unit". *) -- cgit v1.2.3