Boolean Logic Design - Reduction

I have the following function to be reduced/simplified.

F(A,B,C,D) = BC + (A + C'D') where ' denotes the complement

Here's my solution: = BC + (A + C'D')' = BC + (A + (C+D) = BC + (A + C + D) = BC + C + A + D = C(B + 1) + A + D = C*1 + A + D = C + A + D

Is this correct?


As in traditional algebra, if you do something to one side of the equation, you must do it to the other side, including complementing. Here we state the original equation:

F'(A,B,C,D) = BC + (A + (CD)')

Since we have F' instead of F, my intuition tells me to complement both sides, but first I distribute the complement in the term (CD)' to make life easier in the long run:

F' = BC + (A + (C'+ D'))

Now we can complement both sides of the equation:

1: F = '(BC)'(A + (C'+ D')) The OR becomes AND after distributing complement

Now let's distribute the complements inside just to see what we get:

2: F = (B'+ C')(A'(CD))

Now we can just distribute the right term (A'(CD)) over the two terms being OR'ed:

3: F = B' (A'(CD)) + C' (A'(CD))

We see that the right term goes away since we have a CC' and thus we are left with:

4: F = A'B'CD

Hopefully I didn't make a mistake. I know you've found the answer, but others reading this might have a similar question and so I did it out to save duplicate questions from being asked. Good Luck!


  • How do I create a type alias for an array of char with a fixed size?
  • Box-shadow on 3 of four sides of div
  • Sticky footer doesn't reach the right and left sides of browser window
  • Find a value in array
  • How do I determine the bias of an algorithm?
  • Until statement not working on simple code [closed]
  • Boolean Logic Design - Reduction
  • Adjust cell width in grouped UITableView
  • PopOver auto adjust placement
  • How to avoid truncated bubbles when elasticX or elasticY
  • Why is git giving me a “deleted merge conflict” when both sides are deleted?
  • (XCode 4.0.2) Archive build (build for distribution on app-store) armv6 warning
  • Replacing parts of expression in prolog
  • How to build a 64-bit .NET DLL, with 64-bit COM interop?
  • iOS client server approach
  • Question regarding the ExtJS License [closed]
  • Double plus sign for the last line in git-diff of merge
  • Renamed directory, now SVN not allowing me to commit
  • How to set my Name in smack?
  • Retrieving a double from a JTextArea while solving for X
  • How can I count unique terms in a plaintext file case-insensitively?
  • why calling cd shell command through system() or execvp() from a child process won't work?
  • what does prefix @- mean in makefile?
  • How Get arguments value using inline assembly in C without Glibc?
  • Image map in Flex
  • How to make R's read_csv2() recognise the text characters properly
  • Who propagate bugfixes across branches (corporate development)?
  • npm 5.4.1 install/uninstall all failing
  • Dynamically switching connect in Modelica
  • xcode don't localize specific strings
  • Implementation of State Monad
  • uniform generation of points on 3D box
  • How do I superscript characters in a UIButton?
  • How do I pass the string value parameter of the selected list item from an auto-populated dropdown l
  • Allowing both email and username for authentication
  • jQuery .attr() and value
  • ilmerge with a PFX file
  • Azure Cloud Service Web Role web pages do not load
  • Revoking OAuth Access Token Results in 404 Not Found
  • Running Map reduces the dimensions of the matrices