Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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




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.

share|cite|improve this question
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 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
up vote 14 down vote accepted

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

share|cite|improve this answer
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
  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
share|cite|improve this answer
Thank you for the new info! – Yuji Jul 19 '13 at 3:44

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.