Source: https://kiwi.emse.fr/POLE/TP3solveur.pdf