The easiest way to find this out is to use either trace/0 or gtrace/0. Since gtrace/0 is rather complex being a GUI, I will just use trace for this example.
?- trace.
true.
[trace] ?- travel_01(valmont,frankfurt,Path).
Call: (10) travel_01(valmont, frankfurt, _4260) ? creep
Call: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], _4520) ?
As you can see trace has shown the call to travel_01_helper/4 with the arguments used as input bound, and the augment used as output unbound. _4520
is a system generated variable which is unbound.
For simple goals, trace/0 can be used with protocol/1. See: Wiki: How to - protocol/1
?- set_prolog_flag(color_term,false).
true.
?- current_prolog_flag(color_term,X).
X = false.
?- working_directory(_,"C:/Users/Eric/Documents/Prolog").
true.
?- leash(-all),visible(+all).
true.
?- protocol("./trace_output.txt").
true.
?- trace.
true.
[trace] ?- travel_01(valmont,frankfurt,Path).
Call: (10) travel_01(valmont, frankfurt, _596)
Unify: (10) travel_01(valmont, frankfurt, _596)
Call: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], _856)
Unify: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], [(_842, frankfurt), (start, valmont)])
Call: (12) byCar(valmont, frankfurt)
Fail: (12) byCar(valmont, frankfurt)
Redo: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], [(_842, frankfurt), (start, valmont)])
Call: (12) byTrain(valmont, frankfurt)
Fail: (12) byTrain(valmont, frankfurt)
Redo: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], [(_842, frankfurt), (start, valmont)])
Call: (12) byPlane(valmont, frankfurt)
Fail: (12) byPlane(valmont, frankfurt)
Redo: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], _856)
Unify: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], _856)
Call: (12) byCar(valmont, _852)
Unify: (12) byCar(valmont, saarbruecken)
Exit: (12) byCar(valmont, saarbruecken)
Call: (12) _850=car
Exit: (12) car=car
Call: (12) travel_01_helper(saarbruecken, frankfurt, [(car, saarbruecken), (start, valmont)], _868)
Unify: (12) travel_01_helper(saarbruecken, frankfurt, [(car, saarbruecken), (start, valmont)], [(_854, frankfurt), (car, saarbruecken), (start, valmont)])
Call: (13) byCar(saarbruecken, frankfurt)
Fail: (13) byCar(saarbruecken, frankfurt)
Redo: (12) travel_01_helper(saarbruecken, frankfurt, [(car, saarbruecken), (start, valmont)], [(_854, frankfurt), (car, saarbruecken), (start, valmont)])
Call: (13) byTrain(saarbruecken, frankfurt)
Unify: (13) byTrain(saarbruecken, frankfurt)
Exit: (13) byTrain(saarbruecken, frankfurt)
Call: (13) _854=train
Exit: (13) train=train
Call: (13) lists:member((_860, frankfurt), [(car, saarbruecken), (start, valmont)])
Unify: (13) lists:member((_860, frankfurt), [(car, saarbruecken), (start, valmont)])
Fail: (13) lists:member((_860, frankfurt), [(car, saarbruecken), (start, valmont)])
Redo: (12) travel_01_helper(saarbruecken, frankfurt, [(car, saarbruecken), (start, valmont)], [(train, frankfurt), (car, saarbruecken), (start, valmont)])
Exit: (12) travel_01_helper(saarbruecken, frankfurt, [(car, saarbruecken), (start, valmont)], [(train, frankfurt), (car, saarbruecken), (start, valmont)])
Exit: (11) travel_01_helper(valmont, frankfurt, [(start, valmont)], [(train, frankfurt), (car, saarbruecken), (start, valmont)])
Call: (11) lists:reverse([(train, frankfurt), (car, saarbruecken), (start, valmont)], _596)
Unify: (11) lists:reverse([(train, frankfurt), (car, saarbruecken), (start, valmont)], _596)
Exit: (11) lists:reverse([(train, frankfurt), (car, saarbruecken), (start, valmont)], [(start, valmont), (car, saarbruecken), (train, frankfurt)])
Exit: (10) travel_01(valmont, frankfurt, [(start, valmont), (car, saarbruecken), (train, frankfurt)])
Path = [(start, valmont), (car, saarbruecken), (train, frankfurt)] .
[trace] ?- nodebug.
true.
?- noprotocol.
true.
?-