GAP (LocalizeRingForHomalg) - Chapter 5: Examples

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

[MathJax off]

5 Examples
5.1 An Easy Polynomial Example
5.2 Hom(Hom(-,Z128),Z16)
5.3 ResidueClass
5.4 Testing the Intersection Formula

### 5 Examples

#### 5.1 An Easy Polynomial Example

The ground ring used in this example is \(F_3[x,y]\). We want to see, how the different rings in this package can be used to localize at different points and how the results differ.

    gap> LoadPackage("RingsForHomalg");;
    gap> F3xy := HomalgRingOfIntegersInSingular(3) * "x,y";;
    gap> x1 := HomalgRingElement( "x+2", F3xy );;
    gap> y0 := HomalgRingElement( "y", F3xy );;
    gap> LoadPackage("LocalizeRingForHomalg");;
    gap> R00 := LocalizeAtZero( F3xy );;
    gap> R10 := LocalizeAt( F3xy, [ x1, y0 ] );;
    gap> RMora := LocalizePolynomialRingAtZeroWithMora( F3xy );;
    gap> M := HomalgMatrix( "[\
    >        y^3+2*y^2+x+x^2+2*x*y+y^4+x*y^2, \
    >        x*y^3+2*x^2*y+y^3+y^2+x+2*y+x^2, \
    >        x^2*y^2+2*x^3+x^2*y+y^3+2*x^2+2*x*y+y^2+2*y\
    >      ]", 1, 3, F3xy );;
    gap> LoadPackage( "Modules" );;
    gap> I := RightPresentation( M );;
    gap> M00 := HomalgLocalMatrix( M, R00 );;
    gap> M10 := HomalgLocalMatrix( M, R10 );;
    gap> MMora := HomalgLocalMatrix( M, RMora );;
    gap> I00 := RightPresentation( M00 );;
    gap> I10 := RightPresentation( M10 );;
    gap> IMora := RightPresentation( MMora );;

This ring is able to compute a standard basis of the module.

    gap> Display( IMora );
    GF(3)[x,y]_< x, y >/< (x+x^2-x*y-y^2+x*y^2+y^3+y^4)/1, (x-y+x^2+y^2-x^2*y+y^3+\
    x*y^3)/1, (-y-x^2-x*y+y^2-x^3+x^2*y+y^3+x^2*y^2)/1 >
    gap> ByASmallerPresentation( IMora );
    <A cyclic torsion right module on a cyclic generator satisfying 2 relations>
    gap> Display( IMora );
    GF(3)[x,y]_< x, y >/< x/1, y/1 >

This ring recognizes, that the module is not zero, but is not able to find better generators.

    gap> Display( I00 );
    GF(3)[x,y]_< x, y >/< (y^4+x*y^2+y^3+x^2-x*y-y^2+x)/1, (x*y^3-x^2*y+y^3+x^2+y^\
    2+x-y)/1, (x^2*y^2-x^3+x^2*y+y^3-x^2-x*y+y^2-y)/1 >
    gap> ByASmallerPresentation( I00 );
    <A cyclic right module on a cyclic generator satisfying 3 relations>
    gap> Display( I00 );
    GF(3)[x,y]_< x, y >/< (y^4+x*y^2+y^3+x^2-x*y-y^2+x)/1, (x*y^3-x^2*y+y^3+x^2+y^\
    2+x-y)/1, (x^2*y^2-x^3+x^2*y+y^3-x^2-x*y+y^2-y)/1 >

We are able to change the ring, to compute a nicer basis.

    gap> I00ToMora := RMora * I00;
    <A cyclic right module on a cyclic generator satisfying 3 relations>
    gap> Display( I00ToMora );
    GF(3)[x,y]_< x, y >/< (x+x^2-x*y-y^2+x*y^2+y^3+y^4)/1, (x-y+x^2+y^2-x^2*y+y^3+\
    x*y^3)/1, (-y-x^2-x*y+y^2-x^3+x^2*y+y^3+x^2*y^2)/1 >
    gap> ByASmallerPresentation( I00ToMora );
    <A cyclic torsion right module on a cyclic generator satisfying 2 relations>
    gap> Display( I00ToMora );
    GF(3)[x,y]_< x, y >/< x/1, y/1 >

We are able to find out, that this module is actually zero.

    gap> Display( I10 );
    GF(3)[x,y]_< x-1, y >/< (y^4+x*y^2+y^3+x^2-x*y-y^2+x)/1, (x*y^3-x^2*y+y^3+x^2+\
    y^2+x-y)/1, (x^2*y^2-x^3+x^2*y+y^3-x^2-x*y+y^2-y)/1 >
    gap> ByASmallerPresentation( I10 );
    <A zero right module>
    gap> Display( I10 );
    0

#### 5.2 Hom(Hom(-,Z128),Z16)

The following example is taken from Section 2 of [BR06].
The computation takes place over the local ring \(R=ℤ_{\langle 2\rangle}\) (i.e. ℤ localized at the maximal ideal generated by \(2\)).

Here we compute the (infinite) long exact homology sequence of the covariant functor \(Hom(Hom(-,R/2^7R),R/2^4R)\) (and its left derived functors) applied to the short exact sequence
\(0 -> M_=R/2^2R --alpha_1--> M=R/2^5R --alpha_2--> \_M=R/2^3R -> 0\).

    gap> LoadPackage( "LocalizeRingForHomalg" );;
    gap> GlobalR := HomalgRingOfIntegersInExternalGAP(  );
    Z
    gap> Display( GlobalR );
    <An external ring residing in the CAS GAP>
    gap> LoadPackage( "RingsForHomalg" );;
    gap> R := LocalizeAt( GlobalR , [ 2 ] );
    Z_< 2 >
    gap> Display( R );
    <A local ring>
    gap> M := LeftPresentation( HomalgMatrix( [ 2^5 ], R ) );
    <A cyclic left module presented by 1 relation for a cyclic generator>
    gap> _M := LeftPresentation( HomalgMatrix( [ 2^3 ], R ) );
    <A cyclic left module presented by 1 relation for a cyclic generator>
    gap> alpha2 := HomalgMap( HomalgMatrix( [ 1 ], R ), M, _M );
    <A "homomorphism" of left modules>
    gap> M_ := Kernel( alpha2 );
    <A cyclic left module presented by yet unknown relations for a cyclic generato\
    r>
    gap> alpha1 := KernelEmb( alpha2 );
    <A monomorphism of left modules>
    gap> seq := HomalgComplex( alpha2 );
    <A "complex" containing a single morphism of left modules at degrees
    [ 0 .. 1 ]>
    gap> Add( seq, alpha1 );
    gap> IsShortExactSequence( seq );
    true
    gap> K := LeftPresentation( HomalgMatrix( [ 2^7 ], R ) );
    <A cyclic left module presented by 1 relation for a cyclic generator>
    gap> L := RightPresentation( HomalgMatrix( [ 2^4 ], R ) );
    <A cyclic right module on a cyclic generator satisfying 1 relation>
    gap> triangle := LHomHom( 4, seq, K, L, "t" );
    <An exact triangle containing 3 morphisms of left complexes at degrees
    [ 1, 2, 3, 1 ]>
    gap> lehs := LongSequence( triangle );
    <A sequence containing 14 morphisms of left modules at degrees [ 0 .. 14 ]>
    gap> ByASmallerPresentation( lehs );
    <A non-zero sequence containing 14 morphisms of left modules at degrees
    [ 0 .. 14 ]>
    gap> IsExactSequence( lehs );
    true

#### 5.3 ResidueClass

We want to show, how localization can work together with residue class rings.

    gap> LoadPackage( "RingsForHomalg", ">= 2020.04.17" );;
    gap> Qxy := HomalgFieldOfRationalsInDefaultCAS( ) * "x,y";
    Q[x,y]
    gap> wmat := HomalgMatrix(
    >           "[ y^3-y^2 , x^3-x^2 , y^3+y^2 , x^3+x^2 ]",
    >           2, 2, Qxy );
    <A 2 x 2 matrix over an external ring>
    gap> ec := HomalgRingElement( "-x^3-x^2+2*y^2", Qxy );
    -x^3-x^2+2*y^2

Compute globally:

    gap> LoadPackage( "Modules" );;
    gap> W := LeftPresentation( wmat );
    <A left module presented by 2 relations for 2 generators>
    gap> Res := Resolution( 2 , W );
    <A right acyclic complex containing 2 morphisms of left modules at degrees
    [ 0 .. 2 ]>
    gap> Display( Res );
    -------------------------
    at homology degree: 2
    0
    -------------------------
    (an empty 0 x 2 matrix)

    the map is currently represented by the above 0 x 2 matrix
    ------------v------------
    at homology degree: 1
    Q[x,y]^(1 x 2)
    -------------------------
    y^2,      x^2,
    x*y^2-y^3,0

    the map is currently represented by the above 2 x 2 matrix
    ------------v------------
    at homology degree: 0
    Q[x,y]^(1 x 2)
    -------------------------

Try a localization of a residue class ring:

    gap> R1 := Qxy / ec;
    Q[x,y]/( -x^3-x^2+2*y^2 )
    gap> Display( R1 );
    <A residue class ring>
    gap> wmat1 := R1 * wmat;
    <A 2 x 2 matrix over a residue class ring>
    gap> LoadPackage( "LocalizeRingForHomalg" );;
    gap> R10 := LocalizeAt( R1 ,
    >          [ HomalgRingElement( "x", R1 ),
    >            HomalgRingElement( "y", R1 ) ]
    >        );
    Q[x,y]/( x^3+x^2-2*y^2 )_< |[ x ]|, |[ y ]| >
    gap> Display( R10 );
    <A local ring>
    gap> wmat10 := HomalgLocalMatrix( wmat, R10 );
    <A 2 x 2 matrix over a local ring>
    gap> W10 := LeftPresentation( wmat10 );
    <A left module presented by 2 relations for 2 generators>
    gap> Res10 := Resolution( 2 , W10 );
    <A right acyclic complex containing 2 morphisms of left modules at degrees
    [ 0 .. 2 ]>
    gap> Display( Res10 );
    -------------------------
    at homology degree: 2
    0
    -------------------------
    (an empty 0 x 2 matrix)

    the map is currently represented by the above 0 x 2 matrix
    ------------v------------
    at homology degree: 1
    Q[x,y]/( x^3+x^2-2*y^2 )_< |[ x ]|, |[ y ]| >^(1 x 2)
    -------------------------
    x*y^2+y^2,2*y^2,
    y^2,      y^4-2*y^3+2*y^2

    modulo [ x^3+x^2-2*y^2 ]
    / |[ 1 ]|

    the map is currently represented by the above 2 x 2 matrix
    ------------v------------
    at homology degree: 0
    Q[x,y]/( x^3+x^2-2*y^2 )_< |[ x ]|, |[ y ]| >^(1 x 2)
    -------------------------

Try a residue class ring of a localization:

    gap> R0 := LocalizeAtZero( Qxy );
    Q[x,y]_< x, y >
    gap> Display( R0 );
    <A local ring>
    gap> wmat0 := R0 * wmat;
    <A 2 x 2 matrix over a local ring>
    gap> R01 := R0 / ( ec / R0 );
    Q[x,y]_< x, y >/( (-x^3-x^2+2*y^2)/1 )
    gap> Display( R01 );
    <A residue class ring>
    gap> wmat01 := R01 * wmat0;
    <A 2 x 2 matrix over a residue class ring>
    gap> W01 := LeftPresentation( wmat01 );
    <A left module presented by 2 relations for 2 generators>
    gap> Res01 := Resolution( 2 , W01 );
    <A right acyclic complex containing 2 morphisms of left modules at degrees
    [ 0 .. 2 ]>
    gap> Display( Res01 );
    -------------------------
    at homology degree: 2
    0
    -------------------------
    (an empty 0 x 2 matrix)

    the map is currently represented by the above 0 x 2 matrix
    ------------v------------
    at homology degree: 1
    Q[x,y]_< x, y >/( (x^3+x^2-2*y^2)/1 )^(1 x 2)
    -------------------------
    y^3+y^2,2*y^2,
    0,      x*y^2-y^3
    / 1

    modulo [ (x^3+x^2-2*y^2)/1 ]

    the map is currently represented by the above 2 x 2 matrix
    ------------v------------
    at homology degree: 0
    Q[x,y]_< x, y >/( (x^3+x^2-2*y^2)/1 )^(1 x 2)
    -------------------------

#### 5.4 Testing the Intersection Formula

We want to check Serre's intersection formula \(i(I_1, I_2; 0)=\sum_i(-1)^i length(Tor^{R_0}_i(R_0/I_1,R_0/I_2))\) on an easy affine example.

    gap> LoadPackage( "RingsForHomalg" );;
    gap> R := HomalgFieldOfRationalsInSingular() * "w,x,y,z";;
    gap> LoadPackage( "LocalizeRingForHomalg" );;
    gap> R0 := LocalizePolynomialRingAtZeroWithMora( R );;
    gap> M1 := HomalgMatrix( "[\
    >        (w-x^2)*y, \
    >        (w-x^2)*z, \
    >        (x-w^2)*y, \
    >        (x-w^2)*z  \
    >      ]", 4, 1, R );;
    gap> M2 := HomalgMatrix( "[\
    >        (w-x^2)-y, \
    >        (x-w^2)-z  \
    >      ]", 2, 1, R );;
    gap> LoadPackage( "Modules" );;
    gap> RmodI1 := LeftPresentation( M1 );;
    gap> RmodI2 := LeftPresentation( M2 );;
    gap> T:=Tor( RmodI1, RmodI2 );
    <A graded homology object consisting of 4 left modules at degrees [ 0 .. 3 ]>
    gap> List( ObjectsOfComplex( T ), AffineDegree );
    [ 12, 4, 0, 0 ]

We read, that the intersection multiplicity is 12-4=8 globally.

    gap> M10 := R0 * M1;
    <A 4 x 1 matrix over a local (Mora) ring>
    gap> M20 := R0 * M2;
    <A 2 x 1 matrix over a local (Mora) ring>
    gap> R0modI10 := LeftPresentation( M10 );;
    gap> R0modI20 := LeftPresentation( M20 );;
    gap> T0 := Tor( R0modI10, R0modI20 );
    <A graded homology object consisting of 4 left modules at degrees [ 0 .. 3 ]>
    gap> List( ObjectsOfComplex( T0 ), AffineDegree );
    [ 3, 1, 0, 0 ]

The intersection multiplicity at zero is 3-1=2.

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

generated by GAPDoc2HTML