1 Generalized Morphism Category Let \mathbf{A} be an abelian category. We denote its generalized morphism category by \mathbf{G(A)}. 1.1 GAP Categories 1.1-1 IsGeneralizedMorphismCategoryObject IsGeneralizedMorphismCategoryObject( object )  filter Returns: true or false The GAP category of objects in the generalized morphism category. 1.1-2 IsGeneralizedMorphism IsGeneralizedMorphism( object )  filter Returns: true or false The GAP category of morphisms in the generalized morphism category. 1.2 Attributes 1.2-1 UnderlyingHonestObject UnderlyingHonestObject( a )  attribute Returns: an object in \mathbf{A} The argument is an object a in the generalized morphism category. The output is its underlying honest object 1.2-2 DomainOfGeneralizedMorphism DomainOfGeneralizedMorphism( alpha )  attribute Returns: a morphism in \mathrm{Hom}_{\mathbf{A}}( d, a ) The argument is a generalized morphism \alpha: a \rightarrow b. The output is its domain d \hookrightarrow a \in \mathbf{A}. 1.2-3 Codomain Codomain( alpha )  attribute Returns: a morphism in \mathrm{Hom}_{\mathbf{A}}( b, c ) The argument is a generalized morphism \alpha: a \rightarrow b. The output is its codomain b \twoheadrightarrow c \in \mathbf{A}. 1.2-4 AssociatedMorphism AssociatedMorphism( alpha )  attribute Returns: a morphism in \mathrm{Hom}_{\mathbf{A}}( d, c ) The argument is a generalized morphism \alpha: a \rightarrow b. The output is its associated morphism d \rightarrow c \in \mathbf{A}. 1.2-5 DomainAssociatedMorphismCodomainTriple DomainAssociatedMorphismCodomainTriple( alpha )  attribute Returns: a triple of morphisms in \mathbf{A} The argument is a generalized morphism \alpha: a \rightarrow b. The output is a triple ( d \hookrightarrow a, d \rightarrow c, b \twoheadrightarrow c ) consisting of its domain, associated morphism, and codomain. 1.2-6 HonestRepresentative HonestRepresentative( alpha )  attribute Returns: a morphism in \mathrm{Hom}_{\mathbf{A}}( a, b ) The argument is a generalized morphism \alpha: a \rightarrow b. The output is the honest representative in \mathbf{A} of \alpha, if it exists, otherwise an error is thrown. 1.2-7 GeneralizedInverse GeneralizedInverse( alpha )  operation Returns: a morphism in \mathrm{Hom}_{\mathbf{G(A)}}(b,a) The argument is a morphism \alpha: a \rightarrow b \in \mathbf{A}. The output is its generalized inverse b \rightarrow a. 1.2-8 IdempotentDefinedBySubobject IdempotentDefinedBySubobject( alpha )  operation Returns: a morphism in \mathrm{Hom}_{\mathbf{G(A)}}(b,b) The argument is a subobject \alpha: a \hookrightarrow b \in \mathbf{A}. The output is the idempotent b \rightarrow b \in \mathbf{G(A)} defined by \alpha. 1.2-9 IdempotentDefinedByFactorobject IdempotentDefinedByFactorobject( alpha )  operation Returns: a morphism in \mathrm{Hom}_{\mathbf{G(A)}}(b,b) The argument is a factorobject \alpha: b \twoheadrightarrow a \in \mathbf{A}. The output is the idempotent b \rightarrow b \in \mathbf{G(A)} defined by \alpha. 1.2-10 UnderlyingHonestCategory UnderlyingHonestCategory( C )  attribute Returns: a category The argument is a generalized morphism category C = \mathbf{G(A)}. The output is \mathbf{A}. 1.3 Operations 1.3-1 GeneralizedMorphismFromFactorToSubobject GeneralizedMorphismFromFactorToSubobject( beta, alpha )  operation Returns: a morphism in \mathrm{Hom}_{\mathbf{G(A)}}(c,a) The arguments are a a factorobject \beta: b \twoheadrightarrow c, and a subobject \alpha: a \hookrightarrow b. The output is the generalized morphism from the factorobject to the subobject. 1.3-2 CommonRestriction CommonRestriction( L )  operation Returns: a list of generalized morphisms The argument is a list L of generalized morphisms by three arrows having the same source. The output is a list of generalized morphisms by three arrows which is the comman restriction of L. 1.3-3 ConcatenationProduct ConcatenationProduct( L )  operation Returns: a generalized moprhism The argument is a list L = ( \alpha_1, \dots, \alpha_n ) of generalized morphisms (with same data structures). The output is their concatenation product, i.e., a generalized morphism \alpha with \mathrm{UnderlyingHonestObject}( \mathrm{Source}( \alpha ) ) = \bigoplus_{i=1}^n \mathrm{UnderlyingHonestObject}( \mathrm{Source}( \alpha_i ) ), and \mathrm{UnderlyingHonestObject}( \mathrm{Range}( \alpha ) ) = \bigoplus_{i=1}^n \mathrm{UnderlyingHonestObject}( \mathrm{Range}( \alpha_i ) ), and with morphisms in the representation of \alpha given as the direct sums of the corresponding morphisms of the \alpha_i. 1.4 Properties 1.4-1 IsHonest IsHonest( alpha )  property Returns: a boolean The argument is a generalized morphism \alpha. The output is true if \alpha admits an honest representative, otherwise false. 1.4-2 HasFullDomain HasFullDomain( alpha )  property Returns: a boolean The argument is a generalized morphism \alpha. The output is true if the domain of \alpha is an isomorphism, otherwise false. 1.4-3 HasFullCodomain HasFullCodomain( alpha )  property Returns: a boolean The argument is a generalized morphism \alpha. The output is true if the codomain of \alpha is an isomorphism, otherwise false. 1.4-4 IsSingleValued IsSingleValued( alpha )  property Returns: a boolean The argument is a generalized morphism \alpha. The output is true if the codomain of \alpha is an isomorphism, otherwise false. 1.4-5 IsTotal IsTotal( alpha )  property Returns: a boolean The argument is a generalized morphism \alpha. The output is true if the domain of \alpha is an isomorphism, otherwise false. 1.5 Convenience methods This section contains operations which, depending on the current generalized morphism standard of the system and the category, might point to other Operations. Please use them only as convenience and never in serious code. 1.5-1 GeneralizedMorphismCategory GeneralizedMorphismCategory( C )  operation Returns: a category Creates a new category of generalized morphisms. Might point to GeneralizedMorphismCategoryByThreeArrows, GeneralizedMorphismCategoryByCospans, or GeneralizedMorphismCategoryBySpans 1.5-2 GeneralizedMorphismObject GeneralizedMorphismObject( A )  operation Returns: an object in the generalized morphism category Creates an object in the current generalized morphism category, depending on the standard 1.5-3 AsGeneralizedMorphism AsGeneralizedMorphism( phi )  operation Returns: a generalized morphism Returns the corresponding morphism to phi in the current generalized morphism category. 1.5-4 GeneralizedMorphism GeneralizedMorphism( phi, psi )  operation Returns: a generalized morphism Returns the corresponding morphism to phi and psi in the current generalized morphism category. 1.5-5 GeneralizedMorphism GeneralizedMorphism( iota, phi, pi )  operation Returns: a generalized morphism Returns the corresponding morphism to iota, phi and psi in the current generalized morphism category. 1.5-6 GeneralizedMorphismWithRangeAid GeneralizedMorphismWithRangeAid( arg1, arg2 )  operation Returns a generalized morphism with range aid by three arrows or by span, or a generalized morphism by cospan, depending on the standard. 1.5-7 GeneralizedMorphismWithSourceAid GeneralizedMorphismWithSourceAid( arg1, arg2 )  operation Returns a generalized morphism with source aid by three arrows or by cospan, or a generalized morphism by span, depending on the standard.