Unit 3 Notes
Compound Boolean Expression
Compound boolean expressions include AND (&&), OR (||), and NOT (!).
Truth tables
Truth tables display all the possible results for boolean expressions.
Below is the truth table for && and ||:
| P | Q | P&&Q |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
| P | Q | P\ | \ | Q |
|---|---|---|---|---|
| true | true | true | ||
| true | false | true | ||
| false | true | true | ||
| false | false | false |
De Morgan's Law
First, some vocab:
- Set: A group of objects
- Universal set: A set that has all of the elements
- Subsets: Contains elements from the universal set
- Complement: For example, if we have set A, the complement of set A would have the elements in the universal set, but not in set A.
-
Union: New set has elements from both sets
Symbol: ∪
-
Intersection: New sets has elements that are shared between both sets
Symbol: ∩
De Morgan's Law is used in boolean algebra to help simplify expressions
De Morgan's Law of Union states that: "The complement of the union of the two sets A and B will be equal to the intersection of A' (complement of A) and B' (complement of B)."
Formula: (A ∪ B)' = A'∩ B'
De Morgan's Law of Intersection states that: "The complement of the intersection of A and B will be equal to the union of A' and B'."
Formula: (A ∩ B)’ = A’ ∪ B’
The following is an example:
Universal set: {1, 3, 5, 6, 8, 9} Set A: {1, 3} Set B: {5, 6, 8}
De Morgan's Law of Union: (A ∪ B)' = {9}
A'∩ B' = {9}
(A ∪ B)' = A'∩ B'
De Morgan's Law of Intersection: (A ∩ B)' = {1, 3, 5, 6, 8, 9}
A’ ∪ B’ = {1, 3, 5, 6, 8, 9}
(A ∩ B)’ = A’ ∪ B’
Translating De Morgan's law into code, De Morgan's Law of Union would mean: !(a || b) = (!a && !b).
De Morgan's Law of Intersection means: !(a && b) = (!a || !b)
public class DeMorgansLaw{
public static void main(String[] args) {
boolean rainy = false;
boolean sunny = false;
if (!!!(rainy || sunny) && ((!rainy && !sunny) || !(!(rainy || sunny))) ) {
System.out.println("It's a cloudy day, not too hot, not too cold");
}
}
}
DeMorgansLaw.main(null)
Well this is awfully confusing, how about we clean it up a little?
First, remove all of the !! (negative + negative = positive)
This code reads: If it's not rainy or sunny, and: it's not rainy and it's not sunny OR it's rainy or sunny
Evaluating each part of the code:
-
If it's not rainy or sunny: True -
If it's not rainy and it's not sunny: True -
It's rainy or sunny: False
2. and 3. are OR, therefore, it is True.
1. is ANDed to 2. and 3. which is True. -> True AND True is true, therefore, the message is outputted.
public class DeMorgansLaw{
public static void main(String[] args) {
boolean rainy = false;
boolean sunny = false;
if (!(rainy || sunny) && ((!rainy && !sunny) || (rainy || sunny)) ) {
System.out.println("It's a cloudy day, not too hot, not too cold");
}
}
}
DeMorgansLaw.main(null)