CS70 - Lecture 1 - Jan 19, 2011 - 10 Evans

Name, class, URLs

www.cs.berkeley.edu/~demmel/cs70_Spr11

bspace.berkeley.edu

Read on-line summary for course rules and grading policies

You are responsible for reading this and knowing the rules!

Text are notes "Discrete Math and Probability Theory" available at Copy Central (Hearst&Euclid)

Lecture notes will be posted (hopefully before lecture)

First HW will be due next Thursday Jan 27 just before midnight; work in groups!

Midterms will be in the evening, 6-8pm, on Mar 3 and Apr 7.

Introduce staff (Head TA Nick Knight, Terry Filiba, Fares Hedayati, Sayak Ray)

Enrollment: There is usually some churn at the beginning of the semester,

so we hope that people on the waiting list will get in eventually without adding

another section. Nick Knight is in charge of making enrollment changes.

Course Outline:

Propositions, logic and proofs

common language for rest of course

logical operations in programs (CS61)

hardware design (CS150)

Why proofs?

So people know something is true

So computers know something is true:

Some Java enabled cell phones have required

downloaded programs to be "proof carrying codes",

that contain a proof that they can't do anything

bad to your cell phone (see www.cs.berkeley.edu/~necula)

Induction and recursion

writing correct programs and showing they are correct

Example: Stable Marriage Problem

Modular arithmetic, RSA cryptosystem

keeping your money safe when you login to your bank

Polynomials over finite fields and their use in error correcting codes

how to send data reliably over unreliable networks, like the internet

Probability theory (random variables, expectation, variance, …) and

its applications (load balancing, hashing, inference…)

Using the same proof ("diagonalization") to show that

there are programs that you provably cannot write,

like a debugger that finds infinite loops

there are more irrational numbers than rational numbers

Begin course:

DEF: Proposition is a statement that must be either

true (T) or false (F)

EG: Which of the following are propositions:

2+2 = 4 (Y)

2+2 = 3 (Y)

826th digit of pi is 4 (Y)

all dinosaurs were warm-blooded (Y)

Is 2+2=4? (N)

Let x = 3. (N)

x+1 = 2 (N, unless we know the value of x)

Every even number > 2 is the sum of two primes. (Y)

(Goldbach's Conjecture; best result known to be true is <= 6 primes)

My CS70 GSI is nice (N)

Notation: propositions denoted p,q,r ...

DEF: not p , p or q (disjunction), p and q (conjunction),

p xor q (exclusive or)

Truth tables

EG: What are the values of

2+2=3 and 2+2 = 4

2+2=3 or 2+2=4

2+2=3 xor 2+2=4

DEF: a compound proposition is formed by simple propositions

connected by logical operators and parentheses;

EG: (p and q) or (r and s)

programming example below

DEF: p -> q, pronounced "p implies q", or "if p, then q", "p sufficient for q",

"q necessary for p"; but it is simply defined as not(p) or q;

EG: if it is sunny, then we go to the beach

p = it is sunny, q = we go to the beach

(T unless it is sunny (p) and we don't go (not q))

Truth table

ASK&WAIT if (today is Friday), then (2+3 = 6);

on which days is this true?

p = (today is Friday), q = (2+3=6)

T every day except Friday

ASK&WAIT if (1+1=3) then (2+2=4)

Note that p and q need not have anything to do with one another

in order to form the expression p -> q

ASK&WAIT if (1+1=3) then (2+2=3)

ASK&WAIT if (the moon is made of cheese) then (the speed of light is 55mph)

DEF: The converse of p -> q is q -> p; they need not be true

at the same time

ASK&WAIT EG: If I am exactly 18 years old then I am allowed to vote;

converse is

if I am allowed to vote, then I am exactly 18 years old

note that converse not necessarily true if original is

DEF: The contrapositive of p -> q is not q -> not p;

these are the same

ASK&WAIT EG: If I am exactly 18 years old then I am allowed to vote;

converse is

if I am not allowed to vote, then

I am not exactly 18 years old

contrapositive is true

Truth table proof of prop <=> contrapositive

DEF: p <-> q "p if and only if q", "p->q and q->p", biconditional

Truth Table

Application to programming (Java or C syntax)

if (compound proposition, or logical expression) then do something...

if ((n>0) && (m<k)) then do something ...

(n>0) and (m<k) are propositions whose value (T or F)

can be evaluated when you get to this line in the program,

and && means "and", || means "or", etc.

in computer 1 represents true and 0 false (representation details

in CS61C, CS150)

More generally, we like to be able to reason about statements like

x>0 => x+1>1

but we can't yet, because x>0 is not a proposition, we need something new.

Predicates

R(x) = "x > 0"

Think of this as a proposition with a free variable x;

the truth value depends on the choice of x. In other words, R is a

function from the natural numbers (say) to the set of propositions; for

instance, R(7) is the proposition "7>0" (which, incidentally, is true).

EG: Application to Web search

In www.google.com you can type into the Advanced Search form:

With all the words: guano

and With at least one of the words: geometry tickle

Same as "find all web pages W for which the proposition is true"

(W contains guano) and

((W contains geometry) or (W contains tickle))

ASK&WAIT: what web pages do you get? (besides the Ma55 2004/07 web pages,

which have all three, like this one)

EX: Flickr photo with title "tickle my nose with guano" (not the word geometry)

EX: WIkipedia entry for Dr Strangelove, with character named Guano talking

about geometry of B-52 fuselage (not the word tickle)

EX: Mass movement in cave sediments, how the geometry

depends on bat guano deposits.

contains guano and geometry, not tickle

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 number = {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, S(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: 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:

"doubling a number always makes it larger"

\forall x in N . 2x > x (false; x=0)

\forall x in N . 2x >= x (true.)

but: latter proposition is false in integers! (x<0)

highlights need to include set over which you're quantifying

"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

"every even number >= 4 can be written as the sum of two primes"

\forall x in N, (x>=4 and x even) => \exists y,z in Primes . x = y+z

E = {even integers >= 4}

\forall x in E . \exists y,z in N . y,z prime and x = y+z

(unknown; Goldbach's conjecture!)

"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)

True or false?

\forall x in N \exists y in N . x = 2*y (false in integers; true in reals)

\forall x in N \exists y in N . y = 2*x (true)

(note: y is allowed to depend on x; think of this as a game

where you pick x, then I pick y, and I win if y=2x; the proposition

is true if I have a winning strategy that lets me win no matter what

you do)

\exists x in N \forall y in N . y = 2*x (false)

\exists x in N \exists y in N . y = 2*x (true)

\forall x in N \forall y in N . y = 2*x (false)

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)