products/sources/formale Sprachen/GAP/tst/testinstall/kernel/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 18.9.2025 mit Größe 481 B image not shown  

Quelle  chap17_mj.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/cap/doc/chap17_mj.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>
<script type="text/javascript"
  src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<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_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chap14_mj.html">14</a>  <a href="chap15_mj.html">15</a>  <a href="chap16_mj.html">16</a>  <a href="chap17_mj.html">17</a>  <a href="chap18_mj.html">18</a>  <a href="chapInd_mj.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap16_mj.html">[Previous Chapter]</a>    <a href="chap18_mj.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap17.html">[MathJax off]</a></p>
<p><a id="X7967FE8E7BBDF485" name="X7967FE8E7BBDF485"></a></p>
<div class="ChapSects"><a href="chap17_mj.html#X7967FE8E7BBDF485">17 <span class="Heading">Examples and Tests</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap17_mj.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_mj.html#X82A623E78640E822">17.1-1 <span class="Heading">Dummy categories</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap17_mj.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_mj.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_mj.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_mj.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_mj.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="SimpleMath">\(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="SimpleMath">\(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, functionsource, 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="SimpleMath">\(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_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap16_mj.html">[Previous Chapter]</a>    <a href="chap18_mj.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chap14_mj.html">14</a>  <a href="chap15_mj.html">15</a>  <a href="chap16_mj.html">16</a>  <a href="chap17_mj.html">17</a>  <a href="chap18_mj.html">18</a>  <a href="chapInd_mj.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>

98%


¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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 ist noch experimentell.