Currently (in maple 10.04 and presumably earlier), Maple refuses to expand the natural log of an abstract product, so:
v1 := ln( product(x[i], i=1..n) ):
expand(v1) assuming positive;
ln( product(x[i], i=1..n) )
(Note the use of "assuming positive" so this makes sense mathematically.) The funny thing is that, if you
print(`expand/ln`), it looks like they're trying to handle this situation:
elif type(x, 'product'(anything, anything)) then
s := signum(op(1, x));
if s = 1 then sum(ln(op(1, x)), op(2, x))
elif s = 0 then ln(0)
else ln(product(expand(op(1, x)), op(2, x)))
type(x, 'product'(anything,anything)) expression doesn't seem to match a product in any cases that I've found (I tried delayed evaluation, etc.). However, if you replace this elif line with:
elif type(x, 'function') and op(0, x) = product then, then the expand command works perfectly (and yields an abstract sum).
Is this just a bug or am I missing something here? It would also be nice to handle the inert "Product" form.