Record Functor
`(C : @Category objC)
`(D : @Category objD)
:= {
ObjectOf :> objC -> objD;
MorphismOf : forall s d, C.(Morphism) s d -> D.(Morphism) (ObjectOf s) (ObjectOf d)
}.
Record NaturalTransformation
`(C : @Category objC)
`(D : @Category objD)
(F G : Functor C D)
:= {
ComponentsOf :> forall c, D.(Morphism) (F c) (G c)
}.
Definition ProductCategory
`(C : @Category objC)
`(D : @Category objD)
: @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.
Infix"*" := ProductCategory : category_scope.
Record IsomorphismOf `{C : @Category objC} {s d} (m : C.(Morphism) s d) :=
{
IsomorphismOf_Morphism :> C.(Morphism) s d := m; Inverse : C.(Morphism) d s
}.
Record NaturalIsomorphism
`(C : @Category objC)
`(D : @Category objD)
(F G : Functor C D)
:= {
NaturalIsomorphism_Transformation :> NaturalTransformation F G;
NaturalIsomorphism_Isomorphism : forall x : objC, IsomorphismOf (NaturalIsomorphism_Transformation x)
}.
Let TriMonoidalProductL_ObjectOf (abc : C * C * C) : C :=
(fst (fst abc) # snd (fst abc)) # snd abc.
Let TriMonoidalProductR_ObjectOf (abc : C * C * C) : C :=
fst (fst abc) # (snd (fst abc) # snd abc).
Let TriMonoidalProductL_MorphismOf (s d : C * C * C) (m : Morphism (C * C * C) s d) :
Morphism C (TriMonoidalProductL_ObjectOf s) (TriMonoidalProductL_ObjectOf d). Admitted.
Let TriMonoidalProductR_MorphismOf (s d : C * C * C) (m : Morphism (C * C * C) s d) :
Morphism C (TriMonoidalProductR_ObjectOf s) (TriMonoidalProductR_ObjectOf d). Admitted.
Definition TriMonoidalProductL : Functor (C * C * C) C.
refine (Build_Functor (C * C * C) C
TriMonoidalProductL_ObjectOf
TriMonoidalProductL_MorphismOf). Defined.
Definition TriMonoidalProductR : Functor (C * C * C) C.
refine (Build_Functor (C * C * C) C
TriMonoidalProductR_ObjectOf
TriMonoidalProductR_MorphismOf). Defined.
Section AssociatorCoherenceCondition. Variables a b c d : C.
(* going from top-left *) Let AssociatorCoherenceConditionT0 : Morphism C (((a # b) # c) # d) ((a # (b # c)) # d)
:= Associator (a, b, c) #m Identity (C := C) d. Let AssociatorCoherenceConditionT1 : Morphism C ((a # (b # c)) # d) (a # ((b # c) # d))
:= Associator (a, b # c, d). Let AssociatorCoherenceConditionT2 : Morphism C (a # ((b # c) # d)) (a # (b # (c # d)))
:= Identity (C := C) a #m Associator (b, c, d). Let AssociatorCoherenceConditionB0 : Morphism C (((a # b) # c) # d) ((a # b) # (c # d))
:= Associator (a # b, c, d). Let AssociatorCoherenceConditionB1 : Morphism C ((a # b) # (c # d)) (a # (b # (c # d)))
:= Associator (a, b, c # d).
Definition AssociatorCoherenceCondition := Evalunfold AssociatorCoherenceCondition' in forall a b c d : C, AssociatorCoherenceCondition' a b c d. End PreMonoidalCategory.
Section MonoidalCategory. Variable objC : Type.
Let AssociatorCoherenceCondition' := Evalunfold AssociatorCoherenceCondition in @AssociatorCoherenceCondition.
Section EnrichedCategory.
Context `(M : @MonoidalCategory objM). Let x : M := IdentityObject M. (* Anomaly: apply_coercion_args: mismatch between arguments and coercion. Please report. *) End EnrichedCategory. End FirstComment.
Module SecondComment. SetImplicitArguments. Set Universe Polymorphism. GeneralizableAllVariables.
Record prod (A B : Type) := pair { fst : A; snd : B }. Arguments fst {A B} _. Arguments snd {A B} _. Infix"*" := prod : type_scope. Notation" ( x , y ) " := (@pair _ _ x y).
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.
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.
Section SmallCat. Definition LocallySmallCat := ComputableCategory _ LSUnderlyingCategory. End SmallCat.
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)) } }.
Let SortPolymorphic_Helper (A T : Type) (Build_T : A -> T) := A.
Variable S : (OppositeCategory (FunctorCategory A C)). Variable T : (FunctorCategory B C).
Definition CommaCategoryProjection : Functor (CommaCategory S T) (ProductCategory A B). Admitted.
Definition CommaCategoryProjectionFunctor_ObjectOf
: @SliceCategoryOver _ LocallySmallCat (ProductCategory A B)
:=
existT _
((CommaCategory S T) : Category', tt)
(CommaCategoryProjection) :
CommaCategory_ObjectT (IdentityFunctor _)
(SliceCategory_Functor LocallySmallCat
(ProductCategory A B)). (* Anomaly: apply_coercion_args: mismatch between arguments and coercion. Please report. *) (* Toplevel input, characters 110-142: Error: In environment objA : Type A : Category objA objB : Type B : Category objB objC : Type C : Category objC S : OppositeCategory (FunctorCategory A C) T : FunctorCategory B C The term "ProductCategory A B:Category (objA * objB)" has type "Category (objA * objB)" while it is expected to have type "Object LocallySmallCat".
*) End CommaCategoryProjectionFunctor. End SecondComment.
Messung V0.5
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.