_G495 signifie qu'une variable (X par exemple) n'a pas encore été unifiée et donc qu'elle est repérée pour l'instant que par cette référence.
_G pour varaible Globale, _L pour varaible locale au traitement, (tout au moins c'est que j'en déduis de cet exemple :
[trace] 1 ?- my_rev([1,2,3], X).
Call: (7) my_rev([1, 2, 3], _G487) ? creep
Call: (8) my_rev([2, 3], _L171) ? creep
Call: (9) my_rev([3], _L191) ? creep
Call: (10) my_rev([], _L211) ? creep
Exit: (10) my_rev([], []) ? creep
Call: (10) append([], [3], _L191) ? creep
Exit: (10) append([], [3], [3]) ? creep
Exit: (9) my_rev([3], [3]) ? creep
Call: (9) append([3], [2], _L171) ? creep
Exit: (9) append([3], [2], [3, 2]) ? creep
Exit: (8) my_rev([2, 3], [3, 2]) ? creep
Call: (8) append([3, 2], [1], _G487) ? creep
Exit: (8) append([3, 2], [1], [3, 2, 1]) ? creep
Exit: (7) my_rev([1, 2, 3], [3, 2, 1]) ? creep
X = [3, 2, 1]
Yes