Source: https://www.cse.wustl.edu/~cytron/547Pages/f14/IntroToProofs_Final.pdf