# Boolean logic convert DNF to CNF

I need to convert this DNF

(!A && C && !D) || (!B && C && !D) || (A && B && !C) && (A && B && D)

into CNF notation. The thing is, when using wolfram alpha, it shows me the correct answer, but when I try to solve it by parts, it doesn't work.

I've tried using the last part A && B && D to split the large sequence into three large parentheses but calculating them separately with wolfram alpha doesn't show the same results. What am I doing wrong ?

The first two disjunctions share C && !D, The last expression can be simplified.

Use the distributive property for in the first; i'll exemplify the first use in this case.

(!A && C && !D) || (!B && C && !D) = (C && !D) && (!A || !B)

In the second disjunct

A && B is redundant in the chain of conjunctions in the third disjunct of you original boolean formula.

A && B && !C && A && B && D = A && B && !C && D.

So we have:

(C && !D && (!A || !B)) || (A && B && !C && D)

Now distribution is needed, again. (And again). But I've given you a good start.

• @Traabefi Yes, do what amWhy does! Keep distributing || over &&, and eventually it'll be in CNF Commented Sep 27, 2017 at 20:29