Source: https://www.irif.fr/~asarin/P7/Perf/corrige.pdf