Pagina 1 di 1

Predicato Prolog deduci

MessaggioInviato: 06/02/2019, 18:21
da #Fede
Ciao ragazzi,

qualcuno potrebbe aiutarmi con questo esercizio in Prolog?

Scrivere un predicato Prolog deduci(R,B,B1) che riceva in input una lista di regole R e una lista di fatti B, e che produca in output una nuova lista di fatti B1 ottenuta da B applicando tutte le regole di R fino al raggiungimento di un punto fisso. Ogni regola R viene espressa mediante un simbolo di funzione regola(Cs,D) in cui il primo argomento Cs è una lista di condizioni che, se verificate congiuntamente, rendono vero il secondo argomento D. Ad esempio:

? - deduci( [regola ([p(X), q(X)] , r(X) ) )] , [p(a), p(b), q(a)], B1).

X = a, B1 = [r(a), p(a), p(b), q(a)]

? - deduci( [regola ([p(X), q(X)] , r(X) ) )] , regola([r(Y)], q(b)), [p(a), p(b), q(a)], B1).

X = Y, Y=a, B1 = [q(b), r(a), p(a), p(b), q(a)]

Grazie mille!