Unification Solutions

Unify, if possible, the following pairs of predicates:

P( g(h(x)) , f(g(h(b))) , f(x) )
P(    y    , f(y)       , z    )

   { g(h(b)) / y , b / x , f(b) / z }

P( g(h(x)) , f(h(y)) ,  y   )
P( g(z)    , f(z)    , h(a) )

   { h(a) / x , h(a) / y , h(h(a)) / z }

P(    x    , h(b) , h(x)          )
P( f(g(y)) ,  y   , h(f(g(h(a)))) )

   Does not unify

P(   x  , g(x)    , z    )
P( f(y) , g(f(b)) , h(y) )

   { f(b) / x , b / y , h(b) / z }

P( f(g(x)) , g(b) , h(x) )
P( f(y)    ,  y   , h(c) )

   Does not unify

P(    x    , h(x)       , h(y) )
P( f(g(z)) , h(f(g(b))) , h(z) )

   { f(g(b)) / x , b / z , b / y }