Why can you expand with one unknown but not more?
If I say
expand((x+y)*(x-y)) it says y is not defined, so I define y as 5 and get x^2 - 25
But I never defined x. If it works symbolically for undefined x, why not for y? The expansion would then obviously be x^2 - y^2.