3-CNF equivalences for simple Boolean expressions. We may use clauses of length 1 or 2, with the understanding that terms will be duplicated as needed so that every clause has 3 terms. a (a) !a (!a) a==b (a||!b)&&(!a||b) a=!b, a!=b (a||b)&&(!a||!b) a&&b (a)&&(b) a||b (a||b) a<=b (!a||b) a==(b&&c) (!a||b)&&(!a||c)&&(a||!b||!c) a==(b||c) (a||!b)&&(a||!c)&&(!a||b||c) a==(b<=c) (a||b)&&(a||!c)&&(!a||!b||c) a==(b==c) (a||b||c)&&(a||!b||!c)&&(!a||b|||!c)&&(!a||!b||c) In-class notation is not the same as C++ notation. We will use "+" to denote "or," while "and" will be denoted by simple justaposition if it's unambiguous, otherwise by a "*". We will also use a double right arrow to denote "implies." Here is the above table using the notation we will use in class: a (a) !a (!a) a=b (a+!b)(!a+b) a=!b, !(a=b) (a+b)(!a+!b) a*b (a)(b) a+b (a+b) a=>b (!a+b) a=(b*c) (!a+b)(!a+c)(a+!b+!c) a=(b+c) (a+!b)(a+!c)(!a+b+c) a=(b=>c) (a+b)(a+!c)(!a+!b+c) a=(b=c) (a+b+c)(a+!b+!c)(!a+b+!c)(!a+!b+c)