# No Solution For Solve with Free Variable [duplicate]

Mathematica returns no solutions for this simple query:

Solve[a*x == x && x != 0, {x}]
(* output: {} *)


Clearly, when a is 1, any x is a solution. Therefore, I would expect the solution to involve a case distinction over a.

What is Mathematica solving here exactly? I was thinking it would try to find x that satisfies the equation for all a, but then this should not return any solution either (but it does):

Solve[x == a, {x}]
(* output: {{x -> a}} *)

• You can try using Reduce instead of Solve. Commented Sep 8, 2020 at 18:20
• @CarlWoll Using Reduce makes sense for me, thanks for the hint! Still, I would like to understand what Solve does in this case. If I cannot interpret the output of Solve correctly ({} in this case), I will not be able to use it in more complex cases where I cannot verify the result. Commented Sep 8, 2020 at 18:29
• This issue had been discussed several times. For an extended discussion see What is the difference between Reduce and Solve?. Solve without any options cannot yield a full dimensional component while Reduce can. Use MaxExtraConditions->All option in Solve. Commented Sep 8, 2020 at 18:32
• @Artes Perfect, thanks for the pointer (I did not find this before, as I did not know what to look for exactly). My take-away message is that Solve may omit some solutions, unless I provide the flag MaxExtraConditions -> All. Then, my example yields a warning which tells me to try Reduce. Commented Sep 8, 2020 at 18:40
• @Peter Solve is less powerful than Reducein various cases (exceptional or full-dimensional ones). Take a look at the link in my comment. Commented Sep 8, 2020 at 18:50