tarea(a, 'Levantar Muros', 7, []).
tarea(b, 'Carpintería de tejado', 3, [a]).
tarea(c, 'Poner tejado', 1, [b]).
tarea(d, 'Instalación eléctrica', 8, [a]).
tarea(e, 'Pintado fachada', 2, [c,d]).
tarea(f, 'Ventanas', 1, [c,d]).
tarea(g, 'Jardín', 1, [c,d]).
tarea(h, 'Techado', 3, [a]).
tarea(i, 'Pintado interior', 2, [f,h]).

identificadores:-
  findall(X, tarea(X, _, _, _), L),
  write(L).

descripciones:-
  findall(X, tarea(_, X, _, _), L),
  write(L).

duraciones:-
  findall(X, tarea(_, _, X, _), L),
  write(L).

predecesoras:-
  findall(X, tarea(_, _, _, X), L),
  write(L).

sucesores(X) :-
  findall(Y, (tarea(Y, _, _, P), member(X,P)), L),
  write(L).

sucesores:-
  findall(Z, (tarea(Tarea, _, _, _), findall(Suces, (tarea(Suces, _, _, Predec), member(Tarea,Predec)), Z)), L),
  write(L).


sucesoresTupla:-
    findall(succ(Tarea,Z), (tarea(Tarea, _, _, _), findall(Suces, (tarea(Suces, _, _, Predec), member(Tarea,Predec)), Z)), L),
    write(L).

escribeSucesores:-
    tarea(Tarea, NombreTarea, _, _),
    findall(Suc, (tarea(Suc, _, _, Predec), member(Tarea,Predec)), L),
    write('Sucesoras de '), write(NombreTarea), write(': '), write(L),nl,
    fail.

escribeSucesores.

sucesores(Tarea, DuracionMin) :-
  findall(Y, (tarea(Y, _, Duracion, P), Duracion > DuracionMin, member(Tarea,P)), L),
  write(L).
