Попробуйте это:
%Question1
isUniversity(X) :- rank(X , _).
isUniversity(X) :- students(X , _).
isUniversity(X) :- group_1994(X).
isUniversity(X) :- group_russell(X).
isUniversity(X) :- expense(X,_).
%Question2
isRankedHigher(X , Y) :-
rank(X , R1),
rank(Y , R2),
R1 < R2.
%Question3
listInOrder([_]):-!.
listInOrder([X , Y | Z]):-
isRankedHigher(X , Y),
listInOrder([Y|Z]).
%Question7
total([] , Acc , Acc).
total([X | Xs] , L , Acc):-
students(X , Y) ,
L1 is L + Y ,
total( Xs , L1 , Acc ).
%Use this one for Q7
add_ap_total(List , X) :- total(List , 0 , X).
Это давно, я prolog
-ед, но я думаю, что это работает.Попробуйте работать со списками и делать много упражнений.Помните, что последовательность пунктов имеет значение.Если вы занимаетесь информатикой и хотите получить высшее образование с некоторыми базовыми знаниями, я рекомендую вам погрузиться в пролог, поскольку это хорошая практика для рекурсии.Выучи также C;)
Веселись