# Factorial simplification error

I've run into an issue when running simplify on an equation containing a factorial:

sage: var('n')
sage: z1 =  (-1)^(1/2*(n - 1))*factorial(n) == 0
sage: z2 = 0 == (-1)^(1/2*(n - 1))*factorial(n)
sage: z1.simplify()
n*(-1)^(1/2*n - 1/2) != 0
sage: z2.simplify()
0 == (-1)^(1/2*n - 1/2)*factorial(n)


My best guess is when sage sends the equation down to maxima for simplification it's interpreting

(-1)^(1/2*(n - 1))*n!  =  0


as

(-1)^(1/2*(n - 1))*n   !=   0


Any ideas on how I can work around this?

edit retag close merge delete

Sort by » oldest newest most voted I made this ticket 11539. As a temporary workaround, you can run the following commands which should fix things.

sage.calculus.calculus.maxima.eval(r":lisp (defun msize-factorial (x l r) (setq l (msize (cadr x) (revappend '(#\f #\a #\c #\t #\o #\r #\i #\a #\l #$) l) nil 'mparen 'mparen) r (list 1 #$ ) ) (list (+ (car l) (car r)) l r)) ")
sage.calculus.calculus.maxima.eval(r":lisp (defprop mfactorial msize-factorial grind)")


This changes things in Maxima so that factorial(x) is printed as factorial(x) instead of x!.

more

Here is one option (not the most elegant):

sage: z1.lhs().simplify() == z1.rhs().simplify()
(-1)^(1/2*n - 1/2)*factorial(n) == 0

more