Source: http://www.cs.technion.ac.il/users/yechiel/Base/CS/Base/MaTaM/03lectures/PDF/m07_OPO.pdf