lista2

/* ritorna.pro */
/* attivazione di FAIL e CUT !   */
/* goal:azione   senza FAIL         */
/* goal:azione1  con FAIL           */
/* goal:azione2  con FAIL CUT rosso */
/* goal:azione3  con CUT rosso FAIL */
/* goal:azione4  con CUT rosso      */
nowarnings
domains
listainteri = integer*
predicates
preleva(listainteri)
azione
azione1
azione2
azione3
azione4
clauses
azione:-
preleva(Lista),
write(Lista,"\n").
azione1:-
preleva(Lista),
write(Lista,"\n"),fail.
azione2:-
preleva(Lista),
write(Lista,"\n"),fail;!.
azione3:-
preleva(Lista),!,
write(Lista,"\n"),fail.
azione4:-
preleva(Lista),!,
write(Lista,"\n").

preleva([1,2,3]).
preleva([4,5,6]).
preleva([7,8,9]).

/* taglia.pro */
/* goal:azione(L)   con CUT rosso */
/* goal:azione1(L)  senza CUT     */
nowarnings
domains
listainteri = integer*
predicates
preleva(listainteri)
azione(listainteri)
azione1(listainteri)
leggi(listainteri)
clauses
azione(Lista):-
preleva(Lista),!.
azione(Lista):-
leggi(Lista).
azione1(Lista):-
preleva(Lista).
azione1(Lista):-
leggi(Lista).
preleva([1,2,3]).
preleva([4,5,6]).
preleva([7,8,9]).
leggi([11,12,13]).
leggi([14,15,16]).
leggi([17,18,19]).