Source: http://lacl.univ-paris12.fr/cegielski/struct/ch1.pdf