Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346############################################################################# ## ## CAP package ## ## Copyright 2015, Sebastian Gutsche, TU Kaiserslautern ## Sebastian Posur, RWTH Aachen ## #! @Chapter Serre Quotients ## ############################################################################# #! Serre quotients are implemented using generalized morphisms. A Serre quotient category #! is the quotient of an abelian category A by a thick subcategory C. The objects of the quotient #! are the objects from A, the morphisms are a limit construction. In the implementation #! those morphisms are modeled by generalized morphisms, and therefore there are, #! like in the generalized morphism case, three types of Serre quotients. #! @Section General operations #! As in the generalized morphism case, the generic constructors depend on the #! generalized morphism standard. Please note that for implementations the specialized #! constructors should be used. #! @Description #! The category of objects in the category of Serre quotients. #! For actual objects this needs to be specialized. DeclareCategory( "IsSerreQuotientCategoryObject", IsCapCategoryObject ); #! @Description #! The category of morphisms in the category of Serre quotients. #! For actual morphisms this needs to be specialized. DeclareCategory( "IsSerreQuotientCategoryMorphism", IsCapCategoryMorphism ); #! @BeginGroup #! @Description #! Creates a Serre quotient category <A>S</A> with name <A>name</A> out of an Abelian category <A>A</A>. #! If <A>name</A> is not given, a generic name is constructed out of the name of <A>A</A>. #! The argument <A>func</A> must be a unary function on the objects of <A>A</A> deciding the membership in #! the thick subcategory C mentioned above. #! @Arguments A,func[,name] #! @Returns a CAP category DeclareOperation( "SerreQuotientCategory", [ IsCapCategory, IsFunction, IsString ] ); DeclareOperation( "SerreQuotientCategory", [ IsCapCategory, IsFunction ] ); DeclareOperation( "\/", [ IsCapCategory, IsFunction ] ); #! @EndGroup #! @Description #! Given a Serre quotient category <A>A/C</A> and an object <A>M</A> in <A>A</A>, #! this constructor returns the corresponding object in the Serre quotient category. #! @Arguments A/C, M #! @Returns an object DeclareOperation( "AsSerreQuotientCategoryObject", [ IsCapCategory, IsCapCategoryObject ] ); #! @Description #! Given a Serre quotient category <A>A/C</A> and a generalized morphism <A>phi</A> in #! the generalized morphism category <A>A/C</A> is modeled upon, #! this constructor returns the corresponding morphism in the Serre quotient category. #! @Arguments A/C, phi #! @Returns a morphism DeclareOperation( "SerreQuotientCategoryMorphism", [ IsCapCategory, IsGeneralizedMorphism ] ); #! @Description #! Given a Serre quotient category <A>A/C</A> and three morphisms $\iota: M' \rightarrow M$, #! $\phi: M' \rightarrow N'$ and $\pi: N \rightarrow N'$ this operation contructs a #! morphism in the Serre quotient category. #! @Arguments A/C, iota, phi, pi #! @Returns a morphism DeclareOperation( "SerreQuotientCategoryMorphism", [ IsCapCategory, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapCategoryMorphism ] ); #! @Description #! Given a Serre quotient category <A>A/C</A> and two morphisms of the form $\alpha: X \rightarrow M$ #! and $\beta: X \rightarrow N$ or $\alpha: M \rightarrow X$ and $\beta: N \rightarrow X$, #! this operation constructs the corresponding morphism in the Serre quotient category. #! This operation is only implemented if <A>A/C</A> is #! modeled upon a span generalized morphism category in the first option or upon a cospan #! category in the second. #! @Arguments A/C, alpha, beta #! @Returns a morphism DeclareOperation( "SerreQuotientCategoryMorphism", [ IsCapCategory, IsCapCategoryMorphism, IsCapCategoryMorphism ] ); #! @Description #! Given a Serre quotient category <A>A/C</A> and two morphisms $\alpha: M \rightarrow X$ #! and $\beta: X \rightarrow N$ #! this operation constructs the corresponding morphism in the Serre quotient category. #! @Arguments A/C, alpha, beta #! @Returns a morphism DeclareOperation( "SerreQuotientCategoryMorphismWithSourceAid", [ IsCapCategory, IsCapCategoryMorphism, IsCapCategoryMorphism ] ); #! @Description #! Given a Serre quotient category <A>A/C</A> and two morphisms $\alpha: X \rightarrow M$ #! and $\beta: X \rightarrow N$ #! this operation constructs the corresponding morphism in the Serre quotient category. #! @Arguments A/C, alpha, beta #! @Returns a morphism DeclareOperation( "SerreQuotientCategoryMorphismWithRangeAid", [ IsCapCategory, IsCapCategoryMorphism, IsCapCategoryMorphism ] ); #! @Description #! Given a Serre quotient category <A>A/C</A> and a morphism <A>phi</A> in <A>A</A>, #! this constructor returns the corresponding morphism in the Serre quotient category. #! @Arguments A/C, phi #! @Returns a morphism DeclareOperation( "AsSerreQuotientCategoryMorphism", [ IsCapCategory, IsCapCategoryMorphism ] ); #! @Description #! When a Serre quotient category is created, a membership function for #! the subcategory is given. This attribute stores and returns this function #! @Arguments C #! @Returns a function DeclareAttribute( "SubcategoryMembershipTestFunctionForSerreQuotient", IsCapCategory ); #! @Description #! For a Serre quotient category <A>A/C</A> this attribute returns the category <A>A</A>. #! @Arguments A/C #! @Returns a category DeclareAttribute( "UnderlyingHonestCategory", IsCapCategory ); ## DeclareAttribute( "SpecializedObjectFilterForSerreQuotients", IsCapCategory ); ## DeclareAttribute( "SpecializedMorphismFilterForSerreQuotients", IsCapCategory ); #! @Description #! For a Serre quotient category <A>A/C</A> this attribute returns generalized morphism category the quotient is modelled upon. #! @Arguments A/C #! @Returns a category DeclareAttribute( "UnderlyingGeneralizedMorphismCategory", IsCapCategory ); #! @Description #! For an object <A>M</A> in the Serre quotient category A/C this attribute returns the #! corresponding object in the generalized morphism category the quotient is modelled upon. #! @Arguments M #! @Returns an object DeclareAttribute( "UnderlyingGeneralizedObject", IsSerreQuotientCategoryObject ); #! @Description #! For an object <A>M</A> in the Serre quotient category A/C this attribute returns the #! corresponding object in <A>A</A>. #! @Arguments M #! @Returns an object DeclareAttribute( "UnderlyingHonestObject", IsSerreQuotientCategoryObject ); #! @Description #! For a morphism <A>phi</A> in the Serre quotient category A/C this attribute returns the #! corresponding generalized morphism in the generalized morphism category the quotient is modelled upon. #! @Arguments phi #! @Returns a morphism DeclareAttribute( "UnderlyingGeneralizedMorphism", IsSerreQuotientCategoryMorphism ); #! @Description #! Given a Serre quotient category <A>A/C</A>, this operation returns the canonical projection functor #! $ A \rightarrow A/C $. #! @Arguments A/C #! @Returns a functor DeclareAttribute( "CanonicalProjection", IsCapCategory ); DeclareOperation( "LiftCovariantEndoFunctorToSerreQuotientCategory", [ IsCapCategory, IsCapFunctor ] ); DeclareOperation( "LiftNaturalIsoFromIdToSomeToSerreQuotientCategory", [ IsCapCategory, IsCapNaturalTransformation ] );