Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ SetPackageInfo( rec(

PackageName := "LoopIntegrals",
Subtitle := "Compute master integrals using commutative and noncommutative methods from computational algebraic geometry",
Version := "2024.11-01",
Version := "2024.11-02",

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)( ),

Expand Down
16 changes: 16 additions & 0 deletions gap/LoopIntegrals.gd
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,14 @@ DeclareOperation( "DoubleShiftAlgebra",
DeclareOperation( "DoubleShiftAlgebraWithDimensionShift",
[ IsHomalgRing ] );

#! @Arguments R
DeclareOperation( "DoubleShiftAlgebraWithReverseOrder",
[ IsHomalgRing ] );

#! @Arguments R
DeclareOperation( "DoubleShiftAlgebraWithDimensionShiftAndReverseOrder",
[ IsHomalgRing ] );

#! @Arguments R
DeclareOperation( "RationalDoubleShiftAlgebra",
[ IsHomalgRing ] );
Expand All @@ -368,6 +376,14 @@ DeclareOperation( "RationalDoubleShiftAlgebra",
DeclareOperation( "RationalDoubleShiftAlgebraWithDimensionShift",
[ IsHomalgRing ] );

#! @Arguments R
DeclareOperation( "RationalDoubleShiftAlgebraWithReverseOrder",
[ IsHomalgRing ] );

#! @Arguments R
DeclareOperation( "RationalDoubleShiftAlgebraWithDimensionShiftAndReverseOrder",
[ IsHomalgRing ] );

#! @Arguments vec, LD
DeclareOperation( "IBPRelation",
[ IsHomalgMatrix, IsLoopDiagram ] );
Expand Down
240 changes: 196 additions & 44 deletions gap/LoopIntegrals.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1090,10 +1090,18 @@
[ IsHomalgRing ],

function( R )
local Ds, D_s, c, exponents, B, A, shifts, pairs, Y;
local reverse, Ds, D_s, c, exponents, B, A, shifts, pairs, Y;

if IsBound( R!.DoubleShiftAlgebra ) then
return R!.DoubleShiftAlgebra;
reverse := ValueOption( "reverse" );

if not reverse = true then
if IsBound( R!.DoubleShiftAlgebra ) then
return R!.DoubleShiftAlgebra;
fi;
else
if IsBound( R!.DoubleShiftAlgebraWithReverseOrder ) then
return R!.DoubleShiftAlgebraWithReverseOrder;
fi;

Check warning on line 1104 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1102-L1104

Added lines #L1102 - L1104 were not covered by tests
fi;

Ds := RelativeIndeterminatesOfPolynomialRing( R );
Expand All @@ -1110,23 +1118,43 @@

A := B * JoinStringsWithSeparator( exponents );

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
if not reverse = true then

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
else

Check warning on line 1126 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1124-L1126

Added lines #L1124 - L1126 were not covered by tests
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;
fi;

Y := DoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( D_s, Ds );
pairs := false;
else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d_, d ] ) );
pairs := true;
fi;

Check warning on line 1141 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1135-L1141

Added lines #L1135 - L1141 were not covered by tests

Y := DoubleShiftAlgebra( A, shifts : steps := 1, pairs := pairs );

Check warning on line 1143 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1143

Added line #L1143 was not covered by tests

fi;

Y := DoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

Y!.Ds := Ds;
Y!.D_s := D_s;

AmbientRing( Y )!.Ds := Ds;
AmbientRing( Y )!.D_s := D_s;

R!.DoubleShiftAlgebra := Y;
if not reverse = true then
R!.DoubleShiftAlgebra := Y;
else
R!.DoubleShiftAlgebraWithReverseOrder := Y;

Check warning on line 1156 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1156

Added line #L1156 was not covered by tests
fi;

return Y;

Expand All @@ -1137,10 +1165,18 @@
[ IsHomalgRing ],

function( R )
local Ds, c, D_s, exponents, B, A, shifts, pairs, Y;
local reverse, Ds, c, D_s, exponents, B, A, shifts, pairs, Y;

reverse := ValueOption( "reverse" );

if IsBound( R!.DoubleShiftAlgebraWithDimensionShift ) then
return R!.DoubleShiftAlgebraWithDimensionShift;
if not reverse = true then
if IsBound( R!.DoubleShiftAlgebraWithDimensionShift ) then
return R!.DoubleShiftAlgebraWithDimensionShift;

Check warning on line 1174 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1174

Added line #L1174 was not covered by tests
fi;
else
if IsBound( R!.DoubleShiftAlgebraWithDimensionShiftAndReverseOrder ) then
return R!.DoubleShiftAlgebraWithDimensionShiftAndReverseOrder;
fi;

Check warning on line 1179 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1177-L1179

Added lines #L1177 - L1179 were not covered by tests
fi;

Ds := RelativeIndeterminatesOfPolynomialRing( R );
Expand All @@ -1161,37 +1197,85 @@

A := B * JoinStringsWithSeparator( exponents );

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
if not reverse = true then

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
else

Check warning on line 1205 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1203-L1205

Added lines #L1203 - L1205 were not covered by tests
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;
fi;

Y := DoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( D_s, Ds );
pairs := false;
else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d_, d ] ) );
pairs := true;
fi;

Check warning on line 1220 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1214-L1220

Added lines #L1214 - L1220 were not covered by tests

Y := DoubleShiftAlgebra( A, shifts : steps := 1, pairs := pairs );

Check warning on line 1222 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1222

Added line #L1222 was not covered by tests

fi;

Y := DoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

Y!.Ds := Ds;
Y!.D_s := D_s;

AmbientRing( Y )!.Ds := Ds;
AmbientRing( Y )!.D_s := D_s;

R!.DoubleShiftAlgebraWithDimensionShift := Y;
if not reverse = true then
R!.DoubleShiftAlgebraWithDimensionShift := Y;
else
R!.DoubleShiftAlgebraWithDimensionShiftAndReverseOrder := Y;

Check warning on line 1235 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1235

Added line #L1235 was not covered by tests
fi;

return Y;

end );

##
InstallMethod( DoubleShiftAlgebraWithReverseOrder,
[ IsHomalgRing ],

function( R )

return DoubleShiftAlgebra( R : reverse := true );

Check warning on line 1248 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1248

Added line #L1248 was not covered by tests

end );

##
InstallMethod( DoubleShiftAlgebraWithDimensionShiftAndReverseOrder,
[ IsHomalgRing ],

function( R )

return DoubleShiftAlgebraWithDimensionShift( R : reverse := true );

Check warning on line 1258 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1258

Added line #L1258 was not covered by tests

end );

##
InstallMethod( RationalDoubleShiftAlgebra,
[ IsHomalgRing ],

function( R )
local Q, Ds, D_s, c, exponents, B, A, shifts, pairs, Y;
local Q, r, Ds, D_s, c, exponents, B, A, reverse, shifts, pairs, Y;

if IsBound( R!.RationalDoubleShiftAlgebra ) then
return R!.RationalDoubleShiftAlgebra;
reverse := ValueOption( "reverse" );

Check warning on line 1269 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1269

Added line #L1269 was not covered by tests

if not reverse = true then
if IsBound( R!.RationalDoubleShiftAlgebra ) then
return R!.RationalDoubleShiftAlgebra;
fi;

Check warning on line 1274 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1271-L1274

Added lines #L1271 - L1274 were not covered by tests
else
if IsBound( R!.RationalDoubleShiftAlgebraWithReverseOrder ) then
return R!.RationalDoubleShiftAlgebraWithReverseOrder;
fi;

Check warning on line 1278 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1276-L1278

Added lines #L1276 - L1278 were not covered by tests
fi;

Q := HomalgFieldOfRationalsInMaple();
Expand All @@ -1210,23 +1294,43 @@

A := B * JoinStringsWithSeparator( exponents );

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
if not reverse = true then

Check warning on line 1297 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1297

Added line #L1297 was not covered by tests

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;
fi;

Check warning on line 1305 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1299-L1305

Added lines #L1299 - L1305 were not covered by tests

Y := RationalDoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

Check warning on line 1307 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1307

Added line #L1307 was not covered by tests

else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( D_s, Ds );
pairs := false;
else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d_, d ] ) );
pairs := true;
fi;

Check warning on line 1317 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1311-L1317

Added lines #L1311 - L1317 were not covered by tests

Y := RationalDoubleShiftAlgebra( A, shifts : steps := 1, pairs := pairs );

Check warning on line 1319 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1319

Added line #L1319 was not covered by tests

fi;

Y := RationalDoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

Y!.Ds := Ds;
Y!.D_s := D_s;

AmbientRing( Y )!.Ds := Ds;
AmbientRing( Y )!.D_s := D_s;

R!.RationalDoubleShiftAlgebra := Y;
if not reverse = true then
R!.RationalDoubleShiftAlgebra := Y;

Check warning on line 1330 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1329-L1330

Added lines #L1329 - L1330 were not covered by tests
else
R!.RationalDoubleShiftAlgebraWithReverseOrder := Y;
fi;

Check warning on line 1333 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1332-L1333

Added lines #L1332 - L1333 were not covered by tests

return Y;

Expand All @@ -1237,10 +1341,18 @@
[ IsHomalgRing ],

function( R )
local Q, Ds, c, D_s, exponents, B, A, shifts, pairs, Y;
local reverse, Q, Ds, c, D_s, exponents, B, A, shifts, pairs, Y;

reverse := ValueOption( "reverse" );

Check warning on line 1346 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1346

Added line #L1346 was not covered by tests

if IsBound( R!.RationalDoubleShiftAlgebraWithDimensionShift ) then
return R!.RationalDoubleShiftAlgebraWithDimensionShift;
if not reverse = true then
if IsBound( R!.RationalDoubleShiftAlgebraWithDimensionShift ) then
return R!.RationalDoubleShiftAlgebraWithDimensionShift;
fi;

Check warning on line 1351 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1348-L1351

Added lines #L1348 - L1351 were not covered by tests
else
if IsBound( R!.RationalDoubleShiftAlgebraWithDimensionShiftAndReverseOrder ) then
return R!.RationalDoubleShiftAlgebraWithDimensionShiftAndReverseOrder;
fi;

Check warning on line 1355 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1353-L1355

Added lines #L1353 - L1355 were not covered by tests
fi;

Q := HomalgFieldOfRationalsInMaple();
Expand All @@ -1263,28 +1375,68 @@

A := B * JoinStringsWithSeparator( exponents );

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
if not reverse = true then

Check warning on line 1378 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1378

Added line #L1378 was not covered by tests

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( Ds, D_s );
pairs := false;
else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;
fi;

Check warning on line 1386 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1380-L1386

Added lines #L1380 - L1386 were not covered by tests

Y := RationalDoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

Check warning on line 1388 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1388

Added line #L1388 was not covered by tests

else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d, d_ ] ) );
pairs := true;

if IsIdenticalObj( ValueOption( "pairs" ), false ) then
shifts := Concatenation( D_s, Ds );
pairs := false;
else
shifts := Concatenation( ListN( Ds, D_s, {d, d_} -> [ d_, d ] ) );
pairs := true;
fi;

Check warning on line 1398 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1392-L1398

Added lines #L1392 - L1398 were not covered by tests

Y := RationalDoubleShiftAlgebra( A, shifts : steps := 1, pairs := pairs );

Check warning on line 1400 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1400

Added line #L1400 was not covered by tests

fi;

Y := RationalDoubleShiftAlgebra( A, shifts : steps := -1, pairs := pairs );

Y!.Ds := Ds;
Y!.D_s := D_s;

AmbientRing( Y )!.Ds := Ds;
AmbientRing( Y )!.D_s := D_s;

R!.RationalDoubleShiftAlgebraWithDimensionShift := Y;
if not reverse = true then
R!.RationalDoubleShiftAlgebraWithDimensionShift := Y;

Check warning on line 1411 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1410-L1411

Added lines #L1410 - L1411 were not covered by tests
else
R!.RationalDoubleShiftAlgebraWithDimensionShiftAndReverseOrder := Y;
fi;

Check warning on line 1414 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1413-L1414

Added lines #L1413 - L1414 were not covered by tests

return Y;

end );

##
InstallMethod( RationalDoubleShiftAlgebraWithReverseOrder,
[ IsHomalgRing ],

function( R )

return RationalDoubleShiftAlgebra( R : reverse := true );

Check warning on line 1426 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1426

Added line #L1426 was not covered by tests

end );

##
InstallMethod( RationalDoubleShiftAlgebraWithDimensionShiftAndReverseOrder,
[ IsHomalgRing ],

function( R )

return RationalDoubleShiftAlgebraWithDimensionShift( R : reverse := true );

Check warning on line 1436 in gap/LoopIntegrals.gi

View check run for this annotation

Codecov / codecov/patch

gap/LoopIntegrals.gi#L1436

Added line #L1436 was not covered by tests

end );

##
InstallMethod( AssociatedWeylAlgebra,
[ IsLoopDiagram and HasRelationsOfExternalMomenta and HasPropagators and HasNumerators and HasExtraLorentzInvariants ],
Expand Down