Source: https://sites.math.northwestern.edu/~mlerma/courses/cs310-05s/notes/dm-logic.pdf