Source: https://hal.umontpellier.fr/public/X2HalUM.pdf