Source: http://math.univ-lyon1.fr/~ciuperca/cours-optim-M1SAF.pdf