# 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.

-
Wow, a 100Mbyte expression! Where did it come from? – lhf Sep 4 '11 at 14:03
Would you mind expanding on this "string duality" you speak of? I am now quite curious... – J. M. Sep 4 '11 at 14:41
This is the 3rd term of a conjectured equality; the 1st and the 2nd terms are explained in a published paper arxiv.org/abs/0912.4789 by M. Taki – Yuji Sep 4 '11 at 14:45
If Mathematica and Maple can't simplify it, I would be inclined to believe that it can't be simplified. Rational functions have a canonical representation which is fairly easy to reduce to. – Peter Taylor Sep 4 '11 at 15:54
Well, but the expression is identically zero (as you can check by yourself by putting numerical values). The problem, I believe, is the amount of memory Mathematica or Maple needs. – Yuji Sep 4 '11 at 16:00

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:

-
I'm sorry for my confusing explanation... what's supposed to be zero is gauge-cft. – Yuji Sep 4 '11 at 14:47
@Yuji Please see my updated answer. Computations of Cancel[Denominator[g2]*cft] took about 40 minutes. – Sasha Sep 4 '11 at 18:50
Wow, you're a super expert on Mathematica! ... and I learned you're in fact the kernel developer. I'm honored to meet you. Please implement this trick to FullSimplify :) – Yuji Sep 4 '11 at 19:53

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: