% Loesung zu Blatt 4 Aufgabe 5

% uhrzeit(H,M)  bezeichnet die Uhrzeit H:M.

% vor(+Uhrzeit,+Uhrzeit)
% vor(U1,U2)  Uhrzeit U1 ist vor Uhrzeit U2
vor(uhrzeit(H1,_),uhrzeit(H2,_)):-
    H1 < H2.
vor(uhrzeit(H,M1),uhrzeit(H,M2)):-
    M1 < M2.

% zug(Z,S1,U1ab,S2,U2an)  Zug Z faehrt in Stadt S1
%     um U1ab Uhr ab und kommt in Stadt S2 um U2an Uhr an.
zug(rj533,wien,uhrzeit(10,30),villach,uhrzeit(14,46)).
zug(rj559,wien,uhrzeit(11,03),bruck,uhrzeit(12,56)).
zug(r1711,bruck,uhrzeit(13,08),friesach,uhrzeit(14,56)).
zug(4241,friesach,uhrzeit(15,08),villach,uhrzeit(16,39)).
zug(rj564,wien,uhrzeit(11,30),salzburg,uhrzeit(13,52)).
zug(ec113,salzburg,uhrzeit(14,12),villach,uhrzeit(16,43)).
zug(rj630,villach,uhrzeit(13,14),wien,uhrzeit(17,27)).

% reise(U1ab,S1,S,Uan)  Es gibt eine Zugreise von S1 nach S
%     mit Abfahrtszeit U1ab und Ankunftszeit Uan.
reise(U1ab,S1,S,Uan):-
    zug(_,S1,U1ab,S,Uan).
reise(U1ab,S1,S,Uan):-
    zug(_,S1,U1ab,S2,U2an),
    zug(_,S2,U2ab,_,_),
    vor(U2an,U2ab),
    reise(U2ab,S2,S,Uan).

% vor0(+Uhrzeit,+Uhrzeit)
% vor0(U1,U2)  Uhrzeit U1 ist vor oder gleich Uhrzeit U2
vor0(uhrzeit(H1,_),uhrzeit(H2,_)):-
    H1 < H2.
vor0(uhrzeit(H,M1),uhrzeit(H,M2)):-
    M1 =< M2.

% ?- reise(U1ab,wien,villach,Uan).
% ?- reise(U1ab,S1,S,Uan), vor0(uhrzeit(11,00),U1ab), vor0(Uan,uhrzeit(17,0)).
