Source: https://dms.umontreal.ca/~giroux/documents/analyse2_00.pdf