Skip to content

Commit a8c49f4

Browse files
Merge pull request #35 from mohamed-barakat/DimShift
d&i *WithDimensionShift
2 parents fd6bb3d + 921d6d5 commit a8c49f4

4 files changed

Lines changed: 226 additions & 2 deletions

File tree

PackageInfo.g

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

1111
PackageName := "LoopIntegrals",
1212
Subtitle := "Compute master integrals using commutative and noncommutative methods from computational algebraic geometry",
13-
Version := "2024.10-01",
13+
Version := "2024.10-02",
1414

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

examples/1LoopBox.g

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,17 @@ Display( gen2 );
123123
prel2 := ColumnReversedMatrixOfCoefficientsOfParametricIBPs( LD, 2 );
124124
#! [ <A non-zero 7 x 11 matrix over an external ring>,
125125
#! [ D1_*D3_, D1_*D4_, D2_*D4_, D3_*D4_, D1_, D2_, D3_, D4_, 1, D1, D2 ] ]
126+
dibps := MatrixOfIBPRelationsWithDimensionShift( LD );
127+
#! <An unevaluated 5 x 1 matrix over a residue class ring>
128+
Display( dibps );
129+
#! -a2*D1*D2_-s12*a3*D3_-a3*D1*D3_-a4*D1*D4_+d-2*a1-a2-a3-a4,
130+
#! _[2,1],
131+
#! _[3,1],
132+
#! _[4,1],
133+
#! D^2-a1*D1_-a2*D2_-a3*D3_-a4*D4_
134+
#!
135+
#! modulo [ D4*D4_-1, D3*D3_-1, D2*D2_-1, D1*D1_-1, D*D_-1 ]
136+
HomalgRing( dibps );
137+
#! Q[s12,s14][d,a1,a2,a3,a4]<D,D_,D1,D1_,D2,D2_,D3,D3_,D4,D4_>
138+
#! /( D4*D4_-1, D3*D3_-1, D2*D2_-1, D1*D1_-1, D*D_-1 )
126139
#! @EndExample

gap/LoopIntegrals.gd

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ DeclareAttribute( "RingOfPropagatorsAndNumeratorsAndExtraLorentzInvariants",
169169
DeclareAttribute( "RingOfLoopDiagram",
170170
IsLoopDiagram );
171171

172+
#! @Arguments LD
173+
DeclareAttribute( "RingOfLoopDiagramWithDimensionShift",
174+
IsLoopDiagram );
175+
172176
#! @Arguments LD
173177
DeclareAttribute( "ReductionMatrixOfPropagatorsAndNumeratorsAndExtraLorentzInvariants",
174178
IsLoopDiagram );
@@ -201,6 +205,10 @@ DeclareAttribute( "IBPGeneratingMatrixOfLoopDiagramInPropagators",
201205
DeclareAttribute( "MatrixOfIBPRelations",
202206
IsLoopDiagram );
203207

208+
#! @Arguments LD
209+
DeclareAttribute( "MatrixOfIBPRelationsWithDimensionShift",
210+
IsLoopDiagram );
211+
204212
#! @Arguments LD
205213
DeclareAttribute( "BasisOfIBPRelations",
206214
IsLoopDiagram );
@@ -348,10 +356,18 @@ DeclareOperation( "DivergenceOfCoefficientsVectorOfLoopDiagram",
348356
DeclareOperation( "DoubleShiftAlgebra",
349357
[ IsHomalgRing ] );
350358

359+
#! @Arguments R
360+
DeclareOperation( "DoubleShiftAlgebraWithDimensionShift",
361+
[ IsHomalgRing ] );
362+
351363
#! @Arguments R
352364
DeclareOperation( "RationalDoubleShiftAlgebra",
353365
[ IsHomalgRing ] );
354366

367+
#! @Arguments R
368+
DeclareOperation( "RationalDoubleShiftAlgebraWithDimensionShift",
369+
[ IsHomalgRing ] );
370+
355371
#! @Arguments vec, LD
356372
DeclareOperation( "IBPRelation",
357373
[ IsHomalgMatrix, IsLoopDiagram ] );

gap/LoopIntegrals.gi

Lines changed: 196 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ InstallValue( LOOP_INTEGRALS,
1111
DualSymbol := "z",
1212
Dimension := 1,
1313
DimensionSymbol := "d",
14+
DimensionShiftSymbol := "D",
1415
PropagatorSymbol := "D",
1516
NumeratorSymbol := "N",
1617
ExponentSymbol := "a",
@@ -851,6 +852,52 @@ InstallMethod( RingOfLoopDiagram,
851852

852853
end );
853854

855+
##
856+
InstallMethod( RingOfLoopDiagramWithDimensionShift,
857+
[ IsLoopDiagram and HasRelationsOfExternalMomenta and HasPropagators and HasNumerators and HasExtraLorentzInvariants ],
858+
859+
function( LD )
860+
local K, D, Z, R, indets, invariants, propagators, numerators, masses, S;
861+
862+
K := ExtraLorentzInvariants( LD );
863+
D := Propagators( LD );
864+
Z := Numerators( LD );
865+
866+
R := RingOfPropagatorsAndNumeratorsAndExtraLorentzInvariants( LD );
867+
868+
indets := Indeterminates( R );
869+
indets := List( indets, String );
870+
871+
invariants := indets{[ 1 .. Length( K ) ]};
872+
propagators := indets{[ Length( K ) + 1 .. Length( K ) + Length( D ) ]};
873+
numerators := indets{[ Length( K ) + Length( D ) + 1 .. Length( indets ) ]};
874+
875+
indets := Concatenation( propagators, numerators );
876+
877+
masses := List( LD!.masses, String );
878+
879+
invariants := Concatenation( masses, invariants );
880+
881+
if LD!.rational then
882+
883+
invariants := JoinStringsWithSeparator( invariants );
884+
885+
S := LOOP_INTEGRALS.ConstructorOfDefaultField( invariants, R );
886+
887+
S := S * indets;
888+
889+
else
890+
891+
S := LOOP_INTEGRALS.ConstructorOfDefaultField( R ) * invariants;
892+
893+
S := S * indets;
894+
895+
fi;
896+
897+
return S;
898+
899+
end );
900+
854901
##
855902
InstallMethod( ReductionMatrixOfPropagatorsAndNumeratorsAndExtraLorentzInvariants,
856903
[ IsLoopDiagram and HasRelationsOfExternalMomenta and HasPropagators and HasNumerators and HasExtraLorentzInvariants ],
@@ -1085,12 +1132,63 @@ InstallMethod( DoubleShiftAlgebra,
10851132

10861133
end );
10871134

1135+
##
1136+
InstallMethod( DoubleShiftAlgebraWithDimensionShift,
1137+
[ IsHomalgRing ],
1138+
1139+
function( R )
1140+
local Ds, c, D_s, exponents, B, A, shifts, pairs, Y;
1141+
1142+
if IsBound( R!.DoubleShiftAlgebraWithDimensionShift ) then
1143+
return R!.DoubleShiftAlgebraWithDimensionShift;
1144+
fi;
1145+
1146+
Ds := RelativeIndeterminatesOfPolynomialRing( R );
1147+
1148+
c := Length( Ds );
1149+
1150+
Ds := List( Ds, String );
1151+
1152+
Ds := Concatenation( [ LOOP_INTEGRALS!.DimensionShiftSymbol ], Ds );
1153+
1154+
D_s := List( Ds, D -> Concatenation( D, "_" ) );
1155+
1156+
exponents := List( [ 1 .. c ], i -> Concatenation( LOOP_INTEGRALS.ExponentSymbol, String( i ) ) );
1157+
1158+
exponents := Concatenation( [ LOOP_INTEGRALS!.DimensionSymbol ], exponents );
1159+
1160+
B := BaseRing( R );
1161+
1162+
A := B * JoinStringsWithSeparator( exponents );
1163+
1164+
if IsIdenticalObj( ValueOption( "pairs" ), false ) then
1165+
shifts := Concatenation( Ds, D_s );
1166+
pairs := false;
1167+
else
1168+
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
1169+
pairs := true;
1170+
fi;
1171+
1172+
Y := DoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );
1173+
1174+
Y!.Ds := Ds;
1175+
Y!.D_s := D_s;
1176+
1177+
AmbientRing( Y )!.Ds := Ds;
1178+
AmbientRing( Y )!.D_s := D_s;
1179+
1180+
R!.DoubleShiftAlgebraWithDimensionShift := Y;
1181+
1182+
return Y;
1183+
1184+
end );
1185+
10881186
##
10891187
InstallMethod( RationalDoubleShiftAlgebra,
10901188
[ IsHomalgRing ],
10911189

10921190
function( R )
1093-
local Q, r, Ds, D_s, c, exponents, B, A, shifts, pairs, Y;
1191+
local Q, Ds, D_s, c, exponents, B, A, shifts, pairs, Y;
10941192

10951193
if IsBound( R!.RationalDoubleShiftAlgebra ) then
10961194
return R!.RationalDoubleShiftAlgebra;
@@ -1134,6 +1232,59 @@ InstallMethod( RationalDoubleShiftAlgebra,
11341232

11351233
end );
11361234

1235+
##
1236+
InstallMethod( RationalDoubleShiftAlgebraWithDimensionShift,
1237+
[ IsHomalgRing ],
1238+
1239+
function( R )
1240+
local Q, Ds, c, D_s, exponents, B, A, shifts, pairs, Y;
1241+
1242+
if IsBound( R!.RationalDoubleShiftAlgebraWithDimensionShift ) then
1243+
return R!.RationalDoubleShiftAlgebraWithDimensionShift;
1244+
fi;
1245+
1246+
Q := HomalgFieldOfRationalsInMaple();
1247+
1248+
B := Q * List( Indeterminates( BaseRing( R ) ), String );
1249+
1250+
Ds := RelativeIndeterminatesOfPolynomialRing( R );
1251+
1252+
c := Length( Ds );
1253+
1254+
Ds := List( Ds, String );
1255+
1256+
Ds := Concatenation( [ LOOP_INTEGRALS!.DimensionShiftSymbol ], Ds );
1257+
1258+
D_s := List( Ds, D -> Concatenation( D, "_" ) );
1259+
1260+
exponents := List( [ 1 .. c ], i -> Concatenation( LOOP_INTEGRALS.ExponentSymbol, String( i ) ) );
1261+
1262+
exponents := Concatenation( [ LOOP_INTEGRALS!.DimensionSymbol ], exponents );
1263+
1264+
A := B * JoinStringsWithSeparator( exponents );
1265+
1266+
if IsIdenticalObj( ValueOption( "pairs" ), false ) then
1267+
shifts := Concatenation( Ds, D_s );
1268+
pairs := false;
1269+
else
1270+
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
1271+
pairs := true;
1272+
fi;
1273+
1274+
Y := RationalDoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );
1275+
1276+
Y!.Ds := Ds;
1277+
Y!.D_s := D_s;
1278+
1279+
AmbientRing( Y )!.Ds := Ds;
1280+
AmbientRing( Y )!.D_s := D_s;
1281+
1282+
R!.RationalDoubleShiftAlgebraWithDimensionShift := Y;
1283+
1284+
return Y;
1285+
1286+
end );
1287+
11371288
##
11381289
InstallMethod( AssociatedWeylAlgebra,
11391290
[ IsLoopDiagram and HasRelationsOfExternalMomenta and HasPropagators and HasNumerators and HasExtraLorentzInvariants ],
@@ -1278,6 +1429,50 @@ InstallMethod( MatrixOfIBPRelations,
12781429

12791430
end );
12801431

1432+
##
1433+
InstallMethod( MatrixOfIBPRelationsWithDimensionShift,
1434+
[ IsLoopDiagram and HasRelationsOfExternalMomenta and HasPropagators and HasNumerators and HasExtraLorentzInvariants ],
1435+
1436+
function( LD )
1437+
local R, Y, exponents, c, D_s, oper, k, T, U, S, map, ibps, YDpol, relation;
1438+
1439+
R := RingOfLoopDiagram( LD );
1440+
1441+
Y := DoubleShiftAlgebra( R );
1442+
1443+
## [ "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9" ]
1444+
exponents := RelativeIndeterminatesOfPolynomialRing( BaseRing( Y ) );
1445+
exponents := List( exponents, String );
1446+
1447+
## n + z
1448+
c := Length( exponents );
1449+
1450+
## [ "D1_", "D2_", "D3_", "D4_", "D5_", "D6_", "D7_", "N8_", "N9_" ]
1451+
D_s := IndeterminateShiftsOfDoubleShiftAlgebra( Y ){List( [ 1 .. c ], i -> 2 * i )};
1452+
D_s := List( D_s, String );
1453+
1454+
oper := List( [ 1 .. c ], i -> Concatenation( exponents[i], "*", D_s[i] ) );
1455+
1456+
oper := List( [ 1 .. c ], i -> oper[i] / Y );
1457+
1458+
k := CoefficientsRing( R );
1459+
1460+
U := SymanzikPolynomials( LD )[1];
1461+
1462+
S := k * List( RelativeIndeterminatesOfPolynomialRing( HomalgRing( U ) ), String );
1463+
1464+
map := RingMap( List( oper, D -> D / Y ), S, Y );
1465+
1466+
YDpol := DoubleShiftAlgebraWithDimensionShift( RingOfLoopDiagramWithDimensionShift( LD ) );
1467+
1468+
relation := ( LOOP_INTEGRALS!.DimensionShiftSymbol / YDpol ) ^ 2 - Pullback( map, U ) / YDpol;
1469+
1470+
ibps := MatrixOfIBPRelations( LD );
1471+
1472+
return UnionOfRows( YDpol * ibps, HomalgMatrix( [ relation ], 1, 1, YDpol ) );
1473+
1474+
end );
1475+
12811476
##
12821477
InstallMethod( MatrixOfIBPRelations,
12831478
[ IsLoopDiagram and HasRelationsOfExternalMomenta and HasPropagators and HasNumerators and HasExtraLorentzInvariants, IsList ],

0 commit comments

Comments
 (0)