Goto Chapter: Top 1 2 3 4 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

2 Lifting and Colifting systems
 2.1 Systems of lifting objects
 2.2 Examples for systems of lifting objects
 2.3 Systems of colifting objects
 2.4 Examples for systems of colifting objects

2 Lifting and Colifting systems

2.1 Systems of lifting objects

Let \CC be an additive category. A system of lifting objects in \CC consists of the following data:

2.1-1 IsLiftingObject
‣ IsLiftingObject( A )( property )

Returns: true or false

The argument is an object A. The output is whether or not A belongs to \LL.

2.1-2 LiftingObject
‣ LiftingObject( A )( attribute )

Returns: an object in \LL

The argument is an object A. The output is an object L_A in \LL.

2.1-3 MorphismFromLiftingObject
‣ MorphismFromLiftingObject( A )( attribute )

Returns: a morphism L_A \to A

The argument is an object A. The output is the distinguished morphism \ell_A:L_A \to A where L_A=\mathrm{LiftingObject}(A).

2.1-4 MorphismFromLiftingObjectWithGivenLiftingObject
‣ MorphismFromLiftingObjectWithGivenLiftingObject( A, L_A )( operation )

Returns: a morphism L_A \to A

The arguments are two objects A and L_A=\mathrm{LiftingObject}(A). The output is the distinguished morphism \ell_A:L_A \to A.

2.1-5 SectionOfMorphismFromLiftingObjectWithGivenLiftingObject
‣ SectionOfMorphismFromLiftingObjectWithGivenLiftingObject( A, L_A )( operation )

Returns: a morphism A \to L_A

The argument is a lifting object A in \LL and L_A=\mathrm{LiftingObject}(A). The output is a section morphism s_A:A \to L_A of \ell_A = \mathrm{MorphismFromLiftingObjectWithGivenLiftingObject}(A,L_A).

2.1-6 SectionOfMorphismFromLiftingObject
‣ SectionOfMorphismFromLiftingObject( A )( attribute )

Returns: a morphism A \to L_A

The argument is a lifting object A in \LL. The output is a section morphism s_A:A \to L_A of \ell_A = \mathrm{MorphismFromLiftingObject}(A).

2.1-7 LiftingMorphismWithGivenLiftingObjects
‣ LiftingMorphismWithGivenLiftingObjects( L_A, alpha, L_B )( operation )

Returns: a morphism L_A \to L_B

The arguments are an object L_A=\mathrm{LiftingObject}(A), a morphism \alpha:A \to B and an object L_B=\mathrm{LiftingObject}(B). The output is a morphism L_{\alpha}:L_A \to L_B with \comp{L_\alpha}{\ell_B} \sim \comp{\ell_A}{\alpha} where \ell_A=\mathrm{MorphismFromLiftingObject}(A) and \ell_B=\mathrm{MorphismFromLiftingObject}(B).

2.1-8 LiftingMorphism
‣ LiftingMorphism( alpha )( attribute )

Returns: a morphism L_A \to L_B

The argument is a morphism \alpha:A \to B. The output is a morphism L_{\alpha}:L_A \to L_B with \comp{L_\alpha}{\ell_B} \sim \comp{\ell_A}{\alpha} where L_A=\mathrm{LiftingObject}(A), L_B=\mathrm{LiftingObject}(B), \ell_A=\mathrm{MorphismFromLiftingObject}(A) and \ell_B=\mathrm{MorphismFromLiftingObject}(B).

2.1-9 IsLiftableAlongMorphismFromLiftingObject
‣ IsLiftableAlongMorphismFromLiftingObject( alpha )( property )

Returns: true or false

The argument is a morphism \alpha:A \to B. The output is whether or not \alpha lifts along \ell_B: L_B \to B where \ell_B=\mathrm{MorphismFromLiftingObject}(B).

2.1-10 WitnessForBeingLiftableAlongMorphismFromLiftingObject
‣ WitnessForBeingLiftableAlongMorphismFromLiftingObject( alpha )( attribute )

Returns: a morphism \lambda:A \to L_B

The argument is a morphism \alpha:A \to B which lifts along \ell_B:L_B \to B, where \ell_B=\mathrm{MorphismFromLiftingObject}(B). The output is a lift morphism \lambda:A \to L_B of \alpha along \ell_B, i.e., \comp{\lambda}{\ell_B} \sim \alpha.

2.2 Examples for systems of lifting objects

Let (\CC,\EE) is an exact category with enough \EE-projective objects. For any object A, there exists a deflation p_A:P_A \to A from some \EE-projective object P_A. We define \LL by the class of all \EE-projective objects in \CC. For an object A in \CC, we define the the distinguished object L_A by P_A and the distinguished morphism \ell_A:L_A\to A by p_A:P_A \to A. If A happens to be an \EE-projective object, then \ell_A is a split-epimorphism and its section morphism s_A:A \to L_A is given by the \EE-projective lift of \id_A along the deflation \ell_A. For a morphism \alpha: A \to B, we define L_\alpha:L_A \to L_B by the \EE-projective lift of \comp{\ell_A}{\alpha} along the deflation \ell_B.

Every abelian category \CC is exact with respect to the class \EE of all short exact sequences in \CC. The fact that in abelian categories every monomorphism is a kernel of its cokernel and every epimorphism is a cokernel of its kernel implies that a morphism in this category is an inflation if and only if it is a monomorphism; and is a deflation if and only if it is an epimorphism. It also implies that an object in \CC is \EE-injective if and only if it is injective in the usual sense, and is \EE-projective if and only if it is projective in the usual sense.

gap> alpha := mu;
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> A := Source( alpha );
<An object in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> B := Range( alpha );
<An object in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> ell_A := MorphismFromLiftingObject( A );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> ell_B := MorphismFromLiftingObject( B );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> L_alpha := LiftingMorphism( alpha );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> IsCongruentForMorphisms(
>       PreCompose( L_alpha, ell_B ), PreCompose( ell_A, alpha ) 
>     );
true
gap> IsLiftableAlongMorphismFromLiftingObject( alpha );
true
gap> lambda := WitnessForBeingLiftableAlongMorphismFromLiftingObject( alpha );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> IsCongruentForMorphisms( PreCompose( lambda, ell_B ), alpha );
true

2.3 Systems of colifting objects

Let \CC be an additive category. A system of colifting objects in \CC consists of the following data:

2.3-1 IsColiftingObject
‣ IsColiftingObject( A )( property )

Returns: true or false

The argument is an object A. The output is whether or not A belongs to \QQ.

2.3-2 ColiftingObject
‣ ColiftingObject( A )( attribute )

Returns: an object in \QQ

The argument is an object A. The output is an object Q_A in \QQ.

2.3-3 MorphismToColiftingObject
‣ MorphismToColiftingObject( A )( attribute )

Returns: a morphism A \to Q_A

The argument is an object A. The output is the distinguished morphism q_A:A \to Q_A where Q_A=\mathrm{ColiftingObject}(A).

2.3-4 MorphismToColiftingObjectWithGivenColiftingObject
‣ MorphismToColiftingObjectWithGivenColiftingObject( A, Q_A )( operation )

Returns: a morphism A \to Q_A

The arguments are two objects A and Q_A=\mathrm{ColiftingObject}(A). The output is the distinguished morphism q_A:A \to Q_A.

2.3-5 RetractionOfMorphismToColiftingObjectWithGivenColiftingObject
‣ RetractionOfMorphismToColiftingObjectWithGivenColiftingObject( A, Q_A )( operation )

Returns: a morphism Q_A \to A

The argument is a colifting object A in \QQ and Q_A=\mathrm{ColiftingObject}(A). The output is a retraction morphism r_A:Q_A \to A of q_A = \mathrm{MorphismToColiftingObjectWithGivenColiftingObject}(A,Q_A).

2.3-6 RetractionOfMorphismToColiftingObject
‣ RetractionOfMorphismToColiftingObject( A )( attribute )

Returns: a morphism Q_A \to A

The argument is a colifting object A in \QQ. The output is a retraction morphism r_A:Q_A \to A of q_A = \mathrm{MorphismToColiftingObject}(A).

2.3-7 ColiftingMorphismWithGivenColiftingObjects
‣ ColiftingMorphismWithGivenColiftingObjects( Q_A, alpha, Q_B )( operation )

Returns: a morphism Q_A \to Q_B

The arguments are an object Q_A=\mathrm{ColiftingObject}(A), a morphism \alpha:A \to B and an object Q_B=\mathrm{ColiftingObject}(B). The output is a morphism Q_{\alpha}:Q_A \to Q_B with \comp{q_A}{Q_\alpha} \sim \comp{\alpha}{q_B} where q_A=\mathrm{MorphismToColiftingObject}(A) and q_B=\mathrm{MorphismToColiftingObject}(B).

2.3-8 ColiftingMorphism
‣ ColiftingMorphism( alpha )( attribute )

Returns: a morphism Q_A \to Q_B

The argument is a morphism \alpha : A \to B. The output is a morphism Q_{\alpha}:Q_A \to Q_B with \comp{q_A}{Q_\alpha} \sim \comp{\alpha}{q_B} where Q_A=\mathrm{ColiftingObject}(A), Q_B=\mathrm{ColiftingObject}(B), q_A=\mathrm{MorphismToColiftingObject}(A) and q_B=\mathrm{MorphismToColiftingObject}(B).

2.3-9 IsColiftableAlongMorphismToColiftingObject
‣ IsColiftableAlongMorphismToColiftingObject( alpha )( property )

Returns: true or false

The argument is a morphism \alpha:A \to B. The output is whether or not \alpha colifts along q_A: A \to Q_A where q_A=\mathrm{MorphismToColiftingObject}(A).

2.3-10 WitnessForBeingColiftableAlongMorphismToColiftingObject
‣ WitnessForBeingColiftableAlongMorphismToColiftingObject( alpha )( attribute )

Returns: a morphism \lambda:A \to L_B

The argument is a morphism \alpha:A \to B which colifts along q_A:A \to Q_A, where q_A=\mathrm{MorphismToColiftingObject}(A). The output is a colift morphism \lambda:Q_A \to B of \alpha along q_A, i.e., \comp{q_A}{\lambda} \sim \alpha.

2.4 Examples for systems of colifting objects

2.4-1 The class of E-injective objects in exact categories with enough E-injectives

Let (\CC,\EE) is an exact category with enough \EE-injective objects. That is, for any object A, there exists an inflation \iota_A:A \to I_A into some \EE-injective object I_A. We define \QQ by the class of all \EE-injective objects in \CC. For an object A in \CC, we define the the distinguished object Q_A by I_A and the distinguished morphism q_A:A\to Q_A by \iota_A:A \to I_A. If A happens to be an \EE-injective object, then q_A is a split-monomorphism and its retraction morphism r_A:Q_A \to A is given by the \EE-injective colift of \id_A along the inflation q_A. For a morphism \alpha: A \to B, we define Q_\alpha:Q_A\to Q_B by the \EE-injective colift of \comp{\alpha}{q_B} along the inflation q_A.

For instance, the class of all injective objects in an abelian category with enough injective objects defines a system of colifting objects.

gap> alpha := mu;
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> A := Source( alpha );
<An object in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> B := Range( alpha );
<An object in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> q_A := MorphismToColiftingObject( A );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> q_B := MorphismToColiftingObject( B );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> Q_alpha := ColiftingMorphism( alpha );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> IsCongruentForMorphisms(
>       PreCompose( q_A, Q_alpha ), PreCompose( alpha, q_B )
>     );
true
gap> IsColiftableAlongMorphismToColiftingObject( alpha );
true
gap> lambda := WitnessForBeingColiftableAlongMorphismToColiftingObject( alpha );
<A morphism in Category of f.p. graded left modules over Q{e0,e1}
(with weights [ -1, -1 ])>
gap> IsCongruentForMorphisms( PreCompose( q_A, lambda ), alpha );
true

2.4-2 The class of all objects in arrows categories represented by split-epimorphisms

Let \CC be an additive category and \mathrm{Arr}(\CC) its category of arrows, i.e., its objects are morphisms in \CC and its morphisms are commutative squars in \CC. The class \QQ of all objects in \mathrm{Arr}(\CC) that are represented by split-epimorphisms defines a system of colifting objects in \mathrm{Arr}(\CC). For an object A=(\alpha:A_1 \to A_2) in \mathrm{Arr}(\CC), we define Q_A by and q_A: A \to Q_A by the commutative square whose legs are and \id_{A_2}:A_2 \to A_2.

If A belong to \QQ, then \alpha:A_1 \to A_2 is a split-epimorphism and it has a section morphism is \gamma: A_2 \to A_1. In this case q_A is a split-monomorphism and its retraction morphism is given by the commutative square Let B=(\beta:B_1 \to B_2) be an object in \mathrm{Arr}(\CC) and \varphi: A \to B be a morphism defined by a commutative square We define Q_{\varphi}: Q_A \to Q_B by the commutative square

The arrows category \mathrm{Arr}(\CC) is isomorphic to the category of functors \mathrm{Hom}(1\to 2,\CC), where 1 \to 2 is the interval category which is the \mathbb{Z}-linear closure of the quiver consisting of two vertices v_1,v_2 and an arrow m:v_1\to v_2.

The following operation takes and additive category \CC and constructs its arrows category \mathrm{Arr}(\CC) and equipps it with the above system of colifting objects. It requires the GAP package

2.4-3 Code example 1

In the next chapter we will see that the associated stable category is equivalent to the Freyd category of \CC.

gap> ReadPackage( "StableCategories", "examples/doc/CategoryOfArrows-0.g" );
true
gap> MAKE_READ_WRITE_GLOBAL( "REREADING" );
gap> REREADING := true;;
gap> SetInfoLevel( InfoWarning, 0 );
gap> vertices := [ "A_1", "A_2", "B_1", "B_2" ];;
gap> sources := [ 1, 1, 1, 1, 1, 2, 2, 2, 2, 3 ];;
gap> targets := [ 2, 2, 3, 3, 3, 1, 3, 4, 4, 4 ];;
gap> arrows :=  [ "u", "alpha",   "tau", "phi_1", "psi_1",
>              "v", "w", "phi_2", "psi_2", "beta" ];;
gap> quiver := RightQuiver( "quiver", vertices, arrows, sources, targets );
quiver(A_1,A_2,B_1,B_2)[u:A_1->A_2,alpha:A_1->A_2,tau:A_1->B_1,phi_1:A_1->B_1,
psi_1:A_1->B_1,v:A_2->A_1,w:A_2->B_1,phi_2:A_2->B_2,psi_2:A_2->B_2,beta:B_1->B_2]
gap> QQ := HomalgFieldOfRationals( );
Q
gap> oid := Algebroid( QQ, quiver : range_of_HomStructure := MatrixCategory( QQ ) );;
gap> AssignSetOfObjects( oid );
gap> AssignSetOfGeneratingMorphisms( oid );
gap> rels := [
>               PreCompose( v, alpha ),
>               PreCompose( v, tau ),
>               PreCompose( v, phi_1 ),
>               PreCompose( v, psi_1 ),
>               PreCompose( v, u ) - IdentityMorphism( A_2 ),
>               PreCompose( alpha, phi_2 ) - PreCompose( phi_1, beta ),
>               PreCompose( alpha, phi_2 ) - PreCompose( tau, beta ),
>               PreCompose( alpha, psi_2 ) - PreCompose( psi_1, beta ),
>               PreCompose( w, beta ) - psi_2
>            ];
[ (A_2)-[1*(v*alpha)]->(A_2), (A_2)-[1*(v*tau)]->(B_1),
  (A_2)-[1*(v*phi_1)]->(B_1), (A_2)-[1*(v*psi_1)]->(B_1), 
  (A_2)-[1*(v*u) - 1*(A_2)]->(A_2),
  (A_1)-[-1*(phi_1*beta) + 1*(alpha*phi_2)]->(B_2), 
  (A_1)-[-1*(tau*beta) + 1*(alpha*phi_2)]->(B_2),
  (A_1)-[-1*(psi_1*beta) + 1*(alpha*psi_2)]->(B_2), 
  (A_2)-[1*(w*beta) - 1*(psi_2)]->(B_2) ]
gap> oid := oid / rels;;
gap> oid!.Name := "Algebroid( V=4, E=10, Rel=7 )";;
gap> AssignSetOfObjects( oid );
gap> AssignSetOfGeneratingMorphisms( oid );
gap> Aoid := AdditiveClosure( oid );
Additive closure( Algebroid( V=4, E=10, Rel=7 ) )
gap> AAoid := CategoryOfArrows( Aoid );
FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( Algebroid( V=4\
, E=10, Rel=7 ) ) )
gap> 1_m_2 := Source( AAoid );
Algebroid( q(2)[m:1->2] )
gap> Aoid = Range( AAoid );
true
gap> A := CategoryOfArrowsObject( AAoid, [ [ alpha ] ] / Aoid );
<An object in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( \
Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForObjects( A );
false
gap> B := CategoryOfArrowsObject( AAoid, [ [ beta ] ] / Aoid );
<An object in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( \
Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForObjects( B );
false
gap> phi := CategoryOfArrowsMorphism(
>             A,
>             [ [ phi_1 ] ] / Aoid,
>             [ [ phi_2 ] ] / Aoid,
>             B
>         );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> psi := CategoryOfArrowsMorphism(
>             A,
>             [ [ psi_1 ] ] / Aoid,
>             [ [ psi_2 ] ] / Aoid,
>             B
>         );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsWellDefined( phi );
true
gap> IsWellDefined( psi );
true
gap> Q_A := ColiftingObject( A );
<An object in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( \
Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> Q_B := ColiftingObject( B );
<An object in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( \
Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> q_A := MorphismToColiftingObjectWithGivenColiftingObject( A, Q_A );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> q_B := MorphismToColiftingObjectWithGivenColiftingObject( B, Q_B );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> Q_phi := ColiftingMorphismWithGivenColiftingObjects( Q_A, phi, Q_B );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsCongruentForMorphisms( PreCompose( q_A, Q_phi ), PreCompose( phi, q_B ) );
true
gap> Q_psi := ColiftingMorphismWithGivenColiftingObjects( Q_A, psi, Q_B );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsCongruentForMorphisms( PreCompose( q_A, Q_psi ), PreCompose( psi, q_B ) );
true
gap> IsSplitEpimorphism( [ [ u ] ] / Aoid );
true
gap> U := CategoryOfArrowsObject( AAoid, [ [ u ] ] / Aoid );
<An object in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( \
Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsZeroForObjects( U );
false
gap> Q_U := ColiftingObject( U );
<An object in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure( \
Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> q_U := MorphismToColiftingObjectWithGivenColiftingObject( U, Q_U );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsSplitMonomorphism( q_U );
true
gap> r_U := RetractionOfMorphismToColiftingObject( U );
<A morphism in FunctorCategory( Algebroid( q(2)[m:1->2] ), Additive closure(\
 Algebroid( V=4, E=10, Rel=7 ) ) )>
gap> IsWellDefined( r_U );
true
gap> IsCongruentForMorphisms( PreCompose( q_U, r_U ), IdentityMorphism( U ) );
true

2.4-4 The class of all contractible objects in complexes categories

Let \CC be an additive category and \Ch{\CC} be its cochain complexes category. An object A in \Ch{\CC} is called contractible if the identity morphism \id_{A} is null-homotopic. That is, there exists a family of morphisms (\lambda^i:A^i\to A^{i-1})_{i\in\mathbb{Z}} such that \comp{\partial_{A}^i}{\lambda^{i+1}}+\comp{\lambda^i}{\partial_{A}^{i-1}}\sim \id_{A^i} for all i\in\mathbb{Z}. An easy verification shows that \comp{\alpha}{q_B}\sim\comp{q_A}{Q_\alpha}.

2.4-5 Code example 2

The following example is an illustration for the system of colifting objects on \Ch{\CC} where \CC be additive closure category of the \mathbb{Q}-algebroid \Lambda_{\mathrm{oid}} defined by the following quiver

gap> LoadPackage( "StableCategories" );;
gap> LoadPackage( "FunctorCategories" );;
gap> LoadPackage( "FreydCategories" );;
gap> vertices := [ "A_0", "A_1", "A_2", "B_0", "B_1", "B_2" ];;
gap> sources := [ 1, 2, 4, 5, 2, 3, 1, 2, 3, 1, 2, 3 ];;
gap> targets := [ 2, 3, 5, 6, 4, 5, 4, 5, 6, 4, 5, 6 ];;
gap> arrows :=  [
>               "a_0", "a_1", "b_0", "b_1", "h_1", "h_2",
>               "alpha_0", "alpha_1", "alpha_2",
>               "beta_0", "beta_1", "beta_2"
>             ];;
gap> quiver := RightQuiver( "quiver", vertices, arrows, sources, targets );
quiver(A_0,A_1,A_2,B_0,B_1,B_2)[a_0:A_0->A_1,a_1:A_1->A_2,b_0:B_0->B_1,
b_1:B_1->B_2,h_1:A_1->B_0,h_2:A_2->B_1,alpha_0:A_0->B_0,alpha_1:A_1->B_1,
alpha_2:A_2->B_2,beta_0:A_0->B_0,beta_1:A_1->B_1,beta_2:A_2->B_2]
gap> QQ := HomalgFieldOfRationals( );
Q
gap> oid := Algebroid( QQ, quiver );;
gap> AssignSetOfObjects( oid );
gap> AssignSetOfGeneratingMorphisms( oid );
gap> rels := [
>            PreCompose( a_0, a_1 ), PreCompose( b_0, b_1 ),
>            PreCompose( a_0, alpha_1 ) - PreCompose( alpha_0, b_0),
>            PreCompose( a_1, alpha_2 ) - PreCompose( alpha_1, b_1 ),
>            PreCompose( a_0, beta_1 ) - PreCompose( beta_0, b_0 ),
>            PreCompose( a_1, beta_2 ) - PreCompose( beta_1, b_1 ),
>            alpha_0 - beta_0 - PreCompose( a_0, h_1 ),
>            alpha_1 - beta_1 - PreCompose( a_1, h_2 ) - PreCompose( h_1, b_0 ), 
>            alpha_2 - beta_2 - PreCompose( h_2, b_1 )
>         ];
[ (A_0)-[1*(a_0*a_1)]->(A_2), (B_0)-[1*(b_0*b_1)]->(B_2), 
  (A_0)-[-1*(alpha_0*b_0) + 1*(a_0*alpha_1)]->(B_1), 
  (A_1)-[-1*(alpha_1*b_1) + 1*(a_1*alpha_2)]->(B_2),
  (A_0)-[-1*(beta_0*b_0) + 1*(a_0*beta_1)]->(B_1), 
  (A_1)-[-1*(beta_1*b_1) + 1*(a_1*beta_2)]->(B_2),
  (A_0)-[-1*(a_0*h_1) - 1*(beta_0) + 1*(alpha_0)]->(B_0), 
  (A_1)-[-1*(h_1*b_0) - 1*(a_1*h_2) - 1*(beta_1) + 1*(alpha_1)]->(B_1), 
  (A_2)-[-1*(h_2*b_1) - 1*(beta_2) + 1*(alpha_2)]->(B_2) ]
gap> oid := oid / rels;;
gap> oid!.Name := "Algebroid( V=6, E=12, Rel=9 )";;
gap> AssignSetOfObjects( oid );
gap> AssignSetOfGeneratingMorphisms( oid );
gap> Aoid := AdditiveClosure( oid );
Additive closure( Algebroid( V=6, E=12, Rel=9 ) )
gap> Ch_Aoid := CochainComplexCategory( Aoid );
Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 ) ) )
gap> A := CochainComplex( [ [[a_0]]/Aoid, [[a_1]]/Aoid ], 0 );
<An object in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> Q_A := ColiftingObject( A );
<An object in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound -1 and active upper bound 2>
gap> q_A := MorphismToColiftingObjectWithGivenColiftingObject( A, Q_A );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsColiftingObject( Q_A );
true
gap> Q_Q_A := ColiftingObject( Q_A );
<An object in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound -2 and active upper bound 2>
gap> q_Q_A := MorphismToColiftingObject( Q_A );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound -1 and active upper bound 2>
gap> r_Q_A := RetractionOfMorphismToColiftingObject( Q_A );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound -1 and active upper bound 2>
gap> IsCongruentForMorphisms(
>         PreCompose( q_Q_A, r_Q_A ), IdentityMorphism( Q_A )
>       );
true
gap> B := CochainComplex( [ [[b_0]]/Aoid, [[b_1]]/Aoid ], 0 );
<An object in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> Q_B := ColiftingObject( B );
<An object in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound -1 and active upper bound 2>
gap> q_B := MorphismToColiftingObjectWithGivenColiftingObject( B, Q_B );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> alpha := CochainMorphism(
>              A, B,
>              [ [[alpha_0]]/Aoid, [[alpha_1]]/Aoid, [[alpha_2]]/Aoid ],
>              0
>          );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsWellDefined( alpha );
true
gap> Q_alpha := ColiftingMorphismWithGivenColiftingObjects( Q_A, alpha, Q_B );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound -1 and active upper bound 2>
gap> IsCongruentForMorphisms(
>       PreCompose( alpha, q_B ), PreCompose( q_A, Q_alpha )
>     );
true
gap> beta :=  CochainMorphism(
>              A, B,
>              [ [[beta_0]]/Aoid, [[beta_1]]/Aoid, [[beta_2]]/Aoid ],
>              0
>          );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsWellDefined( beta );
true
gap> gamma := alpha - beta;
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsColiftableAlongMorphismToColiftingObject( gamma );
true
gap> w := WitnessForBeingColiftableAlongMorphismToColiftingObject( gamma );
<A morphism in Cochain complexes( Additive closure( Algebroid( V=6, E=12, Rel=9 )
 ) ) with active lower bound 0 and active upper bound 2>
gap> IsCongruentForMorphisms( PreCompose( q_A, w ), gamma );
true
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 Ind

generated by GAPDoc2HTML