Source: https://hal.inria.fr/docs/00/32/72/66/PDF/these.pdf