Prove the statement
\[\begin{equation*} (P \implies Q) \> \not \equiv \> (Q \implies P). \end{equation*} \]
By the definition of the conditional and the biconditional,
\[\begin{align*} (P \implies Q) & \equiv (Q \implies P) \\ (\lnot P \lor Q) & \equiv (\lnot Q \lor P) \\ (\lnot P \lor Q) \implies (\lnot Q \lor P) \big) & \land \big( (\lnot Q \lor P) \implies (\lnot P \lor Q) \big) \\ \big( \lnot (\lnot P \lor Q) \lor (\lnot Q \lor P) \big) & \land \big( \lnot (\lnot Q \lor P) \lor (\lnot P \lor Q) \big), \end{align*} \]
which is not a tautology, as per
(define (boolean-product length) "Return a list of all Boolean sequences of LENGTH." (let more-rows ((row (- (expt 2 length) 1))) (if (< row 0) (list) (cons (let more-columns ((column (- length 1))) (if (< column 0) (list) (cons (even? (quotient row (expt 2 column))) (more-columns (- column 1))))) (more-rows (- row 1)))))) (define (truth-table procedure arity) "Return a truth table for PROCEDURE with ARITY." (map (lambda (inputs) (append inputs (list (apply procedure inputs)))) (boolean-product arity))) (define (tautology? procedure arity) (not (member #f (map (lambda (row) (car (reverse row))) (truth-table procedure arity))))) (not (tautology? (lambda (p q) (and (or (not (or (not p) q)) (or (not q) p)) (or (not (or (not q) p)) (or (not p) q)))) 2))
#t
\(\blacksquare\)