products/Sources/formale Sprachen/GAP/pkg/cap/doc/chap17.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd " >
<html xmlns="http://www.w3.org/1999/xhtml " xml:lang="en" >
<head >
<title >GAP (CAP) - Chapter 17: Examples and Tests</title >
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript" ></script >
<script type="text/javascript" >overwriteStyle();</script >
</head >
<body class="chap17" onload="jscontent()" >
<div class="chlinktop" ><span class="chlink1" >Goto Chapter: </span ><a href="chap0.html" >Top</a> <a href="chap1.html" >1</a> <a href="chap2.html" >2</a> <a href="chap3.html" >3</a> <a href="chap4.html" >4</a> <a href="chap5.html" >5</a> <a href="chap6.html" >6</a> <a href="chap7.html" >7</a> <a href="chap8.html" >8</a> <a href="chap9.html" >9</a> <a href="chap10.html" >10</a> <a href="chap11.html" >11</a> <a href="chap12.html" >12</a> <a href="chap13.html" >13</a> <a href="chap14.html" >14</a> <a href="chap15.html" >15</a> <a href="chap16.html" >16</a> <a href="chap17.html" >17</a> <a href="chap18.html" >18</a> <a href="chapInd.html" >Ind</a> </div >
<div class="chlinkprevnexttop" > <a href="chap0.html" >[Top of Book]</a> <a href="chap0.html#contents" >[Contents]</a> <a href="chap16.html" >[Previous Chapter]</a> <a href="chap18.html" >[Next Chapter]</a> </div >
<p id="mathjaxlink" class="pcenter" ><a href="chap17_mj.html" >[MathJax on]</a></p>
<p><a id="X7967FE8E7BBDF485" name="X7967FE8E7BBDF485" ></a></p>
<div class="ChapSects" ><a href="chap17.html#X7967FE8E7BBDF485" >17 <span class="Heading" >Examples and Tests</span ></a>
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap17.html#X7CA5B46383A5CE09" >17.1 <span class="Heading" >Dummy implementations</span ></a>
</span >
<div class="ContSSBlock" >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap17.html#X82A623E78640E822" >17.1-1 <span class="Heading" >Dummy categories</span ></a>
</span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap17.html#X7B19E3AE7AB1B31B" >17.1-2 <span class="Heading" >Dummy rings</span ></a>
</span >
</div ></div >
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap17.html#X7BAE6D0285667B1F" >17.2 <span class="Heading" >Finite skeletal discrete categories</span ></a>
</span >
</div >
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap17.html#X78D1062D78BE08C1" >17.3 <span class="Heading" >Functors</span ></a>
</span >
</div >
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap17.html#X7B339750826300B4" >17.4 <span class="Heading" >HandlePrecompiledTowers</span ></a>
</span >
</div >
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap17.html#X7EA29B7D7BA60F42" >17.5 <span class="Heading" >Terminal category</span ></a>
</span >
</div >
</div >
<h3>17 <span class="Heading" >Examples and Tests</span ></h3>
<p><a id="X7CA5B46383A5CE09" name="X7CA5B46383A5CE09" ></a></p>
<h4>17.1 <span class="Heading" >Dummy implementations</span ></h4>
<p><a id="X82A623E78640E822" name="X82A623E78640E822" ></a></p>
<h5>17.1-1 <span class="Heading" >Dummy categories</span ></h5>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >LoadPackage( "CAP" , false );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >list_of_operations_to_install := [</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "ObjectConstructor" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "MorphismConstructor" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "ObjectDatum" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "MorphismDatum" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "IsCongruentForMorphisms" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "PreCompose" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "IdentityMorphism" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > "DirectSum" ,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" >];;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >dummy := DummyCategory( rec(</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > list_of_operations_to_install := list_of_operations_to_install,</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > properties := [ "IsAdditiveCategory" ],</span >
<span class="GAPprompt" >></span > <span class="GAPinput" >) );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >ForAll( list_of_operations_to_install, o -> CanCompute( dummy, o ) );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsAdditiveCategory( dummy );</span >
true
</pre ></div >
<p><a id="X7B19E3AE7AB1B31B" name="X7B19E3AE7AB1B31B" ></a></p>
<h5>17.1-2 <span class="Heading" >Dummy rings</span ></h5>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >LoadPackage( "CAP" , false );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DummyRing( );</span >
Dummy ring 1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DummyRing( );</span >
Dummy ring 2
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsRing( DummyRing( ) );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DummyCommutativeRing( );</span >
Dummy commutative ring 1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DummyCommutativeRing( );</span >
Dummy commutative ring 2
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsRing( DummyCommutativeRing( ) );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsCommutative( DummyCommutativeRing( ) );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DummyField( );</span >
Dummy field 1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DummyField( );</span >
Dummy field 2
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsRing( DummyField( ) );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsField( DummyField( ) );</span >
true
</pre ></div >
<p><a id="X7BAE6D0285667B1F" name="X7BAE6D0285667B1F" ></a></p>
<h4>17.2 <span class="Heading" >Finite skeletal discrete categories</span ></h4>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >LoadPackage( "CAP" , false );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >D := FiniteSkeletalDiscreteCategory( [ 1 .. 5 ] );</span >
FiniteSkeletalDiscreteCategory( [ 1 .. 5 ] )
<span class="GAPprompt" >gap></span > <span class="GAPinput" >one := ObjectConstructor( D, 1 );</span >
<An object in FiniteSkeletalDiscreteCategory( [ 1 .. 5 ] )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsWellDefinedForObjects( one );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >ObjectDatum( one ) = 1;</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( one );</span >
1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForObjects( one, D[1] );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >id_one := IdentityMorphism( D, one );</span >
<An identity morphism in FiniteSkeletalDiscreteCategory( [ 1 .. 5 ] )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsWellDefinedForMorphisms( id_one );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >MorphismDatum( id_one ) = fail;</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( id_one );</span >
1
|
| A morphism in FiniteSkeletalDiscreteCategory( [ 1 .. 5 ] )
v
1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForMorphisms( PreCompose( id_one, id_one ), id_one );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Length( SetOfObjectsOfCategory( D ) );</span >
5
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Length( SetOfMorphismsOfFiniteCategory( D ) );</span >
5
</pre ></div >
<p><a id="X78D1062D78BE08C1" name="X78D1062D78BE08C1" ></a></p>
<h4>17.3 <span class="Heading" >Functors</span ></h4>
<p>We create a binary functor <span class="Math" >F</span > with one covariant and one contravariant component in two ways. Here is the first way to model a binary functor:</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >ring := HomalgRingOfIntegers( );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >vec := LeftPresentations( ring );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F := CapFunctor( "CohomForVec" , [ vec, [ vec, true ] ], vec );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >obj_func := function( A, B ) return TensorProductOnObjects( A, DualOnObjects( B ) ); end;;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >mor_func := function( source , alpha, beta, range ) return TensorProductOnMorphismsWithGivenTensorProducts( source , alpha, DualOnMorphisms( beta ), range ); end;;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddObjectFunction( F, obj_func );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddMorphismFunction( F, mor_func );;</span >
</pre ></div >
<p>CAP regards <span class="Math" >F</span > as a binary functor on a technical level, as we can see by looking at its input signature:</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >InputSignature( F );</span >
[ [ Category of left presentations of Z, false ], [ Category of left presentations of Z, true ] ]
</pre ></div >
<p>We can see that <code class="code" >ApplyFunctor</code > works both on two arguments and on one argument (in the product category).</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >V1 := TensorUnit( vec );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >V3 := DirectSum( V1, V1, V1 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >pi1 := ProjectionInFactorOfDirectSum( [ V1, V1 ], 1 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >pi2 := ProjectionInFactorOfDirectSum( [ V3, V1 ], 1 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >value1 := ApplyFunctor( F, pi1, pi2 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >input := Product( pi1, Opposite( pi2 ) );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >value2 := ApplyFunctor( F, input );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsCongruentForMorphisms( value1, value2 );</span >
true
</pre ></div >
<p>Here is the second way to model a binary functor:</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F2 := CapFunctor( "CohomForVec2" , Product( vec, Opposite( vec ) ), vec );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddObjectFunction( F2, a -> obj_func( a[1], Opposite( a[2] ) ) );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddMorphismFunction( F2, function( source , datum, range ) return mor_func( source , datum[1], Opposite( datum[2] ), range ); end );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >value3 := ApplyFunctor( F2,input );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsCongruentForMorphisms( value1, value3 );</span >
true
</pre ></div >
<p>CAP regards <span class="Math" >F2</span > as a unary functor on a technical level, as we can see by looking at its input signature:</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >InputSignature( F2 );</span >
[ [ Product of: Category of left presentations of Z, Opposite( Category of left presentations of Z ), false ] ]
</pre ></div >
<p>Installation of the first functor as a GAP-operation. It will be installed both as a unary and binary version.</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >InstallFunctor( F, "F_installation" );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installation( pi1, pi2 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installation( input );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installationOnObjects( V1, V1 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installationOnObjects( Product( V1, Opposite( V1 ) ) );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installationOnMorphisms( pi1, pi2 );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installationOnMorphisms( input );;</span >
</pre ></div >
<p>Installation of the second functor as a GAP-operation. It will be installed only as a unary version.</p>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >InstallFunctor( F2, "F_installation2" );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installation2( input );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installation2OnObjects( Product( V1, Opposite( V1 ) ) );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >F_installation2OnMorphisms( input );;</span >
</pre ></div >
<p><a id="X7B339750826300B4" name="X7B339750826300B4" ></a></p>
<h4>17.4 <span class="Heading" >HandlePrecompiledTowers</span ></h4>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >LoadPackage( "CAP" , false );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >dummy1 := CreateCapCategory( );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >dummy2 := CreateCapCategory( );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >dummy3 := CreateCapCategory( );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >PrintAndReturn := function ( string )</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > Print( string, "\n" ); return string; end;;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >dummy1!.compiler_hints := rec( );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >dummy1!.compiler_hints.precompiled_towers := [</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > rec(</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > remaining_constructors_in_tower := [ "Constructor1" ],</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > precompiled_functions_adder := cat -></span >
<span class="GAPprompt" >></span > <span class="GAPinput" > PrintAndReturn( "Adding precompiled operations for Constructor1" ),</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > ),</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > rec(</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > remaining_constructors_in_tower := [ "Constructor1" , "Constructor2" ],</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > precompiled_functions_adder := cat -></span >
<span class="GAPprompt" >></span > <span class="GAPinput" > PrintAndReturn( "Adding precompiled operations for Constructor2" ),</span >
<span class="GAPprompt" >></span > <span class="GAPinput" > ),</span >
<span class="GAPprompt" >></span > <span class="GAPinput" >];;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >HandlePrecompiledTowers( dummy2, dummy1, "Constructor1" );</span >
Adding precompiled operations for Constructor1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >HandlePrecompiledTowers( dummy3, dummy2, "Constructor2" );</span >
Adding precompiled operations for Constructor2
</pre ></div >
<p><a id="X7EA29B7D7BA60F42" name="X7EA29B7D7BA60F42" ></a></p>
<h4>17.5 <span class="Heading" >Terminal category</span ></h4>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >LoadPackage( "CAP" , false );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >T := TerminalCategoryWithMultipleObjects( );</span >
TerminalCategoryWithMultipleObjects( )
<span class="GAPprompt" >gap></span > <span class="GAPinput" >i := InitialObject( T );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >t := TerminalObject( T );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >z := ZeroObject( T );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( i );</span >
InitialObject( )
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( t );</span >
TerminalObject( )
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( z );</span >
ZeroObject( )
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIdenticalObj( i, z );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIdenticalObj( t, z );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >id_z := IdentityMorphism( z );</span >
<A zero, identity morphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >fn_z := ZeroObjectFunctorial( T );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForMorphisms( id_z, fn_z );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsCongruentForMorphisms( id_z, fn_z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >a := "a" / T;</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( a );</span >
a
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsWellDefined( a );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >aa := ObjectConstructor( T, "a" );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( aa );</span >
a
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForObjects( a, aa );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIsomorphicForObjects( a, aa );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIsomorphism( SomeIsomorphismBetweenObjects( a, aa ) );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >b := "b" / T;</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( b );</span >
b
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForObjects( a, b );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIsomorphicForObjects( a, b );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >mor_ab := SomeIsomorphismBetweenObjects( a, b );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIsomorphism( mor_ab );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( mor_ab );</span >
a
|
| SomeIsomorphismBetweenObjects
v
b
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Hom_ab := MorphismsOfExternalHom( a, b );;</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Length( Hom_ab );</span >
1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Hom_ab[1];</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( Hom_ab[1] );</span >
a
|
| InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism
v
b
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Hom_ab[1] = mor_ab;</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >HomStructure( mor_ab );</span >
<A zero, identity morphism in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >m := MorphismConstructor( a, "m" , b );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( m );</span >
a
|
| m
v
b
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsWellDefined( m );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >n := MorphismConstructor( a, "n" , b );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( n );</span >
a
|
| n
v
b
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForMorphisms( m, n );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsCongruentForMorphisms( m, n );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >m = n;</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >hom_mn := HomStructure( m, n );</span >
<A zero, identity morphism in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >id := IdentityMorphism( a );</span >
<A zero, identity morphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( id );</span >
a
|
| IdentityMorphism( a )
v
a
<span class="GAPprompt" >gap></span > <span class="GAPinput" >m = id;</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >id = MorphismConstructor( a, "xyz" , a );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >zero := ZeroMorphism( a, a );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( zero );</span >
a
|
| ZeroMorphism( a, a )
v
a
<span class="GAPprompt" >gap></span > <span class="GAPinput" >id = zero;</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsLiftable( m, n );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >lift := Lift( m, n );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( lift );</span >
a
|
| Lift( m, n )
v
a
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsColiftable( m, n );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >colift := Colift( m, n );</span >
<A zero, isomorphism in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( colift );</span >
b
|
| Colift( m, n )
v
b
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DirectProduct( T, [ ] );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Equalizer( T, z, [ ] );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Coproduct( T, [ ] );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Coequalizer( T, z, [ ] );</span >
<A zero object in TerminalCategoryWithMultipleObjects( )>
</pre ></div >
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >LoadPackage( "CAP" , false );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >T := TerminalCategoryWithSingleObject( );</span >
TerminalCategoryWithSingleObject( )
<span class="GAPprompt" >gap></span > <span class="GAPinput" >i := InitialObject( T );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >t := TerminalObject( T );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >z := ZeroObject( T );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( i );</span >
A zero object in TerminalCategoryWithSingleObject( ).
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( t );</span >
A zero object in TerminalCategoryWithSingleObject( ).
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Display( z );</span >
A zero object in TerminalCategoryWithSingleObject( ).
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIdenticalObj( i, z );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsIdenticalObj( t, z );</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsWellDefined( z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Length( SetOfObjectsOfCategory( T ) );</span >
1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >id_z := IdentityMorphism( z );</span >
<A zero, identity morphism in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >fn_z := ZeroObjectFunctorial( T );</span >
<A zero, identity morphism in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsWellDefined( fn_z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsEqualForMorphisms( id_z, fn_z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsCongruentForMorphisms( id_z, fn_z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Length( SetOfMorphismsOfFiniteCategory( T ) );</span >
1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsLiftable( id_z, fn_z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Lift( id_z, fn_z );</span >
<A zero, identity morphism in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >IsColiftable( id_z, fn_z );</span >
true
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Colift( id_z, fn_z );</span >
<A zero, identity morphism in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >DirectProduct( T, [ ] );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Equalizer( T, z, [ ] );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Coproduct( T, [ ] );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Coequalizer( T, z, [ ] );</span >
<A zero object in TerminalCategoryWithSingleObject( )>
</pre ></div >
<div class="chlinkprevnextbot" > <a href="chap0.html" >[Top of Book]</a> <a href="chap0.html#contents" >[Contents]</a> <a href="chap16.html" >[Previous Chapter]</a> <a href="chap18.html" >[Next Chapter]</a> </div >
<div class="chlinkbot" ><span class="chlink1" >Goto Chapter: </span ><a href="chap0.html" >Top</a> <a href="chap1.html" >1</a> <a href="chap2.html" >2</a> <a href="chap3.html" >3</a> <a href="chap4.html" >4</a> <a href="chap5.html" >5</a> <a href="chap6.html" >6</a> <a href="chap7.html" >7</a> <a href="chap8.html" >8</a> <a href="chap9.html" >9</a> <a href="chap10.html" >10</a> <a href="chap11.html" >11</a> <a href="chap12.html" >12</a> <a href="chap13.html" >13</a> <a href="chap14.html" >14</a> <a href="chap15.html" >15</a> <a href="chap16.html" >16</a> <a href="chap17.html" >17</a> <a href="chap18.html" >18</a> <a href="chapInd.html" >Ind</a> </div >
<hr />
<p class="foot" >generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc " >GAPDoc2HTML</a></p>
</body >
</html >
quality 97%
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland