CS70 - Lecture 2 - Jan 21, 2011 - 10 Evans
First homework posted (on Demmel's web page and bspace), due Jan 27
Review of last time:
DEF: Proposition is a statement that must be either true (T) or false (F)
EG: 2+2=4, 2+2=3
Notation: propositions denoted p, q, etc
DEF: logical operators not p, p and q, p or q, p xor q
DEF: compound propositions: constructed from simpler propositions using not, and, or, ()
EG: (p and not q) or (not p and q)
DEF: A truth table is a table of all possible values of a compound proposition
ASK & WAIT: can this be simplified, i.e. written more briefly using other logical operators?
DEF: Implication: p => q, same as (not p) or q
ASK&WAIT: Is (1+1=3) => (1+1=2) True or False?
DEF: The converse of p -> q is q -> p; they need not be true at the same time
EX: converse of last example is (1+1=2) => (1+1=3)
ASK&WAIT: is this True or False?
DEF: The contrapositive of p -> q is not q -> not p; these are the same (both True or both False)
DEF: p <-> q "p if and only if q", "p->q and q->p", biconditional
Predicates: a proposition depending on one or more free variables x, y, ...
EG: R(x) = "x > 0", so R(7) = "7>0" which is true
EG: S(x,y) = "x>y", so S(1,2) = "1>2" which is false
Now that we understand a predicate like
R(x) = "x>0 => x+1>1"
or
S(x) = "2*x > x"
we'd like to be able to reason about when they are true.
For this we need Quantifiers:
Notation: N = natural numbers = {0,1,2,3…}
Z = integers { …, -2, -1, 0, 1, 2, …}
Quantifiers
To say a proposition R(x) is "always true," we write the new proposition
forall x in N, R(x),
For example
\forall x in N . x^2 >= 0
x^2 >= 0 is true for every x in N
"the square of any natural number is non-negative"
0^2 >= 0 /\ 1^2 >= 0 /\ 2^2 >= 0 /\ ...
ASK&WAIT: Which are true?
forall x in N, 2*x > x
forall x in N, 2*x >= x
forall x in Z, 2*x >= x
forall x in Z ( forall y in Z x^2-y^2 = (x-y)*(x+y) )
To say a proposition R(x) is true for at least one value of x, we write the new proposition
thereexists x in N, S(x)
For example
thereexists x in N, x = x^2
"there is a solution x in N of x = x^2"
0 = 0^2 or 1 = 1^2 or 2 = 2^2 or …
Examples:
"there exists a number greater than 5"
\exists x in N . x > 5
"for any x, x+1 is always strictly greater than x"
\forall x in N . x+1 > x (true)
consequence: 5+1 > 5 (substitute x by 5)
"Let n be a natural number satisfying n>5. Then n^2 > 25."
\forall x in N . (n > 5) => (n^2 > 25)
Ask the class to translate the following into prop.logic:
"there is no largest number"
\forall x in N . \exists y in N . y>x
\not \exists x in N . \forall z in N . z<x
"the square of any even number is even"
Evens = {all even integers}
\forall x in Evens . x^2 in Evens
\forall x in N . (\exists k in N . x=2k) => (\exists k in N . x^2=2k)
_______________^__________________________^
Does this mean that x^2=x for every x in N?
easier to understand:
\forall x in N . (\exists k in N . x=2k) => (\exists j in N . x^2=2j)
Notes:
The order of quantifiers matters!
\not \exists x . P(x) <==> \forall x . \not P(x)
\forall x . \forall y . P(x,y) <==> \forall y . \forall x . P(x,y)
EG: (Lewis Carroll, author of 'Alice in Wonderland')
Universe of Discourse = 'creatures'
"All bears are fierce"
"Some bears do not drink Peet's coffee"
"Some fierce creatures do not drink Peet's coffee"
Let B(x) = "x is a bear"
Let F(x) = "x is fierce"
Let P(x) = "x drinks Peet's coffee"
Express above using forall, thereexists:
ASK&WAIT "All bears are fierce"
ASK&WAIT "Some bears do not drink Peet's coffee"
ASK&WAIT why not "there exists x (B(x) -> not P(x))" ?
ASK&WAIT "Some fierce creatures do not drink Peet's coffee"
Proof techniques (aka rules of inferences, tautologies)
[ p and (p -> q)] -> q
Names: modus ponens, law of detachment, "common sense"
EX: p = "3|n", q = "9|n^2", then "p -> q" is clearly true.
So for example, if n=6, so that p is true, you can conclude 9|6^2
Other common sense stuff:
[(p -> q) and (q -> r)] -> (p -> r)
EX: p = '3|n', q = '9|n^2', r = '18|2*n^2', so p->q and q->r
Thus p->r, i.e. 3|n -> 18|2*n^2
(p and q) -> p
EX: p = "3|n" , q = "2|n", (p and q) = '6|n', so 6|n -> 3|n
p -> (p or q)
EX: p = '3|n', q = '2|n', so 3|n -> (3|n or 2|n)
[ not q and (p -> q) ] -> not p
Name: modus tollens, contrapositive
Works because (p -> q) <-> (not q -> not p)
EX: Show "if 3n+2 is odd then n is odd",
use p="n is even", q="3n+2 is even"; then p -> q is clearly true,
so 3n+2 odd and (p -> q) is the same as not q and (p -> q) whence
not p i.e. n is odd
[ not p -> F) ] -> p
Name: proof by contradiction
EX: cuberoot(5) is irrational, i.e. cannot be written as a/b where
a and b are nonzero integers without common divisor
let p = "cuberoot(5) is irrational"
so not p = "cuberoot(5) is rational"
-> cuberoot(5) = a/b, where a and b have no common divisor, b != 0
-> 5 = a^3/b^3, or 5 b^3 = a^3 (use b != 0)
-> 5 | a^3 -> 5 | a -> a=5*c -> 5 b^3 = 125 c^3 (why 5|a ?)
-> b^3 = 25 c^3 -> 5 | b^3 -> 5 | b
-> 5|a and 5|b
-> a and b have a common factor and do not have a
common factor
-> false
so p is true
case analysis
EX: show that min(x,y) + max(x,y) = x+y
Three possible cases: x<y, x=y and x > y
Case 1: min(x,y) = x, max(x,y)=y, so min+max=x+y
Case 2: min(x,y) = x = y, max(x,y) = y = x, so min+max=x+y=2*x
Case 3: min(x,y) = y, max(x,y)= x , so min+max=y+x=x+y
EX: Are this statement and its proof correct?
Let a(0), a(1), and a(2) be three different points in the plane,
and let T be the triangle they form. Let
theta(1) be the clockwise angle from the line segment
(a(0),a(1)) to the segment (a(1),a(2))
theta(2) be the clockwise angle from the line segment
(a(1),a(2)) to the segment (a(2),a(0))
theta(0) be the clockwise angle from the line segment
(a(2),a(0)) to the segment (a(0),a(1))
Then theta(1)+theta(2)+theta(3) = 180 degrees.
Proof: Draw the figure
a(1)-----a(0)
\ /
\ /
\ /
a(2)
and use the fact that the sums of the angles in a triangle
is 180 degrees.
ASK&WAIT: Are this statement and its proof correct?
EX: Are this statement and its proof correct?
The number of primes is infinite:
Proof: Suppose that the number of primes is finite; we will
get a contradiction. Denote these primes by
p1,p2, ... , pn. Let N = p1*p2*...*pn+1. N is not
divisible by any of p1, p2, ..., pn, because it has
a remainder of 1 when you divide by any of them.
Therefore N is another prime.
ASK&WAIT: Are this statement and its proof correct?
Recall Def: "p if and only if q" means "p <-> q"
To prove this is true you have to show that p and q are
both true at at the same time, and both false at the same time
EX: Are this statement and its proof correct?
a*b is rational if and only a and b are rational
Proof: Suppose a=p/q and b=r/s are rational, i.e. quotients
of integers. Then a*b = (p*r)/(q*s) is rational.
ASK&WAIT: Are this statement and its proof correct?
Proving "NOT EXIST x such that P(x)" is same as
"FORALL x NOT P(x)"
EX: Are following statement and proof correct?
There is no polynomial p(n) with integer coefficients
such that p(n) is prime for all integers n >= 0.
In other words, there is no simple (polynomial) formula for
generating primes.
Proof: instead show "FORALL polynomials p(n),
there is an n >= 0 such that p(n) is not prime":
Write p(n) = p_(d)*n^d + p_(d-1)*n^(d-1) + ... + p_(1)*n + p_(0)
= r(n) + p_(0)
If p_(0) = 0, then p(0)=0 is not prime
If p_(0) = 1 or -1, then p(0)=1 or -1, so not prime
If p_(0) is composite, so is p(0) = p_(0)
If p_(0)=q is prime, then q|r(i*q), so q|p(i*q)=r(i*q)+q
ASK&WAIT: Are this statement and its proof correct?
Here are two more reasons why proofs are important (beyond proving that some
theorem is true, or algorithm is correct)
It is possible to embed proofs in downloadable programs and email,
so that the recipient is guaranteed (by running a program to check
the proof) that the program or email does not contain a virus, or
will not otherwise cause mischief.
For example, Java enabled cell-phones in Japan use this technique
of "proof-carrying code" when they download code. When a phone downloads
Java code it checks the proof that the code will not cause damage
(eg write into memory it should not). The alternative
is to run them using an interpreter that keeps downloaded code from
causing mischief. But it uses fewer instructions (and so
less battery power!) to check a proof and then run noninterpreted code.
Prof. George Necula has pioneered this idea (www.cs.berkeley.edu/~necula)
Bill Gates once proposed a list of techniques to combat spam,
including proof-carrying-email, which would contain a
proof that the email did not come from a spammer, i.e. sent out to
lots and lots of people. One way to do this would be for the email
to contain a very difficult puzzle and its solution, where the puzzle
is known to be so difficult that only by spending at least, say,
1 CPU second could the puzzle have been solved, although it is easy
for your mailer to check that the solution is correct.
Thus, sending a billion spam messages would cost a billion CPU seconds
instead of a few seconds, making span uneconomical to send.
Unfortunately, this would just motivate spammers to try to take over
other machines and make them spammer-zombies, which they do already.
Obviously a good solution to spam still awaits us...