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 >
quality 100%
¤ Dauer der Verarbeitung: 0.22 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland