PROLOG
antepassado(X, Z) :- progenitor(X, Z).
Uma vez que o objetivo é antepassado(joão, íris), as variáveis na regra devem ser instanciadas por X=joão e Y=íris. O objetivo inicial, antepassado(joão, íris) é então substituído por um novo objetivo:
Não há, entretanto, nenhuma cláusula no programa cuja cabeça possa ser unificada com progenitor(joão, íris), logo este objetivo falha. Então o Prolog retorna ao objetivo original (backtracking) para tentar um caminho alternativo que permita derivar o objetivo antepassado(joão, íris). A regra [pr2] é então tentada: