3 Rings 3.1 Rings: Category and Representations 3.1-1 IsHomalgRing IsHomalgRing( R )  Category Returns: true or false The GAP category of homalg rings. (It is a subcategory of the GAP categories IsStructureObject and IsHomalgRingOrModule.)  Code  DeclareCategory( "IsHomalgRing",  IsStructureObject and  IsRingWithOne and  IsHomalgRingOrModule );  3.1-2 IsPreHomalgRing IsPreHomalgRing( R )  Category Returns: true or false The GAP category of pre homalg rings. (It is a subcategory of the GAP category IsHomalgRing.) These are rings with an incomplete homalgTable. They provide flexibility for developers to support a wider class of rings, as was necessary for the development of the LocalizeRingForHomalg package. They are not suited for direct usage.  Code  DeclareCategory( "IsPreHomalgRing",  IsHomalgRing );  3.1-3 IsHomalgRingElement IsHomalgRingElement( r )  Category Returns: true or false The GAP category of elements of homalg rings which are not GAP4 built-in.  Code  DeclareCategory( "IsHomalgRingElement",  IsExtAElement and  IsExtLElement and  IsExtRElement and  IsAdditiveElementWithInverse and  IsMultiplicativeElementWithInverse and  IsAssociativeElement and  IsAdditivelyCommutativeElement and  ## all the above guarantees IsHomalgRingElement => IsRingElement (in GAP4)  IsAttributeStoringRep );  3.1-4 IsHomalgInternalRingRep IsHomalgInternalRingRep( R )  Representation Returns: true or false The internal representation of homalg rings. (It is a representation of the GAP category IsHomalgRing.) 3.2 Rings: Constructors This section describes how to construct rings for use with MatricesForHomalg, which exploit the GAP4-built-in abilities to perform the necessary ring operations. By this we also mean necessary matrix operations over such rings. For the purposes of MatricesForHomalg only the ring of integers is properly supported in GAP4. The GAP4 extension packages Gauss and GaussForHomalg extend these built-in abilities to operations with sparse matrices over the ring ℤ / p^n for p prime and n positive. If a ring R is supported in MatricesForHomalg any of its residue class rings R/I is supported as well, provided the ideal I of relations admits a finite set of generators as a left resp. right ideal (--> \/ (3.2-3)). This is immediate for commutative noetherian rings. 3.2-1 HomalgRingOfIntegers HomalgRingOfIntegers( )  function Returns: a homalg ring HomalgRingOfIntegers( c )  function Returns: a homalg ring The no-argument form returns the ring of integers ℤ for homalg. The one-argument form accepts an integer c and returns the ring ℤ / c for homalg:  c= 0 defaults to ℤ  if c is a prime power then the package GaussForHomalg is loaded (if it fails to load an error is issued)  otherwise, the residue class ring constructor / (--> \/ (3.2-3)) is invoked The operation SetRingProperties is automatically invoked to set the ring properties. If for some reason you don't want to use the GaussForHomalg package (maybe because you didn't install it), then use HomalgRingOfIntegers( ) / c; but note that the computations will then be considerably slower. 3.2-2 HomalgFieldOfRationals HomalgFieldOfRationals( )  function Returns: a homalg ring The package GaussForHomalg is loaded and the field of rationals ℚ is returned. If GaussForHomalg fails to load an error is issued. The operation SetRingProperties is automatically invoked to set the ring properties. 3.2-3 \/ \/( R, ring_rel )  operation Returns: a homalg ring This is the homalg constructor for residue class rings R / I, where R is a homalg ring and I=ring_rel is the ideal of relations generated by ring_rel. ring_rel might be:  a set of ring relations of a left resp. right ideal  a list of ring elements of R  a ring element of R For noncommutative rings: In the first case the set of ring relations should generate the ideal of relations I as left resp. right ideal, and their involutions should generate I as right resp. left ideal. If ring_rel is not a set of relations, a left set of relations is constructed. The operation SetRingProperties is automatically invoked to set the ring properties.  Example  gap> ZZ := HomalgRingOfIntegers( ); Z gap> Display( ZZ );  gap> Z256 := ZZ / 2^8; Z/( 256 ) gap> Display( Z256 );  gap> Z2 := Z256 / 6; Z/( 256, 6 ) gap> BasisOfRows( MatrixOfRelations( Z2 ) );  gap> Z2; Z/( 2 ) gap> Display( Z2 );   3.3 Rings: Properties The following properties are declared for homalg rings. Note that (apart from so-called true and immediate methods (--> C.1)) there are no methods installed for ring properties. This means that if the value of the ring property Prop is not set for a homalg ring R, then Prop( R ); will cause an error. One can use the usual GAP4 mechanism to check if the value of the property is set or not HasProp( R ); If you discover that a specific property Prop is missing for a certain homalg ring R you can it add using the usual GAP4 mechanism SetProp( R, true ); or SetProp( R, false ); Be very cautious with setting "missing" properties to homalg objects: If the value you set is mathematically wrong homalg will probably draw wrong conclusions and might return wrong results. 3.3-1 IsZero IsZero( R )  property Returns: true or false Check if the ring R is a zero, i.e., if One(R)=Zero(R). 3.3-2 ContainsAField ContainsAField( R )  property Returns: true or false R is a ring for homalg. 3.3-3 IsRationalsForHomalg IsRationalsForHomalg( R )  property Returns: true or false R is a ring for homalg. 3.3-4 IsFieldForHomalg IsFieldForHomalg( R )  property Returns: true or false R is a ring for homalg. 3.3-5 IsDivisionRingForHomalg IsDivisionRingForHomalg( R )  property Returns: true or false R is a ring for homalg. 3.3-6 IsIntegersForHomalg IsIntegersForHomalg( R )  property Returns: true or false R is a ring for homalg. 3.3-7 IsResidueClassRingOfTheIntegers IsResidueClassRingOfTheIntegers( R )  property Returns: true or false R is a ring for homalg. 3.3-8 IsBezoutRing IsBezoutRing( R )  property Returns: true or false R is a ring for homalg. 3.3-9 IsIntegrallyClosedDomain IsIntegrallyClosedDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-10 IsUniqueFactorizationDomain IsUniqueFactorizationDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-11 IsKaplanskyHermite IsKaplanskyHermite( R )  property Returns: true or false R is a ring for homalg. 3.3-12 IsDedekindDomain IsDedekindDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-13 IsDiscreteValuationRing IsDiscreteValuationRing( R )  property Returns: true or false R is a ring for homalg. 3.3-14 IsFreePolynomialRing IsFreePolynomialRing( R )  property Returns: true or false R is a ring for homalg. 3.3-15 IsWeylRing IsWeylRing( R )  property Returns: true or false R is a ring for homalg. 3.3-16 IsLocalizedWeylRing IsLocalizedWeylRing( R )  property Returns: true or false R is a ring for homalg. 3.3-17 IsGlobalDimensionFinite IsGlobalDimensionFinite( R )  property Returns: true or false R is a ring for homalg. 3.3-18 IsLeftGlobalDimensionFinite IsLeftGlobalDimensionFinite( R )  property Returns: true or false R is a ring for homalg. 3.3-19 IsRightGlobalDimensionFinite IsRightGlobalDimensionFinite( R )  property Returns: true or false R is a ring for homalg. 3.3-20 HasInvariantBasisProperty HasInvariantBasisProperty( R )  property Returns: true or false R is a ring for homalg. 3.3-21 HasLeftInvariantBasisProperty HasLeftInvariantBasisProperty( R )  property Returns: true or false R is a ring for homalg. 3.3-22 HasRightInvariantBasisProperty HasRightInvariantBasisProperty( R )  property Returns: true or false R is a ring for homalg. 3.3-23 IsLocal IsLocal( R )  property Returns: true or false R is a ring for homalg. 3.3-24 IsSemiLocalRing IsSemiLocalRing( R )  property Returns: true or false R is a ring for homalg. 3.3-25 IsIntegralDomain IsIntegralDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-26 IsHereditary IsHereditary( R )  property Returns: true or false R is a ring for homalg. 3.3-27 IsLeftHereditary IsLeftHereditary( R )  property Returns: true or false R is a ring for homalg. 3.3-28 IsRightHereditary IsRightHereditary( R )  property Returns: true or false R is a ring for homalg. 3.3-29 IsHermite IsHermite( R )  property Returns: true or false R is a ring for homalg. 3.3-30 IsLeftHermite IsLeftHermite( R )  property Returns: true or false R is a ring for homalg. 3.3-31 IsRightHermite IsRightHermite( R )  property Returns: true or false R is a ring for homalg. 3.3-32 IsNoetherian IsNoetherian( R )  property Returns: true or false R is a ring for homalg. 3.3-33 IsLeftNoetherian IsLeftNoetherian( R )  property Returns: true or false R is a ring for homalg. 3.3-34 IsRightNoetherian IsRightNoetherian( R )  property Returns: true or false R is a ring for homalg. 3.3-35 IsCohenMacaulay IsCohenMacaulay( R )  property Returns: true or false R is a ring for homalg. 3.3-36 IsGorenstein IsGorenstein( R )  property Returns: true or false R is a ring for homalg. 3.3-37 IsKoszul IsKoszul( R )  property Returns: true or false R is a ring for homalg. 3.3-38 IsArtinian IsArtinian( R )  property Returns: true or false R is a ring for homalg. 3.3-39 IsLeftArtinian IsLeftArtinian( R )  property Returns: true or false R is a ring for homalg. 3.3-40 IsRightArtinian IsRightArtinian( R )  property Returns: true or false R is a ring for homalg. 3.3-41 IsOreDomain IsOreDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-42 IsLeftOreDomain IsLeftOreDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-43 IsRightOreDomain IsRightOreDomain( R )  property Returns: true or false R is a ring for homalg. 3.3-44 IsPrincipalIdealRing IsPrincipalIdealRing( R )  property Returns: true or false R is a ring for homalg. 3.3-45 IsLeftPrincipalIdealRing IsLeftPrincipalIdealRing( R )  property Returns: true or false R is a ring for homalg. 3.3-46 IsRightPrincipalIdealRing IsRightPrincipalIdealRing( R )  property Returns: true or false R is a ring for homalg. 3.3-47 IsRegular IsRegular( R )  property Returns: true or false R is a ring for homalg. 3.3-48 IsFiniteFreePresentationRing IsFiniteFreePresentationRing( R )  property Returns: true or false R is a ring for homalg. 3.3-49 IsLeftFiniteFreePresentationRing IsLeftFiniteFreePresentationRing( R )  property Returns: true or false R is a ring for homalg. 3.3-50 IsRightFiniteFreePresentationRing IsRightFiniteFreePresentationRing( R )  property Returns: true or false R is a ring for homalg. 3.3-51 IsSimpleRing IsSimpleRing( R )  property Returns: true or false R is a ring for homalg. 3.3-52 IsSemiSimpleRing IsSemiSimpleRing( R )  property Returns: true or false R is a ring for homalg. 3.3-53 IsSuperCommutative IsSuperCommutative( R )  property Returns: true or false R is a ring for homalg. 3.3-54 BasisAlgorithmRespectsPrincipalIdeals BasisAlgorithmRespectsPrincipalIdeals( R )  property Returns: true or false R is a ring for homalg. 3.3-55 AreUnitsCentral AreUnitsCentral( R )  property Returns: true or false R is a ring for homalg. 3.3-56 IsMinusOne IsMinusOne( r )  property Returns: true or false Check if the ring element r is the additive inverse of one. 3.3-57 IsMonic IsMonic( r )  property Returns: true or false Check if the homalg ring element r is monic. 3.3-58 IsMonicUptoUnit IsMonicUptoUnit( r )  property Returns: true or false Check if leading coefficient of the homalg ring element r is a unit. 3.3-59 IsLeftRegular IsLeftRegular( r )  property Returns: true or false Check if the homalg ring element r is left regular. 3.3-60 IsRightRegular IsRightRegular( r )  property Returns: true or false Check if the homalg ring element r is right regular. 3.3-61 IsRegular IsRegular( r )  property Returns: true or false Check if the homalg ring element r is regular, i.e. left and right regular. 3.4 Rings: Attributes 3.4-1 Inverse Inverse( r )  attribute Returns: a homalg ring element or fail The inverse of the homalg ring element r.  Example  gap> ZZ := HomalgRingOfIntegers( );; gap> R := ZZ / 2^8; Z/( 256 ) gap> r := (1/3*One(R)+1/5)+3/7; |[ 157 ]| gap> 1 / r; ## = r^-1; |[ 181 ]| gap> s := (1/3*One(R)+2/5)+3/7; |[ 106 ]| gap> 1 / s; fail  3.4-2 homalgTable homalgTable( R )  attribute Returns: a homalg table The homalg table of R is a ring dictionary, i.e. the translator between homalg and the (specific implementation of the) ring. Every homalg ring has a homalg table. 3.4-3 RingElementConstructor RingElementConstructor( R )  attribute Returns: a function The constructor of ring elements in the homalg ring R. 3.4-4 TypeOfHomalgMatrix TypeOfHomalgMatrix( R )  attribute Returns: a type The GAP4-type of homalg matrices over the homalg ring R. 3.4-5 ConstructorForHomalgMatrices ConstructorForHomalgMatrices( R )  attribute Returns: a type The constructor for homalg matrices over the homalg ring R. 3.4-6 Zero Zero( R )  attribute Returns: a homalg ring element The zero of the homalg ring R. 3.4-7 One One( R )  attribute Returns: a homalg ring element The one of the homalg ring R. 3.4-8 MinusOne MinusOne( R )  attribute Returns: a homalg ring element The minus one of the homalg ring R. 3.4-9 ProductOfIndeterminates ProductOfIndeterminates( R )  attribute Returns: a homalg ring element The product of indeterminates of the homalg ring R. 3.4-10 RationalParameters RationalParameters( R )  attribute Returns: a list of homalg ring elements The list of rational parameters of the homalg ring R. 3.4-11 IndeterminatesOfPolynomialRing IndeterminatesOfPolynomialRing( R )  attribute Returns: a list of homalg ring elements The list of indeterminates of the homalg polynomial ring R. 3.4-12 RelativeIndeterminatesOfPolynomialRing RelativeIndeterminatesOfPolynomialRing( R )  attribute Returns: a list of homalg ring elements The list of relative indeterminates of the homalg polynomial ring R. 3.4-13 IndeterminateCoordinatesOfRingOfDerivations IndeterminateCoordinatesOfRingOfDerivations( R )  attribute Returns: a list of homalg ring elements The list of indeterminate coordinates of the homalg Weyl ring R. 3.4-14 RelativeIndeterminateCoordinatesOfRingOfDerivations RelativeIndeterminateCoordinatesOfRingOfDerivations( R )  attribute Returns: a list of homalg ring elements The list of relative indeterminate coordinates of the homalg Weyl ring R. 3.4-15 IndeterminateDerivationsOfRingOfDerivations IndeterminateDerivationsOfRingOfDerivations( R )  attribute Returns: a list of homalg ring elements The list of indeterminate derivations of the homalg Weyl ring R. 3.4-16 RelativeIndeterminateDerivationsOfRingOfDerivations RelativeIndeterminateDerivationsOfRingOfDerivations( R )  attribute Returns: a list of homalg ring elements The list of relative indeterminate derivations of the homalg Weyl ring R. 3.4-17 IndeterminateAntiCommutingVariablesOfExteriorRing IndeterminateAntiCommutingVariablesOfExteriorRing( R )  attribute Returns: a list of homalg ring elements The list of anti-commuting indeterminates of the homalg exterior ring R. 3.4-18 RelativeIndeterminateAntiCommutingVariablesOfExteriorRing RelativeIndeterminateAntiCommutingVariablesOfExteriorRing( R )  attribute Returns: a list of homalg ring elements The list of anti-commuting relative indeterminates of the homalg exterior ring R. 3.4-19 IndeterminatesOfExteriorRing IndeterminatesOfExteriorRing( R )  attribute Returns: a list of homalg ring elements The list of all indeterminates (commuting and anti-commuting) of the homalg exterior ring R. 3.4-20 CoefficientsRing CoefficientsRing( R )  attribute Returns: a homalg ring The ring of coefficients of the homalg ring R. 3.4-21 KrullDimension KrullDimension( R )  attribute Returns: a non-negative integer The Krull dimension of the commutative homalg ring R. 3.4-22 LeftGlobalDimension LeftGlobalDimension( R )  attribute Returns: a non-negative integer The left global dimension of the homalg ring R. 3.4-23 RightGlobalDimension RightGlobalDimension( R )  attribute Returns: a non-negative integer The right global dimension of the homalg ring R. 3.4-24 GlobalDimension GlobalDimension( R )  attribute Returns: a non-negative integer The global dimension of the homalg ring R. The global dimension is defined, only if the left and right global dimensions coincide. 3.4-25 GeneralLinearRank GeneralLinearRank( R )  attribute Returns: a non-negative integer The general linear rank of the homalg ring R ([MR01], 11.1.14). 3.4-26 ElementaryRank ElementaryRank( R )  attribute Returns: a non-negative integer The elementary rank of the homalg ring R ([MR01], 11.3.10). 3.4-27 StableRank StableRank( R )  attribute Returns: a non-negative integer The stable rank of the homalg ring R ([MR01], 11.3.4). 3.4-28 AssociatedGradedRing AssociatedGradedRing( R )  attribute Returns: a homalg ring The graded ring associated to the filtered ring R. 3.5 Rings: Operations and Functions