E' possibile introdurre test logici (goal) arbitrari nella parte destra di una rtegola.
Questi goal vanno inseriti fra parentesi graffe {.....}
Esecuzione di goal Prolog
Consideriamo ora il problema di voler introdurre nuovi simboli terminali, per esempio la parola "canarino", tenendo conto delle concordanze; dovremo aggiungere la regola:
sostantivo(singolare,nome(canarino)) ---> [canarino].Se i simboli terminali da introdurre sono in numero elevato, questa scrittura puo` risultare molto pesante e puo`, inoltre, portare ad uno spreco di memoria. Un modo piu` conveniente per gestire questa operazione potrebbe essere quello di separare le informazioni raccogliendo da qualche parte quelle relative a tutti i nomi.
sostantivo(X,nome(Y)) ---> [Y],{isa_nome(Y,X)}.dove il predicato isa_nome esprime quali sono le parole che sono nomi e il loro numero:
isa_nome(canarino,singolare). isa_nome(canarini,plurale).