Source: https://zitt.perso.math.cnrs.fr/preuves-algo-programmes.pdf