Skip to content

Commit 973523c

Browse files
Merge pull request #617 from mohamed-barakat/RationalShiftAlgebra
d&i *RationalShiftAlgebra
2 parents 6a88f6e + 0964d54 commit 973523c

File tree

8 files changed

+502
-4
lines changed

8 files changed

+502
-4
lines changed

MatricesForHomalg/PackageInfo.g

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SetPackageInfo( rec(
1111

1212
PackageName := "MatricesForHomalg",
1313
Subtitle := "Matrices for the homalg project",
14-
Version := "2024.08-05",
14+
Version := "2024.11-02",
1515
Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ),
1616
License := "GPL-2.0-or-later",
1717

MatricesForHomalg/gap/HomalgRing.gd

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,32 @@ DeclareProperty( "IsLocalizedWeylRing",
316316
DeclareProperty( "IsExteriorRing",
317317
IsHomalgRing );
318318

319+
## <#GAPDoc Label="IsShiftAlgebra">
320+
## <ManSection>
321+
## <Prop Arg="R" Name="IsShiftAlgebra"/>
322+
## <Returns><C>true</C> or <C>false</C></Returns>
323+
## <Description>
324+
## <A>R</A> is a ring for &homalg;.
325+
## </Description>
326+
## </ManSection>
327+
## <#/GAPDoc>
328+
##
329+
DeclareProperty( "IsShiftAlgebra",
330+
IsHomalgRing );
331+
332+
## <#GAPDoc Label="IsRationalShiftAlgebra">
333+
## <ManSection>
334+
## <Prop Arg="R" Name="IsRationalShiftAlgebra"/>
335+
## <Returns><C>true</C> or <C>false</C></Returns>
336+
## <Description>
337+
## <A>R</A> is a ring for &homalg;.
338+
## </Description>
339+
## </ManSection>
340+
## <#/GAPDoc>
341+
##
342+
DeclareProperty( "IsRationalShiftAlgebra",
343+
IsHomalgRing );
344+
319345
## <#GAPDoc Label="IsPseudoDoubleShiftAlgebra">
320346
## <ManSection>
321347
## <Prop Arg="R" Name="IsPseudoDoubleShiftAlgebra"/>
@@ -1246,6 +1272,84 @@ DeclareAttribute( "RelativeIndeterminateAntiCommutingVariablesOfExteriorRing",
12461272
DeclareAttribute( "IndeterminatesOfExteriorRing",
12471273
IsHomalgRing );
12481274

1275+
## <#GAPDoc Label="IndeterminateCoordinatesOfShiftAlgebra">
1276+
## <ManSection>
1277+
## <Attr Arg="R" Name="IndeterminateCoordinatesOfShiftAlgebra"/>
1278+
## <Returns>a list of &homalg; ring elements</Returns>
1279+
## <Description>
1280+
## The list of indeterminate coordinates of the &homalg; shift algebra <A>R</A>.
1281+
## </Description>
1282+
## </ManSection>
1283+
## <#/GAPDoc>
1284+
##
1285+
DeclareAttribute( "IndeterminateCoordinatesOfShiftAlgebra",
1286+
IsHomalgRing );
1287+
1288+
## <#GAPDoc Label="ParametersOfRationalShiftAlgebra">
1289+
## <ManSection>
1290+
## <Attr Arg="R" Name="ParametersOfRationalShiftAlgebra"/>
1291+
## <Returns>a list of &homalg; ring elements</Returns>
1292+
## <Description>
1293+
## The list of indeterminate coordinates of the &homalg; shift algebra <A>R</A>.
1294+
## </Description>
1295+
## </ManSection>
1296+
## <#/GAPDoc>
1297+
##
1298+
DeclareAttribute( "ParametersOfRationalShiftAlgebra",
1299+
IsHomalgRing );
1300+
1301+
## <#GAPDoc Label="RelativeIndeterminateCoordinatesOfShiftAlgebra">
1302+
## <ManSection>
1303+
## <Attr Arg="R" Name="RelativeIndeterminateCoordinatesOfShiftAlgebra"/>
1304+
## <Returns>a list of &homalg; ring elements</Returns>
1305+
## <Description>
1306+
## The list of relative indeterminate coordinates of the &homalg; shift algebra <A>R</A>.
1307+
## </Description>
1308+
## </ManSection>
1309+
## <#/GAPDoc>
1310+
##
1311+
DeclareAttribute( "RelativeIndeterminateCoordinatesOfShiftAlgebra",
1312+
IsHomalgRing );
1313+
1314+
## <#GAPDoc Label="RelativeParametersOfRationalShiftAlgebra">
1315+
## <ManSection>
1316+
## <Attr Arg="R" Name="RelativeParametersOfRationalShiftAlgebra"/>
1317+
## <Returns>a list of &homalg; ring elements</Returns>
1318+
## <Description>
1319+
## The list of relative indeterminate coordinates of the &homalg; shift algebra <A>R</A>.
1320+
## </Description>
1321+
## </ManSection>
1322+
## <#/GAPDoc>
1323+
##
1324+
DeclareAttribute( "RelativeParametersOfRationalShiftAlgebra",
1325+
IsHomalgRing );
1326+
1327+
## <#GAPDoc Label="IndeterminateShiftsOfShiftAlgebra">
1328+
## <ManSection>
1329+
## <Attr Arg="R" Name="IndeterminateShiftsOfShiftAlgebra"/>
1330+
## <Returns>a list of &homalg; ring elements</Returns>
1331+
## <Description>
1332+
## The list of indeterminate shifts of the &homalg; shift algebra <A>R</A>.
1333+
## </Description>
1334+
## </ManSection>
1335+
## <#/GAPDoc>
1336+
##
1337+
DeclareAttribute( "IndeterminateShiftsOfShiftAlgebra",
1338+
IsHomalgRing );
1339+
1340+
## <#GAPDoc Label="IndeterminateShiftsOfRationalShiftAlgebra">
1341+
## <ManSection>
1342+
## <Attr Arg="R" Name="IndeterminateShiftsOfRationalShiftAlgebra"/>
1343+
## <Returns>a list of &homalg; ring elements</Returns>
1344+
## <Description>
1345+
## The list of indeterminate shifts of the &homalg; shift algebra <A>R</A>.
1346+
## </Description>
1347+
## </ManSection>
1348+
## <#/GAPDoc>
1349+
##
1350+
DeclareAttribute( "IndeterminateShiftsOfRationalShiftAlgebra",
1351+
IsHomalgRing );
1352+
12491353
## <#GAPDoc Label="IndeterminateCoordinatesOfPseudoDoubleShiftAlgebra">
12501354
## <ManSection>
12511355
## <Attr Arg="R" Name="IndeterminateCoordinatesOfPseudoDoubleShiftAlgebra"/>
@@ -1706,6 +1810,12 @@ DeclareOperation( "KoszulDualRing",
17061810
DeclareOperation( "KoszulDualRing",
17071811
[ IsHomalgRing ] );
17081812

1813+
DeclareOperation( "ShiftAlgebra",
1814+
[ IsHomalgRing, IsList ] );
1815+
1816+
DeclareOperation( "RationalShiftAlgebra",
1817+
[ IsHomalgRing, IsList ] );
1818+
17091819
DeclareOperation( "PseudoDoubleShiftAlgebra",
17101820
[ IsHomalgRing, IsList ] );
17111821

MatricesForHomalg/gap/HomalgRing.gi

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,20 @@ InstallValue( CommonHomalgTableForRings,
103103

104104
brackets := [ "{", "}" ];
105105

106+
## the pseudo shift algebra:
107+
elif HasIndeterminateShiftsOfShiftAlgebra( R ) then
108+
109+
var := IndeterminateShiftsOfShiftAlgebra( R );
110+
111+
brackets := [ "<", ">" ];
112+
113+
## the pseudo shift algebra:
114+
elif HasIndeterminateShiftsOfRationalShiftAlgebra( R ) then
115+
116+
var := IndeterminateShiftsOfRationalShiftAlgebra( R );
117+
118+
brackets := [ "<", ">" ];
119+
106120
## the pseudo double-shift algebra:
107121
elif HasIndeterminateShiftsOfPseudoDoubleShiftAlgebra( R ) then
108122

@@ -574,6 +588,21 @@ InstallMethod( Indeterminates,
574588

575589
end );
576590

591+
##
592+
InstallMethod( Indeterminates,
593+
"for homalg rings",
594+
[ IsHomalgRing and HasIndeterminateCoordinatesOfShiftAlgebra ],
595+
596+
function( R )
597+
598+
return
599+
Concatenation(
600+
IndeterminateCoordinatesOfShiftAlgebra( R ),
601+
IndeterminateShiftsOfShiftAlgebra( R )
602+
);
603+
604+
end );
605+
577606
##
578607
InstallMethod( Indeterminates,
579608
"for homalg rings",
@@ -1364,6 +1393,144 @@ InstallMethod( SetRingProperties,
13641393

13651394
end );
13661395

1396+
##
1397+
InstallMethod( SetRingProperties,
1398+
"for homalg rings",
1399+
[ IsHomalgRing and IsShiftAlgebra, IsHomalgRing and IsFreePolynomialRing, IsList ],
1400+
1401+
function( S, R, shift )
1402+
local r, b, param, paramS, var, d;
1403+
1404+
r := CoefficientsRing( R );
1405+
1406+
if HasBaseRing( R ) then
1407+
b := BaseRing( R );
1408+
else
1409+
b := r;
1410+
fi;
1411+
1412+
var := IndeterminatesOfPolynomialRing( R );
1413+
var := List( var, a -> a / S );
1414+
1415+
d := Length( var );
1416+
1417+
if d > 0 then
1418+
SetIsFinite( S, false );
1419+
fi;
1420+
1421+
SetCoefficientsRing( S, r );
1422+
1423+
if HasRationalParameters( r ) then
1424+
param := RationalParameters( r );
1425+
paramS := List( param, a -> a / S );
1426+
Perform( [ 1 .. Length( param ) ], function( i ) SetName( paramS[i], Name( param[i] ) ); end );
1427+
SetRationalParameters( S, paramS );
1428+
fi;
1429+
1430+
SetCharacteristic( S, Characteristic( R ) );
1431+
1432+
SetIsCommutative( S, shift = [ ] );
1433+
1434+
SetIndeterminateCoordinatesOfShiftAlgebra( S, var );
1435+
1436+
if HasRelativeIndeterminatesOfPolynomialRing( R ) then
1437+
SetRelativeIndeterminateCoordinatesOfShiftAlgebra(
1438+
S, RelativeIndeterminatesOfPolynomialRing( R ) );
1439+
fi;
1440+
1441+
SetIndeterminateShiftsOfShiftAlgebra( S, shift );
1442+
1443+
if d > 0 then
1444+
SetIsLeftArtinian( S, false );
1445+
SetIsRightArtinian( S, false );
1446+
fi;
1447+
1448+
SetIsLeftNoetherian( S, true );
1449+
SetIsRightNoetherian( S, true );
1450+
1451+
if HasIsIntegralDomain( r ) and IsIntegralDomain( r ) then
1452+
SetIsIntegralDomain( S, true );
1453+
fi;
1454+
1455+
if d > 0 then
1456+
SetIsLeftPrincipalIdealRing( S, false );
1457+
SetIsRightPrincipalIdealRing( S, false );
1458+
SetIsPrincipalIdealRing( S, false );
1459+
fi;
1460+
1461+
SetBasisAlgorithmRespectsPrincipalIdeals( S, true );
1462+
1463+
end );
1464+
1465+
##
1466+
InstallMethod( SetRingProperties,
1467+
"for homalg rings",
1468+
[ IsHomalgRing and IsRationalShiftAlgebra, IsHomalgRing and IsFreePolynomialRing, IsList ],
1469+
1470+
function( S, R, shift )
1471+
local r, b, param, paramS, var, d;
1472+
1473+
r := CoefficientsRing( R );
1474+
1475+
if HasBaseRing( R ) then
1476+
b := BaseRing( R );
1477+
else
1478+
b := r;
1479+
fi;
1480+
1481+
var := IndeterminatesOfPolynomialRing( R );
1482+
var := List( var, a -> a / S );
1483+
1484+
d := Length( var );
1485+
1486+
if d > 0 then
1487+
SetIsFinite( S, false );
1488+
fi;
1489+
1490+
SetCoefficientsRing( S, r );
1491+
1492+
if HasRationalParameters( r ) then
1493+
param := RationalParameters( r );
1494+
paramS := List( param, a -> a / S );
1495+
Perform( [ 1 .. Length( param ) ], function( i ) SetName( paramS[i], Name( param[i] ) ); end );
1496+
SetRationalParameters( S, paramS );
1497+
fi;
1498+
1499+
SetCharacteristic( S, Characteristic( R ) );
1500+
1501+
SetIsCommutative( S, shift = [ ] );
1502+
1503+
SetParametersOfRationalShiftAlgebra( S, var );
1504+
1505+
if HasRelativeIndeterminatesOfPolynomialRing( R ) then
1506+
SetRelativeParametersOfRationalShiftAlgebra(
1507+
S, RelativeIndeterminatesOfPolynomialRing( R ) );
1508+
fi;
1509+
1510+
SetIndeterminateShiftsOfRationalShiftAlgebra( S, shift );
1511+
1512+
if d > 0 then
1513+
SetIsLeftArtinian( S, false );
1514+
SetIsRightArtinian( S, false );
1515+
fi;
1516+
1517+
SetIsLeftNoetherian( S, true );
1518+
SetIsRightNoetherian( S, true );
1519+
1520+
if HasIsIntegralDomain( r ) and IsIntegralDomain( r ) then
1521+
SetIsIntegralDomain( S, true );
1522+
fi;
1523+
1524+
if d > 0 then
1525+
SetIsLeftPrincipalIdealRing( S, false );
1526+
SetIsRightPrincipalIdealRing( S, false );
1527+
SetIsPrincipalIdealRing( S, false );
1528+
fi;
1529+
1530+
SetBasisAlgorithmRespectsPrincipalIdeals( S, true );
1531+
1532+
end );
1533+
13671534
##
13681535
InstallMethod( SetRingProperties,
13691536
"for homalg rings",

MatricesForHomalg/gap/Tools.gi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3726,6 +3726,8 @@ InstallMethod( Coefficients,
37263726
indets := RelativeIndeterminateAntiCommutingVariablesOfExteriorRing( R );
37273727
elif HasIndeterminateAntiCommutingVariablesOfExteriorRing( R ) then
37283728
indets := IndeterminateAntiCommutingVariablesOfExteriorRing( R );
3729+
elif HasIndeterminateShiftsOfShiftAlgebra( R ) then
3730+
indets := IndeterminateShiftsOfShiftAlgebra( R );
37293731
elif HasIndeterminateShiftsOfPseudoDoubleShiftAlgebra( R ) then
37303732
indets := IndeterminateShiftsOfPseudoDoubleShiftAlgebra( R );
37313733
elif HasIndeterminateShiftsOfDoubleShiftAlgebra( R ) then
@@ -3804,6 +3806,8 @@ InstallMethod( Coefficients,
38043806
indets := RelativeIndeterminateAntiCommutingVariablesOfExteriorRing( R );
38053807
elif HasIndeterminateAntiCommutingVariablesOfExteriorRing( R ) then
38063808
indets := IndeterminateAntiCommutingVariablesOfExteriorRing( R );
3809+
elif HasIndeterminateShiftsOfShiftAlgebra( R ) then
3810+
indets := IndeterminateShiftsOfShiftAlgebra( R );
38073811
elif HasIndeterminateShiftsOfPseudoDoubleShiftAlgebra( R ) then
38083812
indets := IndeterminateShiftsOfPseudoDoubleShiftAlgebra( R );
38093813
elif HasIndeterminateShiftsOfDoubleShiftAlgebra( R ) then

RingsForHomalg/PackageInfo.g

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SetPackageInfo( rec(
1111

1212
PackageName := "RingsForHomalg",
1313
Subtitle := "Dictionaries of external rings",
14-
Version := "2024.06-01",
14+
Version := "2024.11-02",
1515
Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ),
1616
License := "GPL-2.0-or-later",
1717

@@ -207,7 +207,7 @@ PackageDoc := rec(
207207
Dependencies := rec(
208208
GAP := ">= 4.12.1",
209209
NeededOtherPackages := [
210-
[ "MatricesForHomalg", ">= 2023.08-01" ],
210+
[ "MatricesForHomalg", ">= 2024.11-02" ],
211211
[ "HomalgToCAS", ">= 2023.08-01" ],
212212
[ "GaussForHomalg", ">= 2023.08-01" ],
213213
[ "GAPDoc", ">= 1.0" ]

0 commit comments

Comments
 (0)