1 / 36

Direct proof technique

Direct proof technique. The goal is to explain why some assertion is true. Formal proof: Sequence of statements Starts with some axiom (universally agreed-upon premise).

kaida
Télécharger la présentation

Direct proof technique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Direct proof technique • The goal is to explain why some assertion is true. • Formal proof: • Sequence of statements • Starts with some axiom (universally agreed-upon premise). • Remaining statements are further axioms, or derived statements based on earlier statements in the proof according to rules of valid argument/inference. (You may also use results of theorems proved elsewhere.) • Last statement is the theorem to be proved. • Our proofs will not be quite this formal. • Nevertheless: we need to begin by looking at relevant definitions, axioms and given information.

  2. Technique • Follow advice in book • Steps: • Begin with given information • Apply definitions • Compare what you have with what you want. Experiment by manipulating this information, use related facts, with the goal in mind. • End with satisfying the desired property. • Let’s first look at some simple definitions • Odd and even numbers • Hint: if something looks hard to prove, maybe it’s false!

  3. Example direct proof • “If the sum of 2 integers is even, then their difference is even.” • Incidentally, in symbols, the statement looks like this: x y (even(x + y)  even(x – y)) • Here we go! Let x and y be integers such that x + y is even. By the definition of even, k such that x + y = 2k.Then, x – y = x + y – 2y = 2k – 2y = 2(k – y) and observe that k – y is an integer too. So, by definition, x – y is even because it’s 2 * (integer).

  4. Divisibility • The symbol “|” means “divides”. We say that a | b if there exists some integer k such that ak = b. • Or we can say: b is a multiple of a. • Let’s use the direct proof technique for divisibility problems. It will sound like how we worked with even numbers, but more general. • Prove or disprove: • 3 divides the sum of any 3 consecutive integers • If a | b and b | c, then a | c. • If a | b and a | c, then a | (b + c). • If a | bc, then a | b or a | c. • If x and y are odd, then 6 | (3x + 3y).

  5. Rational • A number is rational if it can be written of the form a / b, where • a and b are integers • a and b have no common factors • b is not 0 • Example: 7.5 is rational because we can let a = 15 and b = 2.

  6. Rational opposite • Let’s show that: if x is rational, then –x is rational. • Since x is rational, x = a/b where a and b are integers with no common factors, and b is not 0. • By arithmetic, –x = –a/b. • We have to explain why –x satisfies the definition of rational. • Notice that both –a and b are integers. • If a and b have no common factors, then –a and b couldn’t have any common factors either. • b is still not zero. • We conclude that –x is rational.

  7. Rational addition • If x and y are rational, then x+y is rational • According to the definition, let x = a/b and y = c/d. • x+y = (ad + bc) / bd • Since a, b, c and d are all integers, we can add and multiply integers to obtain more integers. Thus, (ad +bc) and bd are integers. • There is no common factor between (ad+bc) and bd. • Neither b nor d is zero. Thus, bd is not 0. • Conclusion: x+y satisfies the definition of rational number.

  8. Proof practice • Floor and ceiling functions • Proof by contradiction • Iterative algorithms • What is the termination condition? • Application: Sequences and series

  9. Floor and ceiling • Used to calculate phone bill, postage, and loop iterations • floor(x) = round down to the next lower integer • ceil(x) = round up to the next higher integer • Examples • floor() = 3, floor(–) = –4, floor(17) = 17 • ceil() = 4, ceil(–) = –3, ceil(17) = 17 • For which real numbers x is floor(x) equal to 2? • For which real numbers x is ceil(x) equal to 6?

  10. Fractions • Often we need to take floor/ceil of a fraction. Can we derive formulas for floor(a/b) and ceil(a/b) ? Floor(a/b) = (a – a % b) / b Ceil(a/b) = (a + (b – a) % b) / b

  11. Loop iteration formula • A for-loop (in C, C++ or Java) often has this general format: for (i = a; i <= b; i += s) • The number of loop iterations is floor((b – a)/s) + 1 • Example: for (i = 3; i <= 18; i += 5) // We execute when i = 3, 8, 13, 18.

  12. Indirect proof • Common proof technique • Essentially, we show that the negation of the given statement is false. • Begin the proof by saying, “Suppose not.” The negation of the given statement gives us 1 extra piece of information. • During the proof, we arrive at a contradiction. Thus, we conclude that ~P is false; thus P must be true. • Example: • If I give 100 marbles to 23 people, then somebody must get at least 5.

  13. Another example • “For all integers n, if n2 is even, then n is even.” • Proof by contradiction. • Assume the statement is false. Then there exists an integer n such that n2 is even and n is odd. Since n is odd, it may be written as n = (2k+1). Then n2 = (2k+1)2 = 4k2 + 4k + 1 = 2(2k2 + 2k) + 1. Since 2k2 + 2k is an integer, then n2 satisfies the definition of an odd number. We have reached a contradiction, since earlier we said n2 is even. Thus the original statement must be true. • Alternatively, can prove by contrapositive. The equivalent statement is: “… if n is odd, then n2 is odd.”

  14. Irrational addition • If x is rational and y is irrational, then x+y is irrational. • Suppose not! • Then, we have that: x is rational, y is irrational, AND x+y is rational. • We already know that the sum of two rationals is rational, and that the opposite of a rational is rational. • Subtraction means adding the opposite. Thus, the difference of two rationals must be rational. • Notice that y = (x+y) – x. The two numbers (x+y) and x are rational. Therefore the difference, y, is rational. But this contradicts our earlier assumption that y is irrational! • Conclusion: The original statement must be correct.

  15. Algorithm • Heart of any computer program • 2 kinds • Explicit formula: area of triangle, compute loan payment • Iterative computation: many examples! sorting an array listing prime numbers factorial GCF Square root Fibonacci

  16. Closer look • Euclidean algorithm to compute GCF • Start with 2 numbers • Loop: Divide the smaller into the larger if remainder = 0, answer is the smaller else, continue with the smaller number and remainder • Square root of “a” • Start with an initial guess x0 • xn+1 = average of xn and a/xn • Stop when difference between 2 consecutive xi are sufficiently small.

  17. Sequence and series • A sequence is essentially a list or array of values • A series is the sum of these values • Terms separated by “+” instead of “,” • Application: an operating system often needs to know the execution time of a computer program in order to best schedule that task. • A program’s execution time is largely dependent on loops! Especially nested loops. • We’ll use series formulas to calculate the number of iterations.

  18. Notation • Sequence notation (like an array) • Can be explicit formula, as in: an = 4 + 3n • Or can be recursively defined, as in: a1 = 5 an+1 = 2an, n  1 • Series notation • a1 + a2 + a3 + a4 Too inefficient • Better to use Sigma notation

  19. Applications • Sequence vs. series • Meaning of sigma notation • Common series formulas • Mathematical induction

  20. Bernoulli formulas • Help us evaluate series, e.g. to count loop iterations • Nested loop can give rise to nested sigma expression

  21. Example • Use Bernoulli formulas to determine the first hundred terms of (3)(7) + (5)(12) + (7)(17) + (9)(22) + … • First, write each term in terms of the term number, i Term formula = (2i + 1)(5i + 2) = 10i2 + 7i + 2 • Apply Bernoulli formulas.

  22. How to check • If we say: sum(f(i)) = S(n), then we can check our sum answer this way: S(n) – S(n – 1) = f(n) • For example, consider f(i) = 6i. • The Bernoulli formula tells us that sum(f(i)) = 3n(n+1). • So, S(n) = 3n(n+1) • Work out S(n) – S(n – 1) = 3n(n+1) – 3(n – 1)n = 3n(n+1-(n – 1)) = 6n • The answer checks because f(n) = 6n equivalently means f(i) = 6i. • What would it look like if our summation formula is wrong? • The f(n) would not match the original term formula. • For example, we might have f(n) = 15n, but we originally wanted the summation of 6i, not 15i.

  23. Inverse Bernoulli • Review: Bernoulli formulas are used to help us convert from a term formula to a summation formula for a series. • The way of checking summation formulas gives us an elegant way to calculate a term formula if we are given the summation formula. • Ex. Finding the sum of i32i is not easy. • Ex. But it is easy to find the term formula if we know if a series sum formula is n32n. Just plug in n and n – 1 and subtract! • In fact, doing S(n) – S(n – 1) can be used to guess an unknown summation formula.

  24. Nested loop • Let’s count the operations in this nested loop. for (i = 1; i <= n; ++i) for (j = 1; j <= n; ++j) // assume 3 stmts in body • Outer loop: • We do the i=1 once • We do the i<=n (n+1) times • We do the ++i n times. • Inner loop: • We enter the inner loop n times. Each time we have: (1 + (n+1) + n + 3n). • Total = 5n2 + 4n + 2 operations.

  25. Nested loop #2 • Let’s change the inner loop bound to i for (i = 1; i <= n; ++i) for (j = 1; j <= i; ++j) // assume 3 stmts in body • Outer loop is still: 1 + (n+1) + n operations • Inner loop: • We enter the inner loop i times, where i could be 1 to n. For each i, we have: (1 + (i+1) + i + 3i). • So, we have to sum: 5i + 2. • Total = (5/2)n2 + (13/2)n + 2 operations.

  26. Loop correctness • Eventually, we want to be able to show that our loops are correct • Powerful technique: Principle of Mathematical Induction • Useful for proving many assertions • Sum formulas • Linear-combination formulas • Divisibility questions • Inequalities • Correctness of loops

  27. Induction • P(n) is a statement that should be true for all positive integers n, or more generally for integer values  (some integer). • How to prove: • Show that P(1) is true. This is the “base case.” • Show that if P(k) is true for some k  1, then P(k+1) must also be true. This is the “inductive step.” • If you can do these two steps, then you can say: “Since P(1) is true and P(k)  P(k+1) for an arbitrary k  1, then P(n) is true for all n  1.” • “domino effect”

  28. Type I: Summations • Let’s first apply induction to verifying summation formulas. The key is to add the next term to both sides of the equation. • We’ll work out these examples: • n  1, 1 + 3 + 5 + 7 + … + (2n – 1) = n2 • n  1, 12 + 22 + 32 + … + n2 = n(n+1)(2n+1)/6 • n  1, 1(1!) + 2(2!) + 3(3!) + … n(n!) = (n+1)! – 1

  29. Induction • Types of statements you’ll often see • Summations  • Linear combination • Divisibility • Inequalities • Loop correctness

  30. Type II: Linear formulas • n  24, x, y  0 such that n = 5x + 7y. • “Any integer n  24 can be expressed …” • Base case: if n = 24, then choose x = 2 and y = 2. • Next, assume P(k) is true. That is, k = 5x + 7y. • Now we need a similar formula for k+1. A table of values may help. • We see that if y  2, then k + 1 = 5(x + 3) + 7(y – 2) else k + 1 = 5(x – 4) + 7(y + 3) Two ways to add a penny: Trade away two 7’s for three 5’s, or Trade away four 5’s for three 7’s.

  31. Try another • n  14, x, y  0 such that n = 3x + 8y. • “Any amount of postage 14 cents or higher can be achieved by using some combination of 3 and 8 cent stamps.” • The goal of the inductive step is to write alternate formulas for k+1: k + 1 = a(x + ___) + b(y – ___) k + 1 = a(x – ___) + b(y + ___) We have to give two formulas. Choose the appropriate formula to avoid a negative.

  32. Type III: Divisibility • We want to show that: a | f(n) • Recall what our goal is: to go from P(k) to P(k+1) • One way to bridge the gap is to “subtract” P(k) from P(k+1) and verify that what results is true. Then add this residual to P(k) to conclude P(k+1). • For example, we may need to show that 5 | 6n – 1. The crux of the proof centers on f(n) = 6n – 1. Then: f(k) = 6k – 1 and f(k+1) = 6k+1 – 1, so that: f(k+1) – f(k) = (6k+1 – 1) – (6k – 1) = 6k+1 – 6k = 6k (6 – 1) = 5 * 6k. Note that this is divisible by 5. *** see handout

  33. Alt approach • Alternative approach: write P(k+1) of the form: P(k+1) = x P(k) + y, where x and y are clearly multiples of a. • Often handy for multiple exponential terms. • Ex. For all positive integers, 4 | 3n + 7n – 2. In inductive step, we can write 3k+1 +7k+1 – 2 = 3*3k + (3+4)7k – 2 = 3*3k + 3*7k + 4*7k – 6 + 4 = 3(3k + 7k – 2) + 4(7k + 1)

  34. Examples • For all positive integers n, 3n is odd. Sometimes we have a formula, and we want to be sure that it always evaluates to an integer. This turns out to be a divisibility problem in disguise.  • For all positive integers n, (2/5)4n +(3/5)(–1)n is an integer.

  35. Type IV: Inequalities • Purpose: Sometimes we want to know if one algorithm is more efficient than another. • The statement P(n) is of the form f(n) < g(n). • The “<“ could be some other relational operator, e.g. “”. • During the inductive step, to leap from P(k) to P(k+1), we need to verify either: • f(k+1) – f(k) < g(k+1) – g(k) or • f(k+1) / f(k) < g(k+1) / g(k) whichever is easier • Once you have established that inequality, then add or multiply to f(k) < g(k), as appropriate to conclude with f(k+1) < g(k+1). • Be careful to structure the proof so that you are not assuming what you are trying to prove.

  36. Type V: loop correctness • Given a loop, and certain information about the loop: • Precondition • Invariant • Postcondition • For a loop to be correct, verify the following: • The precondition is true when the loop starts. • The invariant is true as we go from iter k to iter k+1. • The loop terminates. • The postcondition is true when the loop is done. • ***e.g. See handout (adding x 10 times yields 10x) • e.g. a loop that computes a summation of i2

More Related