Source: https://www.csie.ntu.edu.tw/~cyy/courses/introCS/20fall/lectures/handouts/lec03_logic_4up.pdf