Computer algebra system to simplify huge rational functions (of order 100 Mbytes)

I have a huge rational function of three variables (which is of order ~100Mbytes if dumped to a text file) which I believe to be identically zero. Unfortunately, neither Mathematica nor Maple succeeded in simplifying the expression to zero.

I substituted a random set of three integers to the rational function and indeed it evaluated to zero; but just for curiosity, I would like to use a computer algebra system to simplify it. Which computer algebra system should I use? I’ve heard of Magma, Macaulay2, singular, GAP, sage to list a few. Which is best suited to simplify a huge rational expression?


In case you want to try simplifying the expressions yourself, I dumped available in two notations, Mathematica notation and Maple notation. Unzip the file and do

<<"big.mathematica"

or

read("big.maple")

from the interactive shell. This loads expressions called gauge and cft, both rational functions of a1, a2 and b. Each of which is non-zero, but I believe gauge=cft. So you should be able to simplify gauge-cft to zero. The relation comes from a string duality, see e.g. this paper by M. Taki.

Solutions Collecting From Web of "Computer algebra system to simplify huge rational functions (of order 100 Mbytes)"

Mathematica can actually prove that gauge-cft is exactly zero.

To carry out the proof observe that expression for gauge is much smaller than the cft. Hence we first canonicalize gauge using Together, and then multiply cft by it denominator:

enter image description here

For highly recursive rational expressions it is better to factor. Here is a Maple program that does it in 3 minutes on a Core i7 2600, suggested by Mike Monagan:

rec := proc(a) option remember;
  if type(a,{`*`,`+`}) then
    factor(map(rec, a));
  elif type(a,`^`) then
    rec(op(1,a))^op(2,a);
  else a;
  end if;
end proc:

read "big.maple":
CodeTools:-Usage(rec(gauge - cft));  # returns zero
memory used=24.06GiB, alloc change=276.79MiB, cpu time=3.53m, real time=3.00m