440 likes | 1.07k Views
Boolean Logic. CS/APMA 202, Spring 2005 Rosen, section 1.1 Aaron Bloomfield. Quick survey. How familiar are you with Boolean logic? A lot Some A little Boolean what?. Boolean propositions. A proposition is a statement that can be either true or false “The sky is blue”
E N D
Boolean Logic CS/APMA 202, Spring 2005 Rosen, section 1.1 Aaron Bloomfield
Quick survey • How familiar are you with Boolean logic? • A lot • Some • A little • Boolean what?
Boolean propositions • A proposition is a statement that can be either true or false • “The sky is blue” • “I is a English major” • “x == y” • Not propositions: • “Are you Bob?” • “x = 7”
Boolean variables • We use Boolean variables to refer to propositions • Usually are lower case letters starting with p (i.e. p, q, r, s, etc.) • A Boolean variable can have one of two values true (T) or false (F) • A proposition can be… • A single variable: p • An operation of multiple variables: p(qr)
Introduction to Logical Operators • About a dozen logical operators • Similar to algebraic operators + * - / • In the following examples, • p = “Today is Friday” • q = “Today is my birthday”
Logical operators: Not • A not operation switches (negates) the truth value • Symbol: or ~ • In C++ and Java, the operand is ! • p = “Today is not Friday”
Logical operators: And • An and operation is true if both operands are true • Symbol: • It’s like the ‘A’ in And • In C++ and Java, the operand is && • pq = “Today is Friday and today is my birthday”
Logical operators: Or • An or operation is true if either operands are true • Symbol: • In C++ and Java, the operand is || • pq = “Today is Friday or today is my birthday (or possibly both)”
Logical operators: Exclusive Or • An exclusive or operation is true if one of the operands are true, but false if both are true • Symbol: • Often called XOR • pq (p q) ¬(p q) • In Java, the operand is ^(but not in C++) • pq = “Today is Friday or todayis my birthday, but not both”
Inclusive Or versus Exclusive Or • Do these sentences mean inclusive or exclusive or? • Experience with C++ or Java is required • Lunch includes soup or salad • To enter the country, you need a passport or a driver’s license • Publish or perish
Logical operators: Nand and Nor • The negation of And and Or, respectively • Symbols: | and ↓, respectively • Nand: p|q ¬(pq) • Nor: p↓q ¬(pq)
Logical operators: Conditional 1 • A conditional means “if p then q” • Symbol: • pq = “If today is Friday, then today is my birthday” • p→q=¬pq the antecedent the consequence
Logical operators: Conditional 2 • Let p = “I am elected” and q = “I will lower taxes” • I state: p q = “If I am elected, then I will lower taxes” • Consider all possibilities • Note that if p is false, then the conditional is true regardless of whether q is true or false
Quick survey • Does truth table of the conditional make sense? • Yes, already • Mostly • Not really • Huh? I was sleeping
Logical operators: Conditional 4 • Alternate ways of stating a conditional: • p implies q • If p, q • p only if q • p is sufficient for q • q if p • q whenever p • q is necessary for p • p only if q • See Rosen, p. 6, for a full list I don’t like this one
Logical operators: Bi-conditional 1 • A bi-conditional means “p if and only if q” • Symbol: • Alternatively, it means “(if p then q) and (if q then p)” • Note that a bi-conditional has the opposite truth values of the exclusive or
Logical operators: Bi-conditional 2 • Let p = “You take this class” and q = “You get a grade” • Then pq means “You take this class if and only if you get a grade” • Alternatively, it means “If you take this class, then you get a grade and if you get a grade then you take (took) this class”
Boolean operators summary • Learn what they mean, don’t just memorize the table!
Quick survey • I understand all the Boolean operators • Absolutely! • With a little review after class, I’ll have it down • Can we go over it again? • 17
Precedence of operators • Just as in algebra, operators have precedence • 4+3*2 = 4+(3*2), not (4+3)*2 • Precedence order (from highest to lowest): ¬ → ↔ • The first three are the most important • This means that p q ¬r→s↔tyields: (p (q (¬r))) ↔ (s→t) • Not is always performed before any other operation
Translating English Sentences • Question 7 from Rosen, p. 16 • p = “It is below freezing” • q = “It is snowing” • It is below freezing and it is snowing • It is below freezing but not snowing • It is not below freezing and it is not snowing • It is either snowing or below freezing (or both) • If it is below freezing, it is also snowing • It is either below freezing or it is snowing, but it is not snowing if it is below freezing • That it is below freezing is necessary and sufficient for it to be snowing pq p¬q ¬p¬q pq p→q (pq)(p→¬q) p↔q
Translation Example 2 • Heard on the radio: • A study showed that there was a correlation between the more children ate dinners with their families and lower rate of substance abuse by those children • Announcer conclusions: • If children eat more meals with their family, they will have lower substance abuse • If they have a higher substance abuse rate, then they did not eat more meals with their family
Translation Example 2 • Let p = “Child eats more meals with family” • Let q = “Child has less substance abuse • Announcer conclusions: • If children eat more meals with their family, they will have lower substance abuse • p q • If they have a higher substance abuse rate, then they did not eat more meals with their family • q p • Note that p q and q p are logically equivalent
Translation Example 2 • Let p = “Child eats more meals with family” • Let q = “Child has less substance abuse”
Translation Example 3 • “I have neither given nor received help on this exam” • Rephrased: “I have not given nor received …” • Let p = “I have given help on this exam” • Let q = “I have received help on this exam” • Translation is: pq
Translation Example 3 • What they mean is “I have not given and I have not received help on this exam” • Or “I have not (given nor received) help on this exam” • The problem: has a higher precedence than in Boolean logic, but not always in English • Also, “neither” is vague
A bit of humor:Yale vs. Harvard • Web references: http://www.harvardsucks.org/, http://www.yaledailynews.com/article.asp?AID=27506
equal System Specifications 1 • Just like translating English sentences • In order for a system specification to be valid, there must be at least ONE truth assignment that allows the propositions to be true • Question 43 from Rosen, p. 10 • p = “the message is scanned for virii” • q = “the message was sent from and unknown system” • The message is scanned for virii whenever themessage was sent from an unknown system • The message was sent from an unknownsystem but it was not scanned for virii • It is necessary to scan the message for viriiwhenever it was sent from an unknown system • When a message is not sent from an unknownsystem, it is not scanned for virii q→p q¬p q→p ¬q→¬p
System Specifications 2 • Is this a valid system? • p = “the message is scanned for virii” • q = “the message was sent from and unknown system” • Requirements: (q→p) (q¬p) (¬q→¬p)
Quick survey • Is this a valid system? • Yes • No • Need more information • I have no idea
System Specifications 2 • The system as specified is not valid • There is no assignment of truth values that makes all the system specs true
System Specifications 2 • Let’s remove one of the specifciations: • q¬p = The message was sent from an unknown system but it was not scanned for virii • Is this a valid system? • Requirements: (q→p) (¬q→¬p)
Boolean Searches (101 OR 202) AND bloomfield AND “computer science” • Note that Google requires you to capitalize Boolean operators • Google defaults to AND; many others do not
Bit Operations 1 • Boolean values can be represented as 1 (true) and 0 (false) • A bit string is a series of Boolean values • 10110100 is eight Boolean values in one string • We can then do operations on these Boolean strings • Each column is its ownBoolean operation 01011010 10110100 11101110
Bit Operations 2 • Evaluate the following 11000 (01011 11011) = 11000 (11011) = 11000 01011 11011 11011 11000 11011 11000
Quick survey • What programming languages do you know? • Java only • C / C++ only • Java and C/C++ • not (Java or C/C++)
&& vs. & in C/C++ Consider the following: In C/C++, any value other than 0 is true int p = 11; int q = 20; if ( p && q ) { } if ( p & q ) { } The binary for the integer 11 is 01011 The binary for the integer 20 is 10100 Notice the double ampersand – this is a Boolean operation As p and q are both true, this is true Notice the single ampersand – this is a bitwise operation 01011 10100 00000 This evaluates to zero (false)! Bitwise Boolean And operation:
&& vs. & in C/C++ • Note that Java does not have this “feature” • If p and q are int: • p & q is bitwise • p && q will not compile • If p and q are boolean: • Both p & q and p && q will be a Boolean operation • The same holds true for the or operators (| and ||) in both Java and C/C++
Quick survey • I felt I understood the material in this slide set… • Very well • Pretty much • Not really • Not at all
Quick survey • The pace of the lecture for this slide set was… • Too slow • A little slow • About right • Fast