% L2 % Q1 fibonacci(0,1). fibonacci(1,1). fibonacci(X,Y):- X > 1, N is X - 1, M is X - 2, fibonacci(N,R), fibonacci(M,S), Y is S +R. % Q2 fibiter(X,Y):- fibiter(X,Y,1,1). fibiter(0,X,X,_). fibiter(X,Y,Z,V):- X >0, M is X -1, NV is Z + V, fibiter(M,Y,V,NV). % Q3 pgcd(A,0,A):-!. pgcd(A,A,A):-!. pgcd(0,A,A):-!. pgcd(A,B,X):- A > B, C is A mod B, pgcd(C,B,X). pgcd(A,B,X):- B > A, C is B mod A, pgcd(A,C,X). % L3 % Q2 member(X,[X|_]). member(X,[_|L]) :- member(X,L). % Q3 subset([],_). subset(L1,L2):- [X | L] = L1, member(X,L2), subset(L,L2). % Q4 sublist(_,[]):-false. sublist([],_). sublist([X | L1],[Y | L2]):- X = Y, subset(L1,L2). sublist([X | L1],[Y | L2]):- X \= Y, subset([X | L1],L2).