restart; UT9NYXBsZX5Jbml0aWFsaXphdGlvbn5sb2FkZWQuLi42Ig== kernelopts(version); SWpuTWFwbGV+MjAxNS4xLH5BUFBMRX5VTklWRVJTQUx+T1NYLH5KdW5+M34yMDE1LH5CdWlsZH5JRH4xMDQ5MDA3RzYi This one works as expected: solve({x + y = 5, x - y = 3}); PCQvSSJ4RzYiIiIlL0kieUdGJSIiIg== This one fails: solve({x(0) + y(0) = 5, x(0) - y(0) = 3}); That shouldn't fail. According to ?solve,details, under the Description heading, it says that the unknowns may be a name or a function. Note that type(x(0), function); SSV0cnVlRyUqcHJvdGVjdGVkRw== so there seems to be a contradiction. Nevertheless, there is a workaround: solve({x(0) + y(0) = 5, x(0) - y(0) = 3}, {x(0), y(0)}); PCQvLUkieEc2IjYjIiIhIiIlLy1JInlHRiZGJyIiIg== infolevel[fsolve]:=3; IiIk Now try with fsolve(). This one works as expected: fsolve({x + y = 5, x - y = 3}); PCQvSSJ4RzYiJCIiJSIiIS9JInlHRiUkIiIiRig= This one fails: fsolve([x(0) + y(0) = 5, x(0) - y(0) = 3]); fsolve: Warning: no solutions found But the previous workaround does not help: fsolve([x(0) + y(0) = 5, x(0) - y(0) = 3], {x(0), y(0)}); fsolve: Warning: no solutions found frontend(fsolve,[{x(0)+y(0)=5,x(0)-y(0)=3},{x(0),y(0)}],[{`+`,`*`,`=`,'set'},{}]); PCQvLUkieEc2IjYjIiIhJCIiJUYoLy1JInlHRiZGJyQiIiJGKA== I can temporarily rename the variables to plain symbols, or perhaps freeze/thaw them. But is there a simpler workaround?