у меня работает:
?- ((Life==dead)->Trans=no).
false.
?- Life = dead, ((Life == dead) -> Trans=no).
Life = dead,
Trans = no.
Жизнь == мертвых будет правдой только в том случае, если Жизнь уже связана с мертвыми.
Кроме того, это довольно странная конструкция, которая редко требуется на практике, (x -> y; z) встречается гораздо чаще.