I think that you would need a CAS, to symbolically solve the system, as you did "by hand". Such SW is neither easy to find nor to build.
If a pragmatic approach can do it for you, library(clprq) could help:
:- [library(clpr)].
solve(X,Y,Z) :- {Y+Z=X, Z*Y=1}.
yields
?- solve(3,Y,Z).
{Z=3.0-Y, -1.0+Z*Y=0.0},
{-1.0+Z*Y=0.0},
{-1.0+Z*Y=0.0}.
does this make sense?