Source: https://hal.inria.fr/docs/00/18/76/12/PDF/These_fin.pdf