GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
############################################################################
##
## SCO.gi SCO package Simon Goertzen
##
## Copyright 2007-2008 Lehrstuhl B für Mathematik, RWTH Aachen
##
## Implementation stuff for SCO.
##
#############################################################################
##
InstallMethod( ComplexOfSimplicialSet,
[ IsSimplicialSet, IsInt, IsHomalgRing ],
function( S, n, R )
local morphisms, C, m;
morphisms := CreateBoundaryMatrices( S, n, R );
C := HomalgComplex( HomalgMap( morphisms[1] ), 1 );
for m in morphisms{[ 2 .. Length( morphisms ) ]} do
Add( C, m );
od;
C!.SkipHighestDegreeHomology := true;
C!.HomologyOnLessGenerators := true;
C!.DisplayHomology := true;
C!.StringBeforeDisplay := "----------------------------------------------->>>> ";
return C;
end
);
##
InstallMethod( CocomplexOfSimplicialSet,
[ IsSimplicialSet, IsInt, IsHomalgRing ],
function( S, n, R )
local morphisms, C, m;
morphisms := CreateCoboundaryMatrices( S, n, R );
C := HomalgCocomplex( HomalgMap( morphisms[1] ), 0 );
for m in morphisms{[ 2 .. Length( morphisms ) ]} do
Add( C, m );
od;
C!.SkipHighestDegreeCohomology := true;
C!.CohomologyOnLessGenerators := true;
C!.DisplayCohomology := true;
C!.StringBeforeDisplay := "----------------------------------------------->>>> ";
return C;
end
);
## <#GAPDoc Label="Homology">
## <ManSection>
## <Meth Arg="M[, R]" Name="Homology"/>
## <Returns>a &homalg; complex</Returns>
## <Description>
## This returns the homology complex of a list <A>M</A> of
## &homalg; matrices over the &homalg; ring <A>R</A>.
## <Example><![CDATA[
## gap> S := SimplicialSet( Teardrop );
## <The simplicial set of the orbifold triangulation "Teardrop", computed up to d\
## imension 0 with Length vector [ 4 ]>
## gap> R := HomalgRingOfIntegers();
## Z
## gap> M := CreateBoundaryMatrices( S, 4, R );;
## gap> Homology( M, R );
## ----------------------------------------------->>>> Z^(1 x 1)
## ----------------------------------------------->>>> 0
## ----------------------------------------------->>>> Z^(1 x 1)
## ----------------------------------------------->>>> Z/< 2 >
## ----------------------------------------------->>>> 0
## <A graded homology object consisting of 5 left modules at degrees [ 0 .. 4 ]>
## ]]></Example>
## </Description>
## </ManSection>
## <#/GAPDoc>
##
InstallMethod( Homology,
[ IsList, IsHomalgRing ],
function( morphisms, R )
local C, m;
C := HomalgComplex( HomalgMap( morphisms[1] ), 1 );
for m in morphisms{[ 2 .. Length( morphisms ) ]} do
Add( C, m );
od;
C!.SkipHighestDegreeHomology := true;
C!.HomologyOnLessGenerators := true;
C!.DisplayHomology := true;
C!.StringBeforeDisplay := "----------------------------------------------->>>> ";
return Homology( C );
end
);
InstallMethod( Homology,
[ IsList ],
function( morphisms )
if Length( morphisms ) > 0 and IsHomalgMatrix( morphisms[1] ) then
return Homology( morphisms, HomalgRing( morphisms[1] ) );
fi;
TryNextMethod();
end
);
## <#GAPDoc Label="Cohomology">
## <ManSection>
## <Meth Arg="M[, R]" Name="Cohomology"/>
## <Returns>a &homalg; complex</Returns>
## <Description>
## This returns the cohomology complex of a list <A>M</A> of
## &homalg; matrices over the &homalg; ring <A>R</A>.
## <Example><![CDATA[
## gap> S := SimplicialSet( Teardrop );
## <The simplicial set of the orbifold triangulation "Teardrop", computed up to d\
## imension 0 with Length vector [ 4 ]>
## gap> R := HomalgRingOfIntegers();
## Z
## gap> M := CreateCoboundaryMatrices( S, 4, R );;
## gap> Cohomology( M, R );
## ----------------------------------------------->>>> Z^(1 x 1)
## ----------------------------------------------->>>> 0
## ----------------------------------------------->>>> Z^(1 x 1)
## ----------------------------------------------->>>> 0
## ----------------------------------------------->>>> Z/< 2 >
## <A graded cohomology object consisting of 5 left modules at degrees
## [ 0 .. 4 ]>
## ]]></Example>
## </Description>
## </ManSection>
## <#/GAPDoc>
##
InstallMethod( Cohomology,
[ IsList, IsHomalgRing ],
function( morphisms, R )
local C, m;
C := HomalgCocomplex( HomalgMap( morphisms[1] ), 0 );
for m in morphisms{[ 2 .. Length( morphisms ) ]} do
Add( C, m );
od;
C!.SkipHighestDegreeCohomology := true;
C!.CohomologyOnLessGenerators := true;
C!.DisplayCohomology := true;
C!.StringBeforeDisplay := "----------------------------------------------->>>> ";
return Cohomology( C );
end
);
InstallMethod( Cohomology,
[ IsList ],
function( morphisms )
if Length( morphisms ) > 0 and IsHomalgMatrix( morphisms[1] ) then
return Cohomology( morphisms, HomalgRing( morphisms[1] ) );
fi;
TryNextMethod();
end
);
## <#GAPDoc Label="SCO_Examples">
## <ManSection>
## <Func Arg="" Name="SCO_Examples"/>
## <Returns>nothing</Returns>
## <Description>
## This is just an easy way to call the script <F>examples.g</F>, which is
## located in <F>gap/pkg/SCO/examples/</F>.
## <Log><![CDATA[
## gap> SCO_Examples();
## @@@@@@@@ SCO @@@@@@@@
##
## Select base ring:
## 1) Integers (default)
## 2) Rationals
## 3) Z/nZ
## :1
##
## Select Computer Algebra System:
## 1) GAP (default)
## 2) External GAP
## 3) MAGMA
## 4) Maple
## 5) Sage
## :3
## ---------------------------------------------------------------
## Magma V2.14-14 Tue Aug 19 2008 08:36:19 on evariste [Seed = 1054613462]
## Type ? for help. Type <Ctrl>-D to quit.
## ----------------------------------------------------------------
##
##
## Select Method:
## 1) Full syzygy computation (default)
## 2) matrix creation and rank computation only
## :1
##
## Select orbifold (default="C2")
## :Torus
##
## Select mode:
## 1) Cohomology (default)
## 2) Homology
## :1
##
## Select dimension (default = 4)
## :4
## Creating the coboundary matrices ...
## Starting cohomology computation ...
## ----------------------------------------------->>>> Z^(1 x 1)
## ----------------------------------------------->>>> Z^(1 x 2)
## ----------------------------------------------->>>> Z^(1 x 1)
## ----------------------------------------------->>>> 0
## ----------------------------------------------->>>> 0
## ]]></Log>
## </Description>
## </ManSection>
## <#/GAPDoc>
##
InstallGlobalFunction( SCO_Examples,
function( )
local directory, separator;
if IsBound( PackageInfo("SCO")[1] ) and IsBound( PackageInfo("SCO")[1].InstallationPath ) then
directory := PackageInfo("SCO")[1].InstallationPath;
else
directory := "./";
fi;
if IsBound( GAPInfo.UserHome ) then
separator := GAPInfo.UserHome{[1]};
else
separator := "/";
fi;
if Length( directory ) > 0 and directory{[Length( directory )]} <> separator then
directory := Concatenation( directory, separator );
fi;
Read( Concatenation( directory, "examples", separator, "examples.g" ) );
end );