autor('Fulano').
autor('Ciclano').
autor('Beltrano').
autor('Pedro da Silva').
autor('Joao Costa').
artigo(['Joao Costa', 'Pedro da Silva', 'Fulano'], 'Titulo B', [54, 62], 2013).
artigo(['Ciclano', 'Joao Costa'], 'Titulo A', [100, 105], 2014).

titulos(Autor, Lista) :- 
   findall(Titulos, 
           (  artigo(ListaAutores, Titulos, _, _) , 
              ehmembro(Autor, ListaAutores) ) , 
           Lista).

qtd_titulos(Autor, N) :- 
   findall(Titulos, 
           (  artigo(ListaAutores, Titulos, _, _) , 
              ehmembro(Autor, ListaAutores) ) , 
           Lista), listlen(Lista,N).


ehmembro(X,[X|_]).
ehmembro(X,[_|L]) :- ehmembro(X,L).

autores(NomeArtigo, ListaAutores) :- artigo(ListaAutores, NomeArtigo, _, _).


listlen([ ], 0).
listlen([H|T], N) :- listlen(T, N1), N is N1 + 1.
