Earlier quoted context omitted.
To be even more precise, Prolog programs only ever run forward because the order of evaluation is fixed as top-down, left-to-right. These notions of "forward" and "backward" are very unhelpful and should be given up. Beginners find the order of evaluation hard enough to understand, let's not confuse them even more. Also, the notion is woefully incomplete. Let's say we consider this "forward": ?- list_length([a, b, c]…
What's going on in the second example? Did Prolog generate a list term stuffed with gensym variables, which satisifies the list_length being 3?
Whether this is a "yes" to your question depends on what your mental model of "gensym variables" is. They are variables, not symbols (which Prolog would call atoms).