edge(a,b). edge(b,c). edge(c,d). edge(d,e). edge(a,f). edge(f,g). edge(g,d). edge(g,e). % Aufgabe 3.1 reachable(X,X). reachable(X,Y) :- edge(X,Y); edge(X,Z), reachable(Z,Y). % Aufgabe 3.2 path(X,Y,P) :- path(X,Y,P,_). path(Y,Y,[],0). path(X,Y,[X|[Y]],1) :- X \= Y, edge(X,Y). path(X,Y,[X|P],L1) :- X \= Y, edge(X,Z), reachable(Z,Y), path(Z,Y,P,L), L1 is L+1. % Aufgabe 3.3 % TODO % Aufgabe 3.4 tree([a, [b,nil,[c,[d,nil,nil],nil]], [e,nil,[f,nil,nil]]]). height(nil,0). height([_,A,B],H) :- height(A,HA), height(B,HB), (HA >= HB, H is HA+1; HA < HB, H is HB+1).