Source: https://www.math.colostate.edu/~hulpke/lectures/m192/proofmodes.pdf