Source: https://www.polytech.umontpellier.fr/pravo/cours/Logique/Polycops-pdf/Chapitre7.pdf