Source: https://www.cril.univ-artois.fr/~sais/cours/prologCours2.pdf