Many Boolean Algebra problems can be solved using more then one formula, just like most Algebra problems. For example...
___________
D = A * (B + C)
[given formula]
_ _______
_______ _ _
D = A + (B + C)
[DeMorgan (A * B) = A + B]
_ _ _
_______ _ _
D = A + (B * C)
[DeMorgan (A + B) = A * B]
_ _
_ _
D = (A + B) * (A + C)
[A + (B * C) = (A + B) * (A + C)]
_______ _______
_______ _ _
D = (A * B) * (A * C) [DeMorgan (A * B)
= A + B]
_________________
_______ _ _
D = (A * B) + (A * C) [DeMorgan (A + B)
= A * B]
Manipulation rule number 5 could have been used to go from the first step to the last one in a single move. However, using DeMorgan's Theorem, the problem turns into something that manipulation rule number 6 can then be used on instead. DeMorgan's Theorem changes the logic of the formula.
Boolean Algebra can also be used to confirm the correct logic in a circuit. For example, take the following case...
_____________
_______
C = (B + (A * B)) [given formula]
_ =======
_______ _ _
C = B * (A * B) [DeMorgan (A
+ B) = A * B]
_
=
C = B * (A * B) [A = A
{double negative}]
_
C = (A * B) * B [A * B = B
* A]
_
C = A * (B * B) [(A * B) *
C = A * (B * C)]
_
C = A * 0
[A * A = 0]
C = 0 [0 * A = 0]
Using Boolean Algebra, the above formula is proven to always result in a logical 0 output. No matter what A and B are, C is always a logical 0.
This next example is very important in digital logic, and is often times called a logical function itself.
___________________
======= _______
C = ((A * B) + (A + B)) [given formula]
___________________
_______ =
C = ((A * B) + (A + B)) [A = A {double
negative}]
_______ =======
_______ _ _
C = (A * B) * (A + B) [DeMorgan
(A + B) = A * B]
_______
=
C = (A * B) * (A + B) [A =
A {double negative}]
_ _
_______ _ _
C = (A + B) * (A + B) [DeMorgan
(A * B) = A + B]
_ _
_ _
C = ((A + B) * A) + ((A + B) * B)
[A * (B + C) = (A * B) + (A * C)]
_
_ _
_
C = (A * (A + B)) + (B * (A + B))
[A * B = B * A]
_
_ _
_
C = ((A * A) + (A * B)) + ((B * A) + (B * B))
[A * (B + C) = (A * B) + (A * C)]
_ _
C = ((0 + (A * B)) + ((B * A) + 0)
_
[A * A = 0]
_
_
C = (A * B) + (B * A)
[0 + A = A]
This formula indicates that C is true if A is true and B is false, or when B is true and A is false. This function is called the XOR (exclusive OR). Remember that in an OR gate, one input true will create a true output, and that if both inputs are true the output is still true. The XOR function will give a false output if both inputs are true as well as both false, and will only give a true output when the inputs are different.