Hello all, new member here and a little confused too.

We know that transitive closure is not expressible in First Order Logic (search in google and you will find some proofs for that).

Also, Prolog is a subset of First Order Logic, so what cannot be expressed in FOL, cannot be expressed in Prolog too (is this right???)

So, I have come across this Prolog Predicate that computes if two nodes on the graph are connected (transitive closure of the edge predicate)

connected(Source,Target) :- edge(Source,Target).
connected(Source,Target) :-
edge(Source,Intermediate),
connected(Intermediate,Target).

Where's the error???
Thanks.