Prolog Listenoperationen: Listenverknüpfung

Hallo zusammen.

Ich stecke beim Verständniss von einigen Listenoperationen fest. Vielleicht findet sich hier jemand der mir das erklären kann. Bin für alles dankbar.

Zum Thema.
Wie das auffinden eines Elementes in einer Liste funktioniert verstehe ich.
Es hackt aber z.B. bei Verkettung von Listen:

app([],L2,L2).
app([X|R1],L2,[X|R3]):- app(R1,L2,R3).

Ich sehe, dass mit jedem Schritt die erste Liste L1 abgebaut wird bis sie leer ist. Aber vohin verschwindet das jeweils 1. Element von L1? Woher taucht aufeinmal das „c“ in Zeile 6 wieder auf? Welche Programmzeile wird wann ausgeführt? Wie ist wann die Belegung der Variablen?

ap([a, b, c], [d, e, f], _G7323)
ap([b, c], [d, e, f], _G7410)
ap([c], [d, e, f], _G7413)
ap([], [d, e, f], _G7416)
ap([], [d, e, f], [d, e, f])
ap([c], [d, e, f], [c, d, e, f])
ap([b, c], [d, e, f], [b, c, d, e, f])
ap([a, b, c], [d, e, f], [a, b, c, d, e, f])

WIe ihr seht, es brennt an mehreren Stellen. :smile:

MfG
Vitali