| products/Sources/formale Sprachen/GAP/pkg/generalizedmorphismsforcap/doc/chap9_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 (GeneralizedMorphismsForCAP) - Chapter 9: 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= "chap9" 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="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="chap8_mj.html">[Previous Chapter]</a> <a href="chapInd_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap9.html">[MathJax off]</a></p>
<p><a id="X7967FE8E7BBDF485" name="X7967FE8E7BBDF485"></a></p>
<div class="ChapSects"><a href="chap9_mj.html#X7967FE8E7BBDF485">9 <span class="Heading">Examples and Tests</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9_mj.html#X8104A77D7B5CCD4F">9.1 <span class="Heading">Basic Commands</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9_mj.html#X8769971A878B6648">9.2 <span class="Heading">Intersection of Nodal Curve and Cusp</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9_mj.html#X8245BF297DF9A3E7">9.3 <span class="Heading">WrapperCategory</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9_mj.html#X8325B23C86E16E76">9.4 <span class="Heading">Sweep</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9_mj.html#X86FB477C7908A3A6">9.5 <span class="Heading">Generalized Morphisms Category</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9_mj.html#X7E8AFE5085FF7E15">9.6 <span class="Heading">IsWellDefined</span></a>
</span>
</div>
</div>
<h3>9 <span class="Heading">Examples and Tests</span></h3>
<p><a id="X8104A77D7B5CCD4F" name="X8104A77D7B5CCD4F"></a></p>
<h4>9.1 <span class="Heading">Basic Commands</span></h4>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 4, Q );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 3, Q );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := VectorSpaceObject( 2, Q );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">alpha := VectorSpaceMorphism( A, </span>
<span class="GAPprompt">></span> <span class="GAPinput">HomalgMatrix( [ [ 1, 1, 1 ], [ 0, 1, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">[ 1, 0, 1 ], [ 1, 1, 0 ] ], 4, 3, Q ), B );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma := VectorSpaceMorphism( C, </span>
<span class="GAPprompt">></span> <span class="GAPinput">HomalgMatrix( [ [ -1, 1, -1 ], [ 1, 0, -1 ] ], 2, 3, Q ), B );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := ProjectionInFactorOfFiberProduct( [ alpha, gamma ], 1 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">q := ProjectionInFactorOfFiberProduct( [ alpha, gamma ], 2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">PreCompose( AsGeneralizedMorphism( alpha ), GeneralizedInverse( gamma ) );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">gen1 := PreCompose( AsGeneralizedMorphism( alpha ), </span>
<span class="GAPprompt">></span> <span class="GAPinput"> GeneralizedInverse( gamma ) );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">gen2 := PreCompose( GeneralizedInverse( p ), AsGeneralizedMorphism( q ) );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCongruentForMorphisms( gen1, gen2 );</span>
true
</pre></div>
<p><a id="X8769971A878B6648" name="X8769971A878B6648"></a></p>
<h4>9.2 <span class="Heading">Intersection of Nodal Curve and Cusp</span></h4>
<p>We are going to intersect the nodal curve <span class="SimpleMath">\(f = y^2 - x^2(x+1)\)</span> and the cusp <span class="SimpleMath">\(g = (x+y)^2 - (y-x)^3\)</span>. The two curves are arranged in a way such that they intersect at <span class="SimpleMath">\((0,0)\)</span> with intersection number as high as possible. We are going to compute this intersection number using the definition of the intersection number as the length of the module <span class="SimpleMath">\(R/(f,g)\)</span> localized at <span class="SimpleMath">\((0,0)\)</span>. In order to model modules over the localization of <span class="SimpleMath">\(Q[x,y]\)</span> at <span class="SimpleMath">\((0,0)\)</span>, we use a suitable Serre quotient category. 1 2 1 1 true We are going to intersect the nodal curve <span class="SimpleMath">\(f = y^2 - x^2(x+1)\)</span> and the cusp <span class="SimpleMath">\(g = (x+y)^2 - (y-x)^3\)</span>. The two curves are arranged in a way such that they intersect at <span class="SimpleMath">\((0,0)\)</span> with intersection number as high as possible. We are going to compute this intersection number using the definition of the intersection number as the length of the module <span class="SimpleMath">\(R/(f,g)\)</span> localized at <span class="SimpleMath">\((0,0)\)</span>. In order to model modules over the localization of <span class="SimpleMath">\(Q[x,y]\)</span> at <span class="SimpleMath">\((0,0)\)</span>, we use a suitable Serre quotient category. 1 2 1 1 true We are going to intersect the nodal curve <span class="SimpleMath">\(f = y^2 - x^2(x+1)\)</span> and the cusp <span class="SimpleMath">\(g = (x+y)^2 - (y-x)^3\)</span>. The two curves are arranged in a way such that they intersect at <span class="SimpleMath">\((0,0)\)</span> with intersection number as high as possible. We are going to compute this intersection number using the definition of the intersection number as the length of the module <span class="SimpleMath">\(R/(f,g)\)</span> localized at <span class="SimpleMath">\((0,0)\)</span>. In order to model modules over the localization of <span class="SimpleMath">\(Q[x,y]\)</span> at <span class="SimpleMath">\((0,0)\)</span>, we use a suitable Serre quotient category. 1 2 1 1 true</p>
<p><a id="X8245BF297DF9A3E7" name="X8245BF297DF9A3E7"></a></p>
<h4>9.3 <span class="Heading">WrapperCategory</span></h4>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage( "LinearAlgebraForCAP" );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage( "GeneralizedMorphismsForCAP", false );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">old_generalized_morphism_standard := CAP_INTERNAL!.generalized_morphism_standard;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SwitchGeneralizedMorphismStandard( "cospan" );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals( );</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">id := HomalgIdentityMatrix( 8, Q );</span>
<An unevaluated 8 x 8 identity matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">a := CertainColumns( CertainRows( id, [ 1, 2, 3 ] ), [ 2, 3, 4, 5 ] );</span>
<An unevaluated non-zero 3 x 4 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">b := CertainColumns( CertainRows( id, [ 1, 2, 3, 4 ] ), [ 2, 3, 4, 5, 6 ] );</span>
<An unevaluated non-zero 4 x 5 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">c := CertainColumns( CertainRows( id, [ 1, 2, 3, 4, 5 ] ), [ 3, 4, 5, 6, 7, 8 ] );</span>
<An unevaluated non-zero 5 x 6 matrix over an internal ring>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsZero( a * b );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsZero( b * c );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsZero( a * b * c );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">Qmat := MatrixCategory( Q );</span>
Category of matrices over Q
<span class="GAPprompt">gap></span> <span class="GAPinput">Wrapper := WrapperCategory( Qmat, rec( ) );</span>
WrapperCategory( Category of matrices over Q )
<span class="GAPprompt">gap></span> <span class="GAPinput">a := a / Wrapper;</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">b := b / Wrapper;</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">c := c / Wrapper;</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">d := CokernelProjection( a );</span>
<An epimorphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">e := CokernelColift( a, PreCompose( b, c ) );</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">f := KernelEmbedding( e );</span>
<A monomorphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := KernelEmbedding( c );</span>
<A monomorphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">h := KernelLift( c, PreCompose( a, b ) );</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">i := CokernelProjection( h );</span>
<An epi morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">ff := AsGeneralizedMorphism( f );</span>
<A morphism in Generalized morphism category of
WrapperCategory( Category of matrices over Q ) by cospan>
<span class="GAPprompt">gap></span> <span class="GAPinput">dd := AsGeneralizedMorphism( d );</span>
<A morphism in Generalized morphism category of
WrapperCategory( Category of matrices over Q ) by cospan>
<span class="GAPprompt">gap></span> <span class="GAPinput">bb := AsGeneralizedMorphism( b );</span>
<A morphism in Generalized morphism category of
WrapperCategory( Category of matrices over Q ) by cospan>
<span class="GAPprompt">gap></span> <span class="GAPinput">gg := AsGeneralizedMorphism( g );</span>
<A morphism in Generalized morphism category of
WrapperCategory( Category of matrices over Q ) by cospan>
<span class="GAPprompt">gap></span> <span class="GAPinput">ii := AsGeneralizedMorphism( i );</span>
<A morphism in Generalized morphism category of
WrapperCategory( Category of matrices over Q ) by cospan>
<span class="GAPprompt">gap></span> <span class="GAPinput">ss := PreCompose( [ ff, PseudoInverse( dd ), bb, PseudoInverse( gg ), ii ] );</span>
<A morphism in Generalized morphism category of
WrapperCategory( Category of matrices over Q ) by cospan>
<span class="GAPprompt">gap></span> <span class="GAPinput">s := HonestRepresentative( ss );</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">j := KernelObjectFunctorial( b, d, e );</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">k := CokernelObjectFunctorial( h, g, b );</span>
<A morphism in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">HK := HomologyObject( j, s );</span>
<An object in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">HC := HomologyObject( s, k );</span>
<An object in WrapperCategory( Category of matrices over Q )>
<span class="GAPprompt">gap></span> <span class="GAPinput">SwitchGeneralizedMorphismStandard( old_generalized_morphism_standard );</span>
</pre></div>
<p><a id="X8325B23C86E16E76" name="X8325B23C86E16E76"></a></p>
<h4>9.4 <span class="Heading">Sweep</span></h4>
<p><span class="SimpleMath">\(\href{https://terrytao.wordpress.com/2015/10/07/sweeping-a-matrix-rotates-its-graph/}{\textrm{Geometric interpretation of sweeping a matrix by Terence Tao.}}\)</span></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">V := VectorSpaceObject( 3, Q );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := HomalgMatrix( [ [ 9, 8, 7 ], [ 6, 5, 4 ], [ 3, 2, 1 ] ], 3, 3, Q );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">alpha := VectorSpaceMorphism( V, mat, V );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">graph := FiberProductEmbeddingInDirectSum( </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ alpha, IdentityMorphism( V ) ] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( graph );</span>
[ [ 1, -2, 1, 0, 0, 0 ],
[ -4/3, 7/3, 0, 2, 1, 0 ],
[ 5/3, -8/3, 0, -1, 0, 1 ] ]
A morphism in Category of matrices over Q
<span class="GAPprompt">gap></span> <span class="GAPinput">D := DirectSum( V, V );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">rotmat := HomalgMatrix( [ [ 0, 0, 0, -1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 1, 0, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 0, 1 ] ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 6, 6, Q );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">rot := VectorSpaceMorphism( D, rotmat, D );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := PreCompose( graph, rot );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( p );</span>
[ [ 0, -2, 1, -1, 0, 0 ],
[ 2, 7/3, 0, 4/3, 1, 0 ],
[ -1, -8/3, 0, -5/3, 0, 1 ] ]
A morphism in Category of matrices over Q
<span class="GAPprompt">gap></span> <span class="GAPinput">pi1 := ProjectionInFactorOfDirectSum( [ V, V ], 1 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pi2 := ProjectionInFactorOfDirectSum( [ V, V ], 2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">reversed_arrow := PreCompose( p, pi1 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">arrow := PreCompose( p, pi2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := GeneralizedMorphismBySpan( reversed_arrow, arrow );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsHonest( g );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">sweep_1_alpha := HonestRepresentative( g );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( sweep_1_alpha );</span>
[ [ -1/9, 8/9, 7/9 ],
[ 2/3, -1/3, -2/3 ],
[ 1/3, -2/3, -4/3 ] ]
A morphism in Category of matrices over Q
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( alpha );</span>
[ [ 9, 8, 7 ],
[ 6, 5, 4 ],
[ 3, 2, 1 ] ]
A morphism in Category of matrices over Q
</pre></div>
<p><a id="X86FB477C7908A3A6" name="X86FB477C7908A3A6"></a></p>
<h4>9.5 <span class="Heading">Generalized Morphisms Category</span></h4>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">B_1 := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">C_1 := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">c1_source_aid := VectorSpaceMorphism( B_1, [ [ 1, 0 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetIsSubobject( c1_source_aid, true );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c1_range_aid := VectorSpaceMorphism( C, [ [ 1, 0 ], [ 0, 1 ], [ 0, 0 ] ], C_1 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetIsFactorobject( c1_range_aid, true );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c1_associated := VectorSpaceMorphism( B_1, [ [ 1, 1 ] ], C_1 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">c1 := GeneralizedMorphism( c1_source_aid, c1_associated, c1_range_aid );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">B_2 := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">C_2 := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">c2_source_aid := VectorSpaceMorphism( B_2, [ [ 2, 0 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetIsSubobject( c2_source_aid, true );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c2_range_aid := VectorSpaceMorphism( C, [ [ 3, 0 ], [ 0, 3 ], [ 0, 0 ] ], C_2 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetIsFactorobject( c2_range_aid, true );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c2_associated := VectorSpaceMorphism( B_2, [ [ 6, 6 ] ], C_2 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">c2 := GeneralizedMorphism( c2_source_aid, c2_associated, c2_range_aid );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCongruentForMorphisms( c1, c2 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCongruentForMorphisms( c1, c1 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">c3_associated := VectorSpaceMorphism( B_1, [ [ 2, 2 ] ], C_1 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">c3 := GeneralizedMorphism( c1_source_aid, c3_associated, c1_range_aid );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCongruentForMorphisms( c1, c3 );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCongruentForMorphisms( c2, c3 );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">c1 + c2;</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Arrow( c1 + c2 );</span>
<A morphism in Category of matrices over Q>
</pre></div>
<p>First composition test:</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde_associated := VectorSpaceMorphism( A, [ [ 1, 2, 0 ] ], C );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde_source_aid := VectorSpaceMorphism( A, [ [ 1, 2 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde := GeneralizedMorphismWithSourceAid( phi_tilde_source_aid, phi_tilde_associated );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi_tilde_associated := IdentityMorphism( B );</span>
<An identity morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi_tilde_source_aid := VectorSpaceMorphism( B, [ [ 1, 0, 0 ], [ 0, 1, 0 ] ], C );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi_tilde := GeneralizedMorphismWithSourceAid( psi_tilde_source_aid, psi_tilde_associated );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">composition := PreCompose( phi_tilde, psi_tilde );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Arrow( composition );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SourceAid( composition );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">RangeAid( composition );</span>
<An identity morphism in Category of matrices over Q>
</pre></div>
<p>Second composition test</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi2_tilde_associated := VectorSpaceMorphism( A, [ [ 1, 5 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi2_tilde_range_aid := VectorSpaceMorphism( C, [ [ 1, 0 ], [ 0, 1 ], [ 1, 1 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi2_tilde := GeneralizedMorphismWithRangeAid( phi2_tilde_associated, phi2_tilde_range_aid );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi2_tilde_associated := VectorSpaceMorphism( C, [ [ 1 ], [ 3 ], [ 4 ] ], A );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi2_tilde_range_aid := VectorSpaceMorphism( B, [ [ 1 ], [ 1 ] ], A );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi2_tilde := GeneralizedMorphismWithRangeAid( psi2_tilde_associated, psi2_tilde_range_aid );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">composition2 := PreCompose( phi2_tilde, psi2_tilde );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Arrow( composition2 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">RangeAid( composition2 );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SourceAid( composition2 );</span>
<An identity morphism in Category of matrices over Q>
</pre></div>
<p>Third composition test</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">Asub := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bfac := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bsub := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">Cfac := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">Asub_into_A := VectorSpaceMorphism( Asub, [ [ 1, 0, 0 ], [ 0, 1, 0 ] ], A );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Asub_to_Bfac := VectorSpaceMorphism( Asub, [ [ 1 ], [ 1 ] ], Bfac );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">B_onto_Bfac := VectorSpaceMorphism( B, [ [ 1 ], [ 1 ], [ 1 ] ], Bfac );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bsub_into_B := VectorSpaceMorphism( Bsub, [ [ 2, 2, 0 ], [ 0, 2, 2 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bsub_to_Cfac := VectorSpaceMorphism( Bsub, [ [ 3 ], [ 0 ] ], Cfac );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">C_onto_Cfac := VectorSpaceMorphism( C, [ [ 1 ], [ 2 ], [ 3 ] ], Cfac );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">generalized_morphism1 := GeneralizedMorphism( Asub_into_A, Asub_to_Bfac, B_onto_Bfac );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">generalized_morphism2 := GeneralizedMorphism( Bsub_into_B, Bsub_to_Cfac, C_onto_Cfac );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( generalized_morphism1 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( generalized_morphism2 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">p := PreCompose( generalized_morphism1, generalized_morphism2 );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SourceAid( p );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Arrow( p );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">RangeAid( p );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">Asub := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bfac := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bsub := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := VectorSpaceObject( 3, Q );</span>
<A vector space object over Q of dimension 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">Cfac := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">Bsub_to_Cfac := VectorSpaceMorphism( Bsub, [ [ 3, 3 ], [ 0, 0 ] ], Cfac );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">C_onto_Cfac := VectorSpaceMorphism( C, [ [ 1, 0 ], [ 0, 2 ], [ 3, 3 ] ], Cfac );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">generalized_morphism1 := GeneralizedMorphism( Asub_into_A, Asub_to_Bfac, B_onto_Bfac );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">generalized_morphism2 := GeneralizedMorphism( Bsub_into_B, Bsub_to_Cfac, C_onto_Cfac );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( generalized_morphism1 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( generalized_morphism2 );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">p := PreCompose( generalized_morphism1, generalized_morphism2 );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">SourceAid( p );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">Arrow( p );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">RangeAid( p );</span>
<A morphism in Category of matrices over Q>
</pre></div>
<p>Honest representative test</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde_source_aid := VectorSpaceMorphism( A, [ [ 2 ] ], A );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde_associated := VectorSpaceMorphism( A, [ [ 1, 1 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde_range_aid := VectorSpaceMorphism( B, [ [ 1, 2 ], [ 3, 4 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi_tilde := GeneralizedMorphism( phi_tilde_source_aid, phi_tilde_associated, phi_tilde_range_aid );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">HonestRepresentative( phi_tilde );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( phi_tilde );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( psi_tilde );</span>
true
</pre></div>
<p><a id="X7E8AFE5085FF7E15" name="X7E8AFE5085FF7E15"></a></p>
<h4>9.6 <span class="Heading">IsWellDefined</span></h4>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := HomalgFieldOfRationals();</span>
Q
<span class="GAPprompt">gap></span> <span class="GAPinput">A := VectorSpaceObject( 1, Q );</span>
<A vector space object over Q of dimension 1>
<span class="GAPprompt">gap></span> <span class="GAPinput">B := VectorSpaceObject( 2, Q );</span>
<A vector space object over Q of dimension 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">alpha := VectorSpaceMorphism( A, [ [ 1, 2 ] ], B );</span>
<A morphism in Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := GeneralizedMorphism( alpha, alpha, alpha );</span>
<A morphism in Generalized morphism category of Category of matrices over Q>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( alpha );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWellDefined( g );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsEqualForObjects( A, B );</span>
false
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap8_mj.html">[Previous Chapter]</a> <a href="chapInd_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="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>
¤ Dauer der Verarbeitung: 0.17 Sekunden
¤
*© Formatika GbR, Deutschland
|
|