Source: https://homepages.laas.fr/arzelier/polycop/insa/sigal03.pdf