All this step should be correct
$(A \Rightarrow B \land \neg C) \land \neg(A \Rightarrow D) \Rightarrow \neg (B \Rightarrow D \lor C)$
$(\neg A \lor (B \land \neg C)) \land \neg(\neg A \lor D) \Rightarrow \neg (\neg B \lor D \lor C)$
$(\neg A \lor (B \land \neg C)) \land (A \land \neg D) \Rightarrow (B \land \neg D \land \neg C)$
$\neg ((\neg A \lor (B \land \neg C)) \land (A \land \neg D)) \lor (B \land \neg D \land \neg C)$
$\neg (\neg A \lor (B \land \neg C)) \lor \neg (A \land \neg D) \lor (B \land \neg D \land \neg C)$
$(A \land \neg (B \land \neg C)) \lor (\neg A \lor D) \lor (B \land \neg D \land \neg C)$
$(A \land (\neg B \lor C)) \lor (\neg A \lor D) \lor (B \land \neg D \land \neg C)$
$(A \land \neg B) \lor (A \land C) \lor (\neg A \lor D) \lor (B \land \neg D \land \neg C)$
How to continue?
a, b, c, d = symbols('a b c d'); Phi = ((a >> (b & Not(c))) & Not(a >> d)) >> Not(b >> (d | c)); print simplify(Phi)producesTrue. It's a tautology. – Rodrigo de Azevedo Nov 06 '16 at 08:59