discrete mathematics for computer science

92
Statement (Proposition) A statement or proposition is a declarative sentence that is either true or false but not both Example 1: (a) The earth is round. (b) 2+3=5 (c) Do you speak English? (d) 3-x=5 (e) Take two aspirins. (f) The temperature on the surface of the planet Venus is 800 F (g) The sun will come out tomorrow 2.1. Propositions and Logical Operation Yes. Yes. No. This is a question. No. May true or false No. This is a command. Yes. yes

Upload: dipakshow

Post on 31-Dec-2015

73 views

Category:

Documents


1 download

DESCRIPTION

perlim of discrete math

TRANSCRIPT

Statement (Proposition)

A statement or proposition is a declarative sentence that is either true or false but not both

Example 1:

(a) The earth is round.

(b) 2+3=5

(c) Do you speak English?

(d) 3-x=5

(e) Take two aspirins.

(f) The temperature on the surface of the planet Venus is 800 F

(g) The sun will come out tomorrow

2.1. Propositions and Logical Operation

Yes.

Yes.

No. This is a question.

No. May true or false

No. This is a command.

Yes.

yes

Paradox

Paradox: A paradox is a seemingly true statement or group of statements that lead to a contradiction or a situation which seems to defy logic or intuition . Paradox is not a statement.

Example

“I am lying”, “this sentence is wrong” etc

2.1. Propositions and Logical Operation

Propositional variables

In logic, the letters p, q, r … denote propositional variables, which are replaced by statements

p: 1+2 = 5

q: It is raining.

Compound statements

Propositional variables can be combined by logical connectives to obtain compound statements. E.g.

p and q : 1+2 =5 and it is raining.

2.1. Propositions and Logical Operation

Negation (a unary operation) If p is a statement, the negation of p is the statement not p,

denoted by ~ p, meaning “it is not the case that p”.

if p is true, then ~p is false, and if p is false, then ~p is true.

Truth Table : List the truth value of a compound statement in terms of its component parts.

2.1. Propositions and Logical Operation

p ~p

T F

F T

Example: Give the negation of the following statements

(a) p: 2+3 >1

(b) q: It is snowing.

Solution:

(a) ~p: 2+3 is not greater than 1, namely, 2+3 <=1

(b) ~q: It is not the case that it is snowing. More simply, ~q: It is not snowing.

2.1. Propositions and Logical Operation

Conjunction If p and q are statements, the conjunction of p and q is the

compound statement “p and q” denoted by p∧ q .

Truth Table :

Note: p∧ q is T if and only if p is T and q is T.

2.1. Propositions and Logical Operation

p q p∧ q

T T T

T F F

F T F

F F F

Example Form the conjunction of p and q

p: 1>3 q: It is raining.

Solution:

p∧ q : 1 > 3 and It is raining.

Note:

In logic, unlike in everyday English, we may join two totally unrelated statements by logical connectives.

2.1. Propositions and Logical Operation

Disjunction If p and q are statements, the disjunction of p and q is the

compound statement “p or q”, denoted by p V q

Truth Table :

Note: p V q is F is and only if q is F and q is F.

2.1. Propositions and Logical Operation

p q p V q

T T T

T F T

F T T

F F F

The connective “or”

(a) I left for Spain on Monday or I left for Spain on Friday.

(b) I passed math or I failed French”

Note:

Case (a): Both could not have occurred. “or” is an exclusive sense in this case.

Case (b): Both could have occurred. “or” is an inclusive sense in this case.

In mathematics and computer science. We agree to use the connective “or” in inclusive manner.

2.1. Propositions and Logical Operation

Example:

Form the disjunction of p and q p: 2 is a positive integer q : sqrt(2) is a rational number

Solution:

p V q: 2 is a positive integer or sqrt(2) is a rational number. Since p is true, p V q is true, even through q is false.

2.1. Propositions and Logical Operation

Algorithm for making Truth Table: Step 1: The first n columns of the table are labeled by the

component propositional variables. Further columns are included for all intermediate combinations of the variables, culminating in a column for the full statement.

Step 2: Under each of the first n headings, we list the 2n possible n-tuples of truth values for the n component statements.

Step 3: For each of the remaining columns, we compute, in sequence, the remaining truth values.

2.1. Propositions and Logical Operation

Example 5: Make a truth table for the statement (p ∧ q) V (~ p)

Truth Table:

2.1. Propositions and Logical Operation

p q p∧ q ~p V

T T T F T

T F F F F

F T F T T

F F F T T

(1) (2) (3)

Propositional function (predicate) An element of a set {x | P(x)} is an object t for which the

statement P(t) is true. P(x) is called a propositional function (or predicate) , because each choice of x produces a proposition P(x) that is either true or false (well-defined)

E.g. Let A={ x | x is an integer less than 8}.

Here P(x) is the sentence “x is an integer less than 8”

P(1) denotes the statement “1 is an integer less than 8” (true)

P(8) denotes the statement “8 is an integer less than 8” (false)

2.1. Propositions and Logical Operation

Universal Quantifiers (∀ ) The Universal Quantifiers of a predicate P(x) is the statement

“for all values of x, P(x) is true” , denoted by ∀ x P(x)

Example 8

(a) P(x) : -(-x) = x is a predicate that makes sense for all real number x.

then ∀ x P(x) is true statement. Since ∀ x ∈ R, -(-x) = x

(b) Q(x): x+1<4.

then ∀ x Q(x) is a false statement, since Q(5) is false

2.1. Propositions and Logical Operation

Existential Quantifiers ( )∃ The Existential Quantifiers of a predicate P(x) is the statement

“there exists a value of x for which P(x) is true”, denoted by

∃ x P(x)

Example 9

(a) Let Q(x): x+1<4. then the existential quantification of Q(x), x Q(x), is a true statement, since Q(1) is a true statement ∃

(b) The statement y y+2=y is false since there is no value of y ∃for which the propositional function y+2=y produces a true statement.

2.1. Propositions and Logical Operation

The order of the Quantifiers ∀ & ∃ The order does not affect the output for the same quantifiers,

while it may produce different results for different quantifiers.

E.g. P(x, y) : x + y =1

∀ x y P(x) is true, y ∃ ∃ ∀ x is false.

P(x, y): x *y = 0

∀ x y P(x) is true, y ∃ ∃ ∀ x is true too.

2.1. Propositions and Logical Operation

The negation of Quantifiers ∀ & ∃ (a) let p: ∀ x P(x),

then ~p: there must be at least one value of x for which P(x) is false, namely,

~ ∀ x P(x) = x ~P(x) ∃

(b) let p: x P(x), ∃ then ~p: for all x, P(x) is false, namely,

~ x P(x)= ∃ ∀ x ~P(x)

2.1. Propositions and Logical Operation

Conditional statement If p and q are statements, the compound statement “if p then q”, denoted

p=>q, is called a conditional statement or implication.

p : antecedent or hypothesis q : consequent or conclusion

if … then : =>

Truth Table :

Note: when p is F, then p=>q is T.

2.2. Conditional Statements

p q p => q

T T T

T F F

F T T

F F T

Example Form the implication p=>q for each the following

(a) p: I am hungry. q: I will eat.

(b) p: 2+2=5 q: I am the king of England.

Solution (a) If I am hungry, then I will eat

(b) If 2+2=5, then I am the king of England

Note: There is no cause-and effect relationship between p and q in case (b). And (b) is true, since 2+2=5 is false.

2.2. Conditional Statements

Converse and Contrapositive If p=>q is an implication, then its converse is the implication

q => p

and its contrapositive is the implication ~ q => ~p

E.g. Give the converse and the contrapositive of the implication “If it is raining, then I get wet”

Converse: If I get wet, then It is raining.

Contrapositive: If I do not get wet, then It is not raining.

2.2. Conditional Statements

Equivalence (biconditional) If p and q are statements, the compound statement p if and only if

q, denoted by p q, is called an equivalence or biconditional.

Truth Table :

Note: p <=> q is T when p and q are both T or both F.

2.2. Conditional Statements

p q p q

T T T

T F F

F T F

F F T

Example 3: Is the following equivalence a true statement?

3>2 if and only if 0< 3 – 2

Solution:

Let p: 3>2 and q : 0< 3 – 2,

since p and q are both true, we then conclude that

p q is true statement.

2.2. Conditional Statements

Example 4. Compute the truth table of the statement

(p=>q) (~q => ~p)

Truth Table :

2.2. Conditional Statements

p q p=>q ~q ~p ~q=>~p (p=>q) (~q => ~p)

T T T F F T T

T F F T F F T

F T T F T T T

F F T T T T T

Tautology A statement that is true for all possible values of its propositional

variables called Tautology. (e.g. Example 4)

Contradiction (Absurdity) A statement that is false for all possible values of its propositional

variables called Contradiction or Absurdity. (e.g. p ∧ ~p)

Contingency A statement that can be either true or false, depending on the truth

values of its propositional variables, is called a contingency.

(e.g. p => q)

2.2. Conditional Statements

Logically Equivalent If two statements p and q are always either both true or

both false, for any values of the propositional variables, namely

p q is a tautology

Then we call p and q are logically equivalent.

Denoted by

p ≡ q

2.2. Conditional Statements

Example 6 Show that p V q and q V p are logically equivalent

The truth table of (p V q ) (q V p ) are shown as follows

Truth Table :

2.2. Conditional Statements

p q p V q q V p p V q q V p

T T T T T

T F T T T

F T T T T

F F F F T

Two Structures with similar properties

(Theorem 1)

Structure 1 (logic operations):

(propositions, ∧ , V, ~)

Structure 2 (sets operations)

(sets, U, ∩ , - )

2.2. Conditional Statements

Theorem 1 Commutative properties

p q ≡ q p, p q ≡ q p ∨ ∨ ∧ ∧

Associative Properties

p (q r) ≡ (p q) r , p (q r) ≡ (p q) r ∨ ∨ ∨ ∨ ∧ ∧ ∧ ∧

Distributive Properties

p (q r) ≡ (p q) (p r) ∨ ∧ ∨ ∧ ∨ p (q r) ≡ (p q) (p r) ∧ ∨ ∧ ∨ ∧

2.2. Conditional Statements

Idempotent Properties

p p ≡ p , p p ≡ p∨ ∧

Properties of Negation

~(~p) ≡ p

~(p q) ≡ (~p) (~q) ∨ ∧ ~(p q) ≡ (~p) (~q) ∧ ∨ De Morgan’s laws

2.2. Conditional Statements

Theorem 2

(p q) ≡ ((~p) q)⇒ ∨(p q) ≡ (~q ~p) ⇒ ⇒

(p q) ≡ ((p q) (q p))⇒ ∧ ⇒ ~(p q) ≡ (p ~q)⇒ ∧

~(p q) ≡ ((p ~q) (q ~p))∧ ∨ ∧

2.2. Conditional Statements

Theorem 3 ~( xP(x)) ≡ x~P(x)∀ ∃

~( xP(x)) ≡ x(~P(x))∃ ∀ ∃x(P(x) Q(x)) ≡ xP(x) xQ(x)⇒ ∀ ⇒ ∃ ∃x(P(x) Q(x)) ≡ xP(x) xQ(x)∨ ∃ ∨ ∃ ∀x(P(x) Q(x)) ≡ xP(x) xQ(x)∧ ∀ ∧ ∀

∀xP(x) xQ(x) x(P(x) Q(x)) is a tautology∨ ∀ ⇒ ∀ ∨ ∃x(P(x) Q(x)) xP(x) xQ(x) is a tautology∧ ⇒ ∃ ∧ ∃

2.2. Conditional Statements

Theorem 4 : Each of the following is a tautology

(p q) p , (p q) q∧ ⇒ ∧ ⇒ p (p q) , q (p q)⇒ ∨ ⇒ ∨

~p (p q) , ~(p q) p⇒ ⇒ ⇒ ⇒ (p (p q)) q ∧ ⇒ ⇒ , (~p (p q)) q∧ ∨ ⇒

(~q (p q)) ~p∧ ⇒ ⇒((p q) (q r)) (p r)⇒ ∧ ⇒ ⇒ ⇒

2.2. Conditional Statements

Properties of Quantifiers and ∃ ∀

(a) x (P(x) V Q(x)) ≡ x P(x) V x (Q(x)) ∃ ∃ ∃

(b) ∀ x (P(x) Q(x)) ≡ ∧ ∀ x P(x) ∧ ∀ x Q(x)

2.2. Conditional Statements

Logically Follow If an implication p q is a tautology, where p and q may be ⇒

compound statements involving any number of proposition variables, we say that q logically follows from p.

Suppose that an implication of the form (p1 p2 … pn)∧ ∧ ∧ ⇒ q is a tautology. We say that q logically follows from p1, p2,

…, pn, denoted by

2.3. Method of Proof

(p1 p∧ 2 … p∧ ∧ n) q⇒

The pi’s are called the hypotheses or premises, and q is called the conclusion.

Note: we are not trying to show that q is true, but only that q will be true if all the pi are true.

∴ denotes “therefore”

2.3. Method of Proof

Rules of inference Arguments based on tautologies represent universally correct methods

of reasoning. Their validity depends only on the form of the statements involved and not on the truth values of the variables they contain.

Example 1 ((p q) (q r)) (p r) is tautology, then the argument ⇒ ∧ ⇒ ⇒ ⇒

is universally valid, and so is a rule of inference.

2.3. Method of Proof

Example 2: Is the following argument valid?

If you invest in the stock market, then you will get rich.

If you get rich, then you will be happy.

∴ If you invest in the stock market, then you will be happy.

let p: you invest in the stock market, q: you will get rich

r: you will be happy

The above argument is of the form given in Example 1, hence the argument is valid!

2.3. Method of Proof

Example 3

The tautology (p q) ((p q) (q p)) ⇒ ∧ ⇒

means that the following two arguments are valid

p q⇒ p q q p⇒ ∴ (p q) (q p) ⇒ ∧ ⇒ ∴ p q

2.3. Method of Proof

Equivalence (p q) They are usually stated “p if and only if q”. We need to

prove both p=>q and q=>p by the tautology mentioned in example 3.

Algorithm :

Step one: Assuming p is true, show q must be true.

Step two: Assuming q is true, show p must be true.

2.3. Method of Proof

Modus Ponens p is true, and p=>q is true, so q is true

p

p=>q

∴ q

2.3. Method of Proof

Example 4: Is the following argument valid?

Smoking is healthy.

If smoking is healthy, then cigarettes are prescribed by physicians.

∴ Cigarettes are prescribed by physicians

p: Smoking is healthy.

q: cigarettes are prescribed by physicians

The argument is valid since it is of form modus ponens.

2.3. Method of Proof

Example 5 Is the following argument valid? If taxes are lowered, then income rises

Income rises

∴ taxes are lowered

Solution:

Let p: taxes are lowed q: income rise

p=>q

q

∴ p

Then argument is not valid , since p=>q and q can be both true with p being false.

2.3. Method of Proof

(or show the truth table of ((p=>q) q) => p , and determine ∧whether or not it is a tautology)

Indirect Method of Proof (Proof by contradiction) The tautology

(p=>q ) (~q) => (~p )

(An implication is equivalent to its contrapositive)

Note:

To proof p=>q indirectly, we assume q is false (~q) and show that p is then false (~p)

2.3. Method of Proof

Example 6 Let n be an integer. Prove that if n2 is odd, then n is odd.

Solution:

Let p: n2 is odd , q: n is odd.

To prove that (p=>q)

We try to prove its contrapositive ~q=>~p

Assuming that n is even (~q), let n=2k, k is an integer, then we have n2 = (2k) 2 =4k2 is even (~p).

Hence, the given statement has been proved.

2.3. Method of Proof

The tautology

((p q) (~q)) ~p⇒ ∧ ⇒ If a statement p implies a false statement q, then p must be false.

Proof by contradiction

To prove (p1 p∧ 2 … p∧ ∧ n) q , ⇒

We add (~q) into hypothesis p1 p∧ 2 … p∧ ∧ n, if the enlarged hypothesis p1 p∧ 2 … p∧ ∧ n (~q) implies a contradiction, then ∧we can conclude that q follows from p1 ,p2 , … and pn .

2.3. Method of Proof

Example 7 Prove there is no rational number a/b whose square is 2,

namely, sqrt(2) is irrational.

Solution: Let p: a, b are integers and no common factors, and b is not 0

q: (a/b)2 is not 2

In order to prove p => q ,

We try to find the contradiction from p ~q ∧

2.3. Method of Proof

Example 9: Prove or disprove the statement that if x and y are real numbers,

(x2=y2) (x=y)

Solution:

Since (1)2=(-1)2, but -1 ≠ 1, the result is false. Our example is called counterexample, and any other counterexample would do just as well.

Note:

If a statement claims that a property holds for all objects of a certain type, then to prove it, we must use steps that are valid for all objects of that type and that do not make references to any particular object. To disprove such a statement, we need only show one counterexample.

2.3. Method of Proof

To Prove

∀n>n0 P(n)

where n0 is some fixed integer

Two Steps:

1) Basis Step

Prove that P(n0) is true

2) Induction Step

Prove that P(k) => P(k+1) is a tautology (if P(k) is true, then P(k+1) must be true)

2.4 Mathematical Induction

Example 1: Prove that for all n>0

1+2+3…+n = n(n+1)/2 Solution: let P(n)=n(n+1)/2

Basis step: P(1) = 1 = 1*2/2=1 is true.

Induction Step: assuming P(k) is true, then

P(k+1) = 1+2 + 3 … + k +(k+1)

= P(k) +(k+1)

= k (k+1)/2 +(k+1) P(k) is true

= (k+1)(k+2)/2

= P(k+1)

2.4 Mathematical Induction

Example 3: Prove any finite, nonempty set is countable (the elements can be arranged in a list)

Solution: Let P(n) be the predicate that if A is any set with |A|=n>0, then A is countable

Basis Step: P(1) is true ( A ={x} )

Induction Step: assuming P(k) is true

Let B denotes any finite, nonempty set with k+1 elements. We first pick any element x in B, then B-{x} is a set with k elements, and it is countable (P(k) is true), and listed by x1,x2,…xk . Then we can also list the elements of B as x1,x2,…xk , x (P(k+1) is true)

2.4 Mathematical Induction

Strong Induction

2.4 Mathematical Induction

Weak Induction Strong Induction

Basis Step P(no) is true (or the first several statements are true)

P(no) is true (or the first several statements are true)

Induction Step P(k) P(k+1) is a tautology

P(n0) P(n1) … P(k) ∧ ∧ P(k+1) is a tautology

Example 7: Prove that every positive integer n>1 can be written uniquely as p1

a1p2a2…ps

as, where pi

are primes and p1<p2<..Ps

Basis Step : P(2) is true, since 2 is prime and 2 = 21 (unique )

Induction Step: Assuming P(2), P(3), … P(k) are true

if k+1 is prime, then k+1= (k+1)1

if k+1 is not prime, then we let k+1=Lm, where L, m are positive integers less than k+1. Using P(L) and P(m) are true, we have k+1=Lm= q1

b1q2b2…qs

bs (unique form)

2.4 Mathematical Induction

Statement P (n) is defined by 3 n > n 2

STEP 1: We first show that p (1) is true. Let n = 1 and calculate 3 1 and 1 2 and compare them 3 1 = 3, 1 2 = 1. 3 is greater than 1 and hence p (1) is true.

Let us also show that P(2) is true. 3 2 = 9 , 2 2 = 4. Hence P(2) is also true.

STEP 2: We now assume that p (k) is true i,e,3 k > k 2

Multiply both sides of the above inequality by 3 3 * 3 k > 3 * k 2

The left side is equal to 3 k + 1. For k >, 2, we can write k 2 > 2 k and k 2 > 1

We now combine the above inequalities by adding the left hand sides and the right hand sides of the two inequalities 2 k 2 > 2 k + 1

We now add k 2 to both sides of the above inequality to obtain the inequality 3 k 2 > k 2 + 2 k + 1

Factor the right side we can write 3 * k 2 > (k + 1) 2

If 3 * 3 k > 3 * k 2 and 3 * k 2 > (k + 1) 2 then

3 * 3 k > (k + 1) 2

Rewrite the left side as 3 k + 1 3 k + 1 > (k + 1) 2

Which proves tha P(k + 1) is true

Prove that 3 n > n 2 for n = 1, n = 2 and use the mathematical induction to prove that 3 n > n 2 for n a positive integer greater than 2.

Statement P (n) is defined by n! > 2 n

STEP 1: We first show that p (4) is true. Let n = 4 and calculate 4 ! and 2 n and compare them 4! = 24 , 2 4 = 16 , 24 is greater than 16 and hence p (4) is true.

STEP 2: We now assume that p (k) is true k! > 2 k

Multiply both sides of the above inequality by k + 1 k! (k + 1)> 2 k (k + 1)

The left side is equal to (k + 1)!. For k >, 4, we can write k + 1 > 2

Multiply both sides of the above inequality by 2 k to obtain 2 k (k + 1) > 2 * 2 k

The above inequality may be written 2 k (k + 1) > 2 k + 1

We have proved that (k + 1)! > 2 k (k + 1) and 2 k (k + 1) > 2 k + 1 we can now write (k + 1)! > 2 k + 1

We have assumed that statement P(k) is true and proved that statment P(k+1) is also true.

Prove that n ! > 2 n for n a positive integer greater than or equal to 4. (Note: n! is n factorial and is given by 1 * 2 * ...* (n-1)*n.)

1. What is a Loop Invariant?

• A loop invariant is an inductive statement which says something which is always true about a program loop.

• Loop invariants are useful for:• code specification• debugging

• A loop invariant is typically written as an inductive statement S(n), where n is some changing element of the loop. For example:• the loop counter/index • a loop variable which changes on each iteration

Example 1

int square(int val){ int result = 0; int counter = 0; while (counter < val) { result += val; counter++; } return result;}

Problem: does this function work?

• We assume that val is a positive integer• the precondition for this function

• square() always returns val2

• the postcondition• we will use the loop invariant to show that this is

true

Pre- and Post-conditions

The Loop Invariant

• To make the proof clearer, let countern and resultn be the values of counter and result after passing round the loop n times.

• Loop invariant S(n):resultn = val * countern

• is this true in the loop for all n >= 0?

Basis

• S(0) is when the loop has not yet been executed.• result0 = counter0 = 0

• So:result0 = val * counter0

• which means that S(0) is true.

Induction

• We assume that S(k) is true for some k >= 0, which means that:

resultk = val * counterk (1)

• After one more pass through the loop:resultk+1 = resultk + val (2)

counterk+1 = counterk + 1 (3)

continued

• Substitute the RHS of (1) for the 1st operand of the rhs of (2):

resultk+1 = (val * counterk) + val = val * (counterk + 1)

= val * counterk+1 (by using (3))

• this is S(k+1), which is therefore true.

continued

• For the loop, we now know:• S(0) is true• S(k) --> S(k+1) is true

• That means S(n) is true for all n >= 0• for all n >= 0, the loop invariant is true:

resultn = val * countern

Termination

• The loop does actually terminate, since counter is increasing, and will reach val.

• At loop termination (and function return):countern = val

• So in S(n):resultn = val * val

= val2

• So the postcondition is true.The function works!!

Example 2

int exp(int b, int m)// return bm

{ int res = 1; while (m > 0) { res = res * b; m = m - 1; } return res;}

Problem: does this function work?

• We assume b and m are non-negative integers• the preconditions for this function

• exp() always returns bm

• the postcondition• we will use the loop invariant to show that th

is is true

Pre- and Post-conditions

The Loop Invariant

• To clarify the proof, let resn and mn be the values of res and m after passing round the loop n times.

• Loop invariant S(n):resn * bmn = bm

• is this true in the loop for all n >= 0?

Inventing this isthe hardest part.

Basis

• S(0) is when the loop has not yet been executed.• res0 = 1; m0 = m

• So: 1 * bm = bm • which means that S(0) is true.

Induction

• We assume that S(k) is true for some k >= 0, which means that:

resk * bmk = bm (1)

• After one more pass through the loop:resk+1 = resk * b (2)

mk+1 = mk - 1 (3)

continued

• Rearrange the equations:resk = resk+1 / b (2’)

mk = mk+1 + 1 (3’)

• Substitute the right hand sides of (2’) and (3’) into (1):( resk+1 / b ) * b(mk+1 + 1 ) = bm

which isresk+1 * b(mk+1 + 1 - 1 ) = bm

which isresk+1 * bmk+1 = bm

continued

• S(k+1) is:

resk+1 * bmk+1 = bm

(4)

• So we have shown S(k+1) is true by using S(k).

continued

• For the loop, we now know:• S(0) is true• S(k) --> S(k+1) is true

• That means S(n) is true for all n >= 0• for all n >= 0, the loop invariant is true:

resn * bmn = bm

Termination

• The loop does actually terminate, since m is decreasing, and will reach 0.

• At loop termination (and function return):mn = 0

• So in S(n): resn * b0 = bm

so resn = bm

• So the postcondition is true.The function works!!

Example 3

int factorial(int num){ int i = 2; int fact = 1; while (i <= num) { fact = fact * i; i++; } return fact;}

Problem: does this function work?

• We assume num is a positive integer• the precondition for this function

• factorial() always returns num!• the postcondition• we will use the loop invariant to show that this is

true

Pre- and Post-conditions

The Loop Invariant

• To clarify the proof, let factn and in be the values of fact and i after passing round the loop n times.

• Loop invariant S(n):factn = (in - 1)!

• is this true in the loop for all n >= 0?

Basis

• S(0) is when the loop has not yet been executed.• i0 = 2; fact0 = 1

• So: fact0 = (i0 - 1)!1 = (2 - 1)!1 = 1

which means that S(0) is true.

Induction

• We assume that S(k) is true for some k >= 0, which means that:

factk = (ik-1)! (1)

• After one more pass through the loop:factk+1 = factk * ik (2)

ik+1 = ik + 1 (3)

continued

• Substitute the rhs of (1) for the 1st operand of the rhs of (2):

factk+1 = (ik - 1)! * ik = (ik)!

= (ik+1 - 1)! (by using (3))

• this is S(k+1), which is therefore true.

continued

• For the loop, we now know:• S(0) is true• S(k) --> S(k+1) is true

• That means S(n) is true for all n >= 0• for all n >= 0, the loop invariant is true:

factn = (in - 1)!

Termination• The loop does actually terminate, since i is in

creasing, and will reach num+1.

• At loop termination (and function return):in = num+1

• So in S(n):• factn = (in - 1)!

= (num + 1 - 1)! = num!

• So the postcondition is true.

The functionworks!!

Solution.M: unicorn is mythicalO: unicorn is mortalA: unicorn is mammalH: unicorn is hornedG: unicorn is magicalM → ~O If the unicorn is mythical, then it is immortal,~M → O ^ A but if it is not mythical, then it is a mortal mammal.~O v A → H If the unicorn is either immortal or a mammal, then it is horned.H → G The unicorn is magical if it is hornedThe truth table below is sufficient to answer the queries (one only need to find the shaded rows, since they are the only ones which are all true for the above)

Convert the following statements into a formal proposition:a) If the unicorn is mythical, then it is immortal, but if it is not mythical, then it is a mortal mammal. If the unicorn is either immortal or a mammal, then it is horned. The unicorn is magical if it is horned.Consider the following three propositions:b) The unicorn is mythical.c) The unicorn is magical.d) The unicorn is horned.Construct a truth table. From it, determine whether each of b, c or d follows necessarilyfrom a.

M O A H G M~O ~M O^A ~O v A H H G

T T T T T F T T T

T T T T F F T T F

T T T F T F T F T

T T T F F F T F T

T T F T T F T T T

T T F T F F T T F

T T F F T F T T T

T T F F F F T T T

T F T T T T T T T

T F T T F T T T F

T F T F T T T F T

T F T F F T T F T

T F F T T T T T T

T F F T F T T T F

T F F F T T T F T

M O A H G M~O ~M O^A ~O v A H H G

T F F F F T T F T

F T T T T T T T T

F T T T F T T T F

F T T F T T T F T

F T T F F T T F T

F T F T T T F T T

F T F T F T F T F

F T F F T T F T T

F T F F F T F T T

F F T T T T F T T

F F T T F T F T F

F F T F T T F F T

F F T F F T F F T

F F F T T T F T T

F F F T F T F T F

F F F F T T F F T

F F F F F T F F T

The results: e) The unicorn is mythical. a. M: not T in all shaded rows, hence does not follow from the sentences f) The unicorn is magical. a. G: T in all shaded rows, hence follows necessarily g) The unicorn is horned. a. H: T in all shaded rows, hence follows necessarily

Problem 1 : Find the truth table of the compound proposition (p ∨ q)(p ∧ r).

p q r (p ∨ q)(p ∧ r).

T T T FT T F TT F T FT F F TF T T FF T F FF F T TF F F T

Problem 2: Give the converse, the contrapositive, and the inverse of the statement “If it rains today, then I will drive to work.”

The converse is “If I drive to work today, then it will rain.” (q => p)The contrapositive is “If I do not drive to work today, then it will not rain.” (~ q => ~p )The inverse is “If it does not rain today, then I will not drive to work.” (~ p => ~q )

p(q r) p ( q r)∨ [p q p q]∨ ( p) ((∨ q r)∨ p (∨ q r) [Double Negation Law]∨ (p ∨ q) r ∨ [Associative Law]

( q p) r ∨ ∨ [Commutative Law]

q (p r) ∨ ∨ [Associative Law]

q (p r) ∨ [p q p q]∨

Show that p(q r) and q (p ∨ r) are logically equivalent using the laws of logical equivalences. Be sure to cite each law whenever used.

(a) F; (b) T; (c) F; (d) T; (e) F; (f) T

(a) F; (b) T

Using induction prove that 103n+13n+1 is divisible by 7 for all positive integer value of n

Let P(n)= 103n+13n+1 P(0)=1+13=14 which is divisible by 7P(1)=1000+169=1169 which is divisible by 7Let us assume P(K)= 103k+13k+1 is divisible by 7Therefore P(K)= 103k+13k+1 =7p where p is a positive integerP(k+1)= 103(k+1)+13(k+1)+1 = 103k+3+13k+2

= 103103k+13k+2

= 103(7p - 13k+1) +13k+2

= 7000p – 1000.13k+1+13 .13k+1

= 7000p – 987.13k+1

= 7(1000p – 141.13k+1) which is divisible by 7 as the quantity inside the parentheses is an integer