Discrete Mathematics - University of Colorado...
Transcript of Discrete Mathematics - University of Colorado...
![Page 1: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/1.jpg)
Discrete Mathematics
Jeremy Siek
Spring 2010
Jeremy Siek Discrete Mathematics 1 / 118
![Page 2: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/2.jpg)
Jeremy Siek Discrete Mathematics 2 / 118
![Page 3: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/3.jpg)
Outline of Lecture 1
1. Course Information
2. Overview of Discrete Mathematics
Jeremy Siek Discrete Mathematics 2 / 118
![Page 4: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/4.jpg)
Course Information
I Class web page:http://ecee.colorado.edu/~siek/ecen3703/spring10
I Textbooks:I Discrete Mathematics and its Applications, 6th Edition, by Rosen. (At
the CU bookstore.)I A Tutorial Introduction to Structured Isar Proofs, by Nipkow.
(Available online.)I Isabelle/HOL – A Proof Assistant for Higher-Order Logic, by Nipkow,
Paulson, and Wenzel. (Available online.)I How to Prove It: A Structured Approach, by Daniel J. Velleman.
I Grading:Quizzes 30%Midterm exam 30%Final exam 40%
Jeremy Siek Discrete Mathematics 3 / 118
![Page 5: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/5.jpg)
Course Information: Homework
I There are weekly homework assignments.I The quizzes and exams are based on the homework.I Every students gets a personal tutor named Isabelle. Isabelle is a
logic language, a programming language, and a most importantly,a proof checker.http://www.cl.cam.ac.uk/research/hvg/Isabelle/
I You know your proofs are correct when you convince Isabelle.
Jeremy Siek Discrete Mathematics 4 / 118
![Page 6: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/6.jpg)
Overview of Discrete Mathematics
Discrete
Mathematics
Jeremy Siek Discrete Mathematics 5 / 118
![Page 7: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/7.jpg)
Mathematics
I What is Math anyways?
I Is it the study of numbers?I Mathematics is actually much more broad.
DefinitionMathematics is the study of any truth regarding well-definedconcepts.
Numbers are just one kind of well-defined concept.
Jeremy Siek Discrete Mathematics 6 / 118
![Page 8: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/8.jpg)
Mathematics
I What is Math anyways?I Is it the study of numbers?
I Mathematics is actually much more broad.
DefinitionMathematics is the study of any truth regarding well-definedconcepts.
Numbers are just one kind of well-defined concept.
Jeremy Siek Discrete Mathematics 6 / 118
![Page 9: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/9.jpg)
Mathematics
I What is Math anyways?I Is it the study of numbers?I Mathematics is actually much more broad.
DefinitionMathematics is the study of any truth regarding well-definedconcepts.
Numbers are just one kind of well-defined concept.
Jeremy Siek Discrete Mathematics 6 / 118
![Page 10: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/10.jpg)
Mathematics
I What is Math anyways?I Is it the study of numbers?I Mathematics is actually much more broad.
DefinitionMathematics is the study of any truth regarding well-definedconcepts.
Numbers are just one kind of well-defined concept.
Jeremy Siek Discrete Mathematics 6 / 118
![Page 11: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/11.jpg)
Discrete
DefinitionSomething is discrete if is it composed of distinct, separable parts. (Incontrast to continuous.)
Discrete Continuousintegers real numbersgraphs rational numbers
state machines differential equationsdigital computer radiosquantum physics Newtonian physics
Jeremy Siek Discrete Mathematics 7 / 118
![Page 12: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/12.jpg)
Discrete Mathematics
DefinitionDiscrete Mathematics is the study of any truth regarding discreteentities.
I That’s pretty broad. So what is it really?I Discrete math is the foundation for the rigorous understanding of
computer systems.
Jeremy Siek Discrete Mathematics 8 / 118
![Page 13: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/13.jpg)
A Discrete Problem: Sudoku
7
1
3 9
3
1 8
6
5
6 4
3
7
7
7
7
7
2
2
2
2
2
2
3
3
3
3
1
1
4
4
45
6
6
8
8
8
9
9
9
I What are the rules of Sudoku?
I Spend the next few minutes filling in this board.I Write down the rules of Sudoku on a sheet of paper.I Pass your paper to the person on your right. Are the rules that
you’ve been passed correct? If not, give an example.
Jeremy Siek Discrete Mathematics 9 / 118
![Page 14: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/14.jpg)
A Discrete Problem: Sudoku
7
1
3 9
3
1 8
6
5
6 4
3
7
7
7
7
7
2
2
2
2
2
2
3
3
3
3
1
1
4
4
45
6
6
8
8
8
9
9
9
I What are the rules of Sudoku?I Spend the next few minutes filling in this board.
I Write down the rules of Sudoku on a sheet of paper.I Pass your paper to the person on your right. Are the rules that
you’ve been passed correct? If not, give an example.
Jeremy Siek Discrete Mathematics 9 / 118
![Page 15: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/15.jpg)
A Discrete Problem: Sudoku
7
1
3 9
3
1 8
6
5
6 4
3
7
7
7
7
7
2
2
2
2
2
2
3
3
3
3
1
1
4
4
45
6
6
8
8
8
9
9
9
I What are the rules of Sudoku?I Spend the next few minutes filling in this board.I Write down the rules of Sudoku on a sheet of paper.
I Pass your paper to the person on your right. Are the rules thatyou’ve been passed correct? If not, give an example.
Jeremy Siek Discrete Mathematics 9 / 118
![Page 16: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/16.jpg)
A Discrete Problem: Sudoku
7
1
3 9
3
1 8
6
5
6 4
3
7
7
7
7
7
2
2
2
2
2
2
3
3
3
3
1
1
4
4
45
6
6
8
8
8
9
9
9
I What are the rules of Sudoku?I Spend the next few minutes filling in this board.I Write down the rules of Sudoku on a sheet of paper.I Pass your paper to the person on your right. Are the rules that
you’ve been passed correct? If not, give an example.
Jeremy Siek Discrete Mathematics 9 / 118
![Page 17: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/17.jpg)
Abstracting Sudoku
7
1
3 9
3
1 8
6
5
6 4
3
7
7
7
7
7
2
2
2
2
2
2
3
3
3
3
1
1
4
4
45
6
6
8
8
8
9
9
9
I What aspects of the game of Sudoku don’t really matter?I What could you change such that an expert Sudoku player would
immediately be an expert of the modified game?I What aspects of the game really matter?
Jeremy Siek Discrete Mathematics 10 / 118
![Page 18: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/18.jpg)
Sudoku Solver
7
1
3 9
3
1 8
6
5
6 4
3
7
7
7
7
7
2
2
2
2
2
2
3
3
3
3
1
1
4
4
45
6
6
8
8
8
9
9
9
I Write down a pseudo-code algorithm for solving Soduku.I What data structures did you use?I What kind of algorithm did you use?I Does your algorithm always solve the puzzle?I How long does your algorithm take to finish in the worst case?
Jeremy Siek Discrete Mathematics 11 / 118
![Page 19: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/19.jpg)
Why Study Discrete Mathematics?
I It’s the basic language used to discuss computer systems. Youneed to learn the language if you want to converse with othercomputer professionals.
I It’s a toolbox full of the problem-solving techniques that you willuse over and over in your career.
I But best of all, studying discrete math will enhance your mind,turning it into a high-precision machine!
Jeremy Siek Discrete Mathematics 12 / 118
![Page 20: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/20.jpg)
Uses of Discrete Math are Everywhere
I Circuit designI Computer architectureI Computer networksI Operating systemsI Programming: algorithms and data structuresI Programming languagesI Computer security, encryptionI Error correcting codesI Graphics algorithms, game enginesI . . .
Jeremy Siek Discrete Mathematics 13 / 118
![Page 21: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/21.jpg)
Themes in Discrete Math
Mathematical Reasoning: read, understand, and create precisearguments.
Discrete Structures: model discrete systems and study theirproperties.
Algorithmic Thinking: create algorithms, verify that they work,analyze their time and space requirements.
Combinatorial Analysis: counting (not always as easy as it sounds!)
Jeremy Siek Discrete Mathematics 14 / 118
![Page 22: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/22.jpg)
Advice
I Read in advance.I Do the homework.I Form a study group.I Form an intense love/hate relationship with Isabelle.
Jeremy Siek Discrete Mathematics 15 / 118
![Page 23: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/23.jpg)
Outline of Lecture 2
1. Propositional Logic
2. Syntax and Meaning of Propositional Logic
Jeremy Siek Discrete Mathematics 16 / 118
![Page 24: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/24.jpg)
Logic
I Logic defines the ground rules for establishing truths.I Mathematical logic spells out these rules in complete detail,
defining what constitutes a formal proof.I Learning mathematical logic is a good way to learn logic because
it puts you on a firm foundation.I Writing formal proofs in mathematical logic is a lot like computer
programming. The rules of the game are clearly defined.
Jeremy Siek Discrete Mathematics 17 / 118
![Page 25: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/25.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.
I A propositional variable (lowercase letters p, q, r) is aproposition. These variables model true/false statements.
I The negation of a proposition P, written ¬ P, is a proposition.I The conjunction (and) of two propositions, written P ∧ Q, is a
proposition.I The disjunction (or) of two propositions, written P ∨ Q, is a
proposition.I The conditional statement (implies), written P −→ Q, is a
proposition.I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 26: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/26.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.I A propositional variable (lowercase letters p, q, r) is a
proposition. These variables model true/false statements.
I The negation of a proposition P, written ¬ P, is a proposition.I The conjunction (and) of two propositions, written P ∧ Q, is a
proposition.I The disjunction (or) of two propositions, written P ∨ Q, is a
proposition.I The conditional statement (implies), written P −→ Q, is a
proposition.I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 27: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/27.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.I A propositional variable (lowercase letters p, q, r) is a
proposition. These variables model true/false statements.I The negation of a proposition P, written ¬ P, is a proposition.
I The conjunction (and) of two propositions, written P ∧ Q, is aproposition.
I The disjunction (or) of two propositions, written P ∨ Q, is aproposition.
I The conditional statement (implies), written P −→ Q, is aproposition.
I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 28: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/28.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.I A propositional variable (lowercase letters p, q, r) is a
proposition. These variables model true/false statements.I The negation of a proposition P, written ¬ P, is a proposition.I The conjunction (and) of two propositions, written P ∧ Q, is a
proposition.
I The disjunction (or) of two propositions, written P ∨ Q, is aproposition.
I The conditional statement (implies), written P −→ Q, is aproposition.
I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 29: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/29.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.I A propositional variable (lowercase letters p, q, r) is a
proposition. These variables model true/false statements.I The negation of a proposition P, written ¬ P, is a proposition.I The conjunction (and) of two propositions, written P ∧ Q, is a
proposition.I The disjunction (or) of two propositions, written P ∨ Q, is a
proposition.
I The conditional statement (implies), written P −→ Q, is aproposition.
I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 30: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/30.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.I A propositional variable (lowercase letters p, q, r) is a
proposition. These variables model true/false statements.I The negation of a proposition P, written ¬ P, is a proposition.I The conjunction (and) of two propositions, written P ∧ Q, is a
proposition.I The disjunction (or) of two propositions, written P ∨ Q, is a
proposition.I The conditional statement (implies), written P −→ Q, is a
proposition.
I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 31: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/31.jpg)
Propositional Logic
I Propositional logic is a language that abstracts away from contentand focuses on the logical connectives.
I Uppercase letters like P and Q are meta-variables that areplaceholders for propositions.
I The following rules define what is a proposition.I A propositional variable (lowercase letters p, q, r) is a
proposition. These variables model true/false statements.I The negation of a proposition P, written ¬ P, is a proposition.I The conjunction (and) of two propositions, written P ∧ Q, is a
proposition.I The disjunction (or) of two propositions, written P ∨ Q, is a
proposition.I The conditional statement (implies), written P −→ Q, is a
proposition.I The Boolean values True and False are propositions.
Jeremy Siek Discrete Mathematics 18 / 118
![Page 32: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/32.jpg)
Propositional Logic
I Different authors include different logical connectives in theirdefinitions of Propositional Logic. However, these differences arenot important.
I In each case, the missing connectives can be defined in terms ofthe connectives that are present.
I For example, I left out exclusive or, P ⊕ Q, but
P ⊕ Q = (P ∧ ¬ Q) ∨ ¬ P ∧ Q
Jeremy Siek Discrete Mathematics 19 / 118
![Page 33: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/33.jpg)
Propositional Logic
I How expressive is Propositional Logic?I Can you write down the rules for Sudoku in Propositional Logic?
I It’s rather difficult if not impossible to express the rules of Sudokuin Propositional Logic.
I But Propositional Logic is a good first step towards more powerfullogics.
Jeremy Siek Discrete Mathematics 20 / 118
![Page 34: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/34.jpg)
Propositional Logic
I How expressive is Propositional Logic?I Can you write down the rules for Sudoku in Propositional Logic?I It’s rather difficult if not impossible to express the rules of Sudoku
in Propositional Logic.I But Propositional Logic is a good first step towards more powerful
logics.
Jeremy Siek Discrete Mathematics 20 / 118
![Page 35: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/35.jpg)
Meaning of Propositions
I A truth assignment maps propositional variables to True or False.The following is an example:
A ≡ {p 7→ True, q 7→ False, r 7→ True}A(p) = True A(q) = False A(r) = True
I The meaning of a proposition is a function from truthassignments to True or False. We use the notation JP K for themeaning of proposition P .
JpK(A) = A(p)
J¬P K(A) =
{True if JP K(A) = False
False otherwise
Jeremy Siek Discrete Mathematics 21 / 118
![Page 36: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/36.jpg)
Meaning of Propositions, cont’d
JP ∧QK(A) =
{True if JP K(A) = True, JQK(A) = True
False otherwise
JP ∨QK(A) =
{False if JP K(A) = False, JQK(A) = False
True otherwise
JP −→ QK(A) =
{False if JP K(A) = True, JQK(A) = False
True otherwise
Jeremy Siek Discrete Mathematics 22 / 118
![Page 37: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/37.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 38: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/38.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 39: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/39.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 40: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/40.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 41: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/41.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 42: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/42.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 43: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/43.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 44: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/44.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 45: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/45.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 46: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/46.jpg)
Example Propositions
Suppose A = {p 7→ True, q 7→ False}.
I JpK(A) = True
I JqK(A) = False
I Jp ∧ pK(A) = True
I Jp ∧ qK(A) = False
I Jp ∨ qK(A) = True
I Jp −→ pK(A) = True
I Jq −→ pK(A) = True
I Jp −→ qK(A) = False
I J(p ∨ q) −→ qK(A) = False
Jeremy Siek Discrete Mathematics 23 / 118
![Page 47: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/47.jpg)
Tautologies
DefinitionA tautology is a proposition that is true in any truth assignment.
Examples:
I p −→ p
I q ∨ ¬q
I (p ∧ q) −→ (p ∨ q)
There are two ways to show that a proposition is a tautology:
1. Check the meaning of the proposition for every possible truthassignment. This is called model checking.
2. Contruct a proof that the proposition is a tautology.
Jeremy Siek Discrete Mathematics 24 / 118
![Page 48: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/48.jpg)
Model Checking
I One way to simplify the checking is to only consider truthassignments that include the variables that matter. For example,to check p −→ p, we only need to consider two truth assignments.
1. A1 = {p 7→ True}, Jp −→ pK(A1) = True
2. A2 = {p 7→ False}Jp −→ pK(A2) = True
I However, in real systems there are many variables, and thenumber of possible truth assignments grows quickly: it is 2n for nvariables.
I There are many researchers dedicated to discovering algorithmsthat speed up model checking.
Jeremy Siek Discrete Mathematics 25 / 118
![Page 49: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/49.jpg)
Stuff to Rememeber
Propositional Logic:
I The kinds of propositions.I The meaning of propositions.I How to check that a proposition is a tautology.
Jeremy Siek Discrete Mathematics 26 / 118
![Page 50: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/50.jpg)
Outline of Lecture 3
1. Proofs and Isabelle
2. Proof Strategy, Forward and Backwards Reasoning
3. Making Mistakes
Jeremy Siek Discrete Mathematics 27 / 118
![Page 51: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/51.jpg)
Theorems and Proofs
I In the context of propositional logic, a theorem is just a tautology.I In this course, we’ll be writing theorems and their proofs in the
Isabelle/Isar proof language.I Here’s the syntax for a theorem in Isabelle/Isar.
theorem "P"proof -
step 1step 2...step n
qedI Each step applies an inference rule to establish the truth of some
proposition.
Jeremy Siek Discrete Mathematics 28 / 118
![Page 52: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/52.jpg)
Inference Rules
I When applying inference rules, use the keyword have to establishintermediate truths and use the keyword show to conclude thesurrounding theorem or sub-proof.
I Most inference rules can be categorized as either an introductionor elimination rule.
I Introduction rules are for creating bigger propositions.I Elimination rules are for using propositions.I We write “Li proves P ” if there is a preceeding step or assumption
in the proof that is labeled Li and whose proposition is P .
Jeremy Siek Discrete Mathematics 29 / 118
![Page 53: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/53.jpg)
Introduction Rules
And If Li proves P and Lj proves Q, then write
from Li Lj have Lk: "P ∧ Q" ..
Or (1) If Li proves P , then write
from Li have Lk: "P ∨ Q" ..
Or (2) If Li proves Q, then write
from Li have Lk: "P ∨ Q" ..
Implies
have Lk: "P −→ Q"proof
assume Li: "P"...· · · show "Q" · · ·
qed
Jeremy Siek Discrete Mathematics 30 / 118
![Page 54: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/54.jpg)
Introduction Rules, cont’d
Not have Lk: "¬ P"proof
assume Li: "P"...· · · show "False" · · ·
qed
Hint: The Appendix of our text Isabelle/HOL – A Proof Assistant forHigher-Order Logic lists the logical connectives, such as −→ and ¬, andfor each of them gives two ways to input them as ASCI text. If youuse Emacs (or XEmacs) to edit your Isabelle files, then the x-symbolpackage can be used to display the logic connectives in their traditionalform.
Jeremy Siek Discrete Mathematics 31 / 118
![Page 55: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/55.jpg)
Using Assumptions
I Sometimes the thing you need to prove is already an assumption.In this case your job is really easy!
I If Li proves P , write
from Li have "P" .
Jeremy Siek Discrete Mathematics 32 / 118
![Page 56: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/56.jpg)
Example Proof
theorem "p −→ p"
proof -
show "p −→ p"
proofassume 1: "p"
from 1 show "p" .qed
qed
Instead of proof -, you can apply the introduction ruleright away.
theorem "p −→ p"
proofassume 1: "p"
from 1 show "p" .qed
Jeremy Siek Discrete Mathematics 33 / 118
![Page 57: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/57.jpg)
Exercise
theorem "p −→ (p ∧ p)"
Jeremy Siek Discrete Mathematics 34 / 118
![Page 58: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/58.jpg)
Solution
theorem "p −→ (p ∧ p)"
proofassume 1: "p"
from 1 1 show "p ∧ p" ..qed
Jeremy Siek Discrete Mathematics 35 / 118
![Page 59: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/59.jpg)
Elimination Rules
And (1) If Li proves P ∧Q, then write
from Li have Lk: "P" ..
And (2) If Li proves P ∧Q, then write
from Li have Lk: "Q" ..
Or If Li proves P ∨Q, then write
note Li
moreover { assume Lj: "P"...· · · have "R" · · ·} moreover { assume Lm: "Q"...· · · have "R" · · ·} ultimately have Lk: "R" ..
Jeremy Siek Discrete Mathematics 36 / 118
![Page 60: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/60.jpg)
Elimination Rules, cont’d
Implies If Li proves P −→ Q and Lj proves P , then write
from Li Lj have Lk: "Q" ..
(This rule is known as modus ponens.)
Not If Li proves ¬P and Lj proves P , then write
from Li Lj have Lk: "Q" ..
False If Li proves False, then write
from Li have Lk: "P" ..
Jeremy Siek Discrete Mathematics 37 / 118
![Page 61: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/61.jpg)
Example Proof
theorem "(p ∧ q) −→ (p ∨ q)"
proofassume 1: "p ∧ q"
from 1 have 2: "p" ..from 2 show "p ∨ q" ..
qed
Jeremy Siek Discrete Mathematics 38 / 118
![Page 62: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/62.jpg)
Another Proof
theorem "(p ∨ q) ∧ (p −→ r) ∧ (q −→ r) −→ r"
proofassume 1: "(p ∨ q) ∧ (p −→ r) ∧ (q −→ r)"
from 1 have 2: "p ∨ q" ..from 1 have 3: "(p −→ r) ∧ (q −→ r)" ..from 3 have 4: "p −→ r" ..from 3 have 5: "q −→ r" ..note 2
moreover { assume 6: "p"
from 4 6 have "r" ..} moreover { assume 7: "q"
from 5 7 have "r" ..} ultimately show "r" ..
qed
Jeremy Siek Discrete Mathematics 39 / 118
![Page 63: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/63.jpg)
Exercise
theorem "(p −→ q) ∧ (q −→ r) −→ (p −→ r)"
Jeremy Siek Discrete Mathematics 40 / 118
![Page 64: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/64.jpg)
Solution
theorem "(p −→ q) ∧ (q −→ r) −→ (p −→ r)"
proofassume 1: "(p −→ q) ∧ (q −→ r)"
from 1 have 2: "p −→ q" ..from 1 have 3: "q −→ r" ..show "p −→ r"
proofassume 4: "p"
from 2 4 have 5: "q" ..from 3 5 show "r" ..
qedqed
Jeremy Siek Discrete Mathematics 41 / 118
![Page 65: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/65.jpg)
Forward and Backwards Reasoning
And-Intro (forward) If Li proves P and Lj proves Q, then write
from Li Lj have Lk: "P ∧ Q" ..
And-Intro (backwards)
have Lk: "P ∧ Q"proof
...· · · show "P" · · ·
next...· · · show "Q" · · ·
qed
Jeremy Siek Discrete Mathematics 42 / 118
![Page 66: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/66.jpg)
Forward and Backwards Reasoning, cont’d
Or-Intro (1) (forwards) If Li proves P , then write
from Li have Lk: "P ∨ Q" ..
Or-Intro (1) (backwards)
have Lk: "P ∨ Q"proof (rule disjI1)
...· · · show "P" · · ·
qed
Jeremy Siek Discrete Mathematics 43 / 118
![Page 67: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/67.jpg)
Forward and Backwards Reasoning, cont’d
Or-Intro (2) (forwards) If Li proves Q, then write
from Li have Lk: "P ∨ Q" ..
Or-Intro (2) (backwards)
have Lk: "P ∨ Q"proof (rule disjI2)
...· · · show "Q" · · ·
qed
Jeremy Siek Discrete Mathematics 44 / 118
![Page 68: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/68.jpg)
Strategy
I Let the proposition you’re trying to prove guide your proof.I Find the top-most logical connective.I Apply the introduction rule, backwards, for that connective.I Keep doing that until what you need to prove no longer contains
any logical connectives.I Then work forwards from your assumptions (using elimination
rules) until you’ve proved what you need.
ConclusionAssumption
BackwardsReasoning
ForwardsReasoning
Assumption
Jeremy Siek Discrete Mathematics 45 / 118
![Page 69: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/69.jpg)
Making Mistakes
I To err is human.I Isabelle will catch your mistakes.I Unfortunately, Isabelle is bad at describing your mistake.I Consider the following attempted proof
theorem "p −→ (p ∧ p)"
proof -
show "p −→ (p ∧ p)"
proofassume 1: "p"
from 1 show "p ∧ p"
I When Isabelle gets to from 1 show "p ∧ p" (adding .. at theend), it gives the following response:
Failed to finish proofAt command "..".
Jeremy Siek Discrete Mathematics 46 / 118
![Page 70: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/70.jpg)
Making Mistakes, cont’d
I In this case, the mistake was a missing label in the from clause.Conjuction introduction requires two premises, not one. Here’sthe fix:
theorem "p −→ (p ∧ p)"
proof -
show "p −→ (p ∧ p)"
proofassume 1: "p"
from 1 1 show "p ∧ p" ..qed
qed
I When Isablle says “no”, double check the inference rule. If thatdoesn’t work, get a classmate to look at it. If that doesn’t work,email the instructor with the minimal Isabelle file that exhibitsyour problem.
Jeremy Siek Discrete Mathematics 47 / 118
![Page 71: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/71.jpg)
Making Mistakes, cont’d
I Here’s another proof with a typo:
theorem "p −→ p"proof
assume 1: "p"from 1 show "q" .
qedI Isabelle responds with:
Local statement will fail to refine any pending goal
Failed attempt to solve goal by exported rule:
(p) =⇒ qAt command "show".
I The problem here is that the proposition in the show "q", doesnot match what we are trying to prove, which is p.
Jeremy Siek Discrete Mathematics 48 / 118
![Page 72: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/72.jpg)
Stuff to Rememeber
I How to write Isabelle/Isar proofs of tautologies in PropositionalLogic.
I The introduction and elimination rules.I Forwards and backwards reasoning.
Jeremy Siek Discrete Mathematics 49 / 118
![Page 73: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/73.jpg)
Outline of Lecture 4
1. Overview of First-Order Logic
2. Beyond Booleans: natural numbers, integers, etc.
3. Universal truths: “for all”
4. Existential truths: “there exists”
Jeremy Siek Discrete Mathematics 50 / 118
![Page 74: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/74.jpg)
Overview of First-Order Logic
I First-order logic is an extension of propositional logic, adding theability to reason about well-defined entities and operations.
I Isabelle provides many entities, such as natural numbers,integers, and lists.
I Isabelle also provides the means to define new entities and theiroperations.
I First-order logic adds two new kinds of propositions, “for all” (∀)and “there exists” (∃), that enable quantification over theseentities.
I For example, first-order logic can express ∀x :: nat. x = x.
Jeremy Siek Discrete Mathematics 51 / 118
![Page 75: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/75.jpg)
Beyond Booleans
I Natural numbers: 0, 1, 2, . . .
I Integers: . . . ,−1, 0, 1, . . .
I How does Isabelle know the difference between 0 (the naturalnumber) and 0 (the integer)?
I Sometimes it can tell from context, sometimes it can’t. (When itcan’t, you’ll see things like 0::’a)
I You can help Isabelle by giving a type annotation, such as 0 or 0.I We use natural numbers a lot, integers not so much.
Jeremy Siek Discrete Mathematics 52 / 118
![Page 76: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/76.jpg)
Natural Numbers
I There’s only two ways to construct a natural number:I 0I If n is a natural number, then so is Suc n.
(Suc is for successor. Think of Suc n as n + 1.)I Isabelle provides shorthands for numerals:
I 1 = Suc 0I 2 = Suc (Suc 0)I 3 = Suc (Suc (Suc 0))
Jeremy Siek Discrete Mathematics 53 / 118
![Page 77: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/77.jpg)
Arithmetic on Natural Numbers
I Isabelle provides arithmetic operations and many other functionson natural numbers.
I Warning: arithmetic on naturals is sometimes similar andsometimes different than integers. See/Isabelle/src/HOL/Nat.thy.
I For example,
1 + 1− 2 = 01− 2 + 1 = 1
Jeremy Siek Discrete Mathematics 54 / 118
![Page 78: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/78.jpg)
Universal Truths
I How do we express that a property is true for all naturalnumbers?
I Let P be some proposition that may mention n, then the followingis a proposition:
∀ n. P
I Example:I ∀ i j k. i + (j + k) = i + j + kI ∀ i j k. i = j ∧ j = k −→ i = k
Jeremy Siek Discrete Mathematics 55 / 118
![Page 79: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/79.jpg)
Introduction and Elimination Rules
For all-Intro
have Lk: "∀ n. P"proof
fix n...· · · show "P" · · ·
qed
For all-Elim If Li proves ∀ n. P, then write
from Li have Lk: "[n7→m]P" ..
where m is any entity of the same type as n.
The notation [n7→m]P (called substitution) refers to the propositionthat is the same as P except that all free occurences of n in P arereplaced by m.
Jeremy Siek Discrete Mathematics 56 / 118
![Page 80: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/80.jpg)
Substitution
I [x 7→ 1]x = 1
I [x 7→ 1]y = y
I [x 7→ 1](x ∧ y) = (1 ∧ y)I [x 7→ 1](∀y. x) = (∀y. 1)I [x 7→ 1](∀x. x) = (∀x. x) (The x under ∀x is not free, it is bound
by ∀x.)I [x 7→ 1]((∀x.x) ∧ x) = ((∀x. x) ∧ 1)
Jeremy Siek Discrete Mathematics 57 / 118
![Page 81: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/81.jpg)
Substitution
I [x 7→ 1]x = 1I [x 7→ 1]y = y
I [x 7→ 1](x ∧ y) = (1 ∧ y)I [x 7→ 1](∀y. x) = (∀y. 1)I [x 7→ 1](∀x. x) = (∀x. x) (The x under ∀x is not free, it is bound
by ∀x.)I [x 7→ 1]((∀x.x) ∧ x) = ((∀x. x) ∧ 1)
Jeremy Siek Discrete Mathematics 57 / 118
![Page 82: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/82.jpg)
Substitution
I [x 7→ 1]x = 1I [x 7→ 1]y = y
I [x 7→ 1](x ∧ y) = (1 ∧ y)
I [x 7→ 1](∀y. x) = (∀y. 1)I [x 7→ 1](∀x. x) = (∀x. x) (The x under ∀x is not free, it is bound
by ∀x.)I [x 7→ 1]((∀x.x) ∧ x) = ((∀x. x) ∧ 1)
Jeremy Siek Discrete Mathematics 57 / 118
![Page 83: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/83.jpg)
Substitution
I [x 7→ 1]x = 1I [x 7→ 1]y = y
I [x 7→ 1](x ∧ y) = (1 ∧ y)I [x 7→ 1](∀y. x) = (∀y. 1)
I [x 7→ 1](∀x. x) = (∀x. x) (The x under ∀x is not free, it is boundby ∀x.)
I [x 7→ 1]((∀x.x) ∧ x) = ((∀x. x) ∧ 1)
Jeremy Siek Discrete Mathematics 57 / 118
![Page 84: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/84.jpg)
Substitution
I [x 7→ 1]x = 1I [x 7→ 1]y = y
I [x 7→ 1](x ∧ y) = (1 ∧ y)I [x 7→ 1](∀y. x) = (∀y. 1)I [x 7→ 1](∀x. x) = (∀x. x) (The x under ∀x is not free, it is bound
by ∀x.)
I [x 7→ 1]((∀x.x) ∧ x) = ((∀x. x) ∧ 1)
Jeremy Siek Discrete Mathematics 57 / 118
![Page 85: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/85.jpg)
Substitution
I [x 7→ 1]x = 1I [x 7→ 1]y = y
I [x 7→ 1](x ∧ y) = (1 ∧ y)I [x 7→ 1](∀y. x) = (∀y. 1)I [x 7→ 1](∀x. x) = (∀x. x) (The x under ∀x is not free, it is bound
by ∀x.)I [x 7→ 1]((∀x.x) ∧ x) = ((∀x. x) ∧ 1)
Jeremy Siek Discrete Mathematics 57 / 118
![Page 86: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/86.jpg)
Example Proof using ∀
theoremassumes 1: "∀ x. man(x) −→ human(x)"
and 2: "∀ x. human(x) −→ hastwolegs(x)"
shows "∀ x. man(x) −→ hastwolegs(x)"
prooffix m
show "man(m) −→ hastwolegs(m)"
proofassume 3: "man(m)"
from 1 have 4: "man(m) −→ human(m)" ..from 4 3 have 5: "human(m)" ..from 2 have 6: "human(m) −→ hastwolegs(m)" ..from 6 5 show "hastwolegs(m)" ..
qedqed
Jeremy Siek Discrete Mathematics 58 / 118
![Page 87: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/87.jpg)
Exercise using ∀
Prove the universal modus ponens rule in Isabelle:
(∀ x. P x −→ Q x) ∧ P a −→ Q a
Jeremy Siek Discrete Mathematics 59 / 118
![Page 88: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/88.jpg)
Example of Proof by Cases
theorem fixes n::nat shows "n ≤ n^2"
proof (cases n)
case 0
have 1: "(0::nat) ≤ 0^2" by simp
from 1 show "n ≤ n^2" by (simp only: 0)
nextcase (Suc m)
have "Suc m ≤ (Suc m) * (Suc m)" by simp
also have ". . . = (Suc m)^2"
by (rule Groebner_Basis.class_semiring.semiring_rules)
finally have 1: "Suc m ≤ (Suc m)^2" .from 1 show "n ≤ n^2" by (simp only: Suc)
qed
I The fixes is like a ∀ for the variable n.
I The by simp performs arithmetic and equational reasoning.
I The also/finally combination provides a shorthand for equational reasoning.The . . . stands for the right-hand side of the previous line.
Jeremy Siek Discrete Mathematics 60 / 118
![Page 89: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/89.jpg)
Existential Truths
I How do we express that a property is true “for some” naturalnumber?
I Or equivalenty, expressing that “there exists” a natural numberwith the property.
I Let P be some proposition that may mention variable n, then thefollowing is a proposition:
∃ n. P
Jeremy Siek Discrete Mathematics 61 / 118
![Page 90: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/90.jpg)
Introduction and Elimination Rules for ∃
Exists-Intro If Li proves P , then write
from Li have Lk: "∃ n.P" ..
Exists-Elim If Li proves ∃ n. P, then write
from Li obtain m where Lk: "[n7→m]P" ..
Jeremy Siek Discrete Mathematics 62 / 118
![Page 91: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/91.jpg)
Exercise Proof Using ∃
Given the following definitions:
even(n) ≡ ∃m. n = 2m
odd(n) ≡ ∃m. n = 2m + 1
Prove on paper that if n and m are odd, then n + m is even.
Jeremy Siek Discrete Mathematics 63 / 118
![Page 92: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/92.jpg)
Proof Using ∃
TheoremIf n and m are odd, then n + m is even.
Proof.Because n is odd, there exists a k where n = 2k + 1. Because m is odd,there exists a q where m = 2q + 1. Son + m = 2k + 2q + 2 = 2(k + q + 1). Thus ∃p. n + m = 2p, and bydefinition, n + m is even.
Jeremy Siek Discrete Mathematics 64 / 118
![Page 93: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/93.jpg)
Isabelle Definitions
definition even :: "nat ⇒ bool" where"even n ≡ ∃ m. n = 2 * m"
definition odd :: "nat ⇒ bool" where"odd n ≡ ∃ m. n = 2 * m + 1"
I definition is a way to create simple functions.I Definitions may not be recursive.I by simp does not automatically unfold definitions, need to use
unfolding (see next slide).
Jeremy Siek Discrete Mathematics 65 / 118
![Page 94: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/94.jpg)
Proof In Isabelle Using Definitions and ∃
theorem assumes 1: "odd n" and 2: "odd m"
shows "even (n + m)"
proof -
from 1 have 3: "∃ k. n = 2 * k + 1" unfolding odd_def .from 3 obtain k where 4: "n = 2 * k + 1" ..from 2 have 5: "∃ q. m = 2 * q + 1" unfolding odd_def .from 5 obtain q where 6: "m = 2 * q + 1" ..from 4 6 have 7: "n + m = 2 * (k + q + 1)" by simp
from 7 have 8: "∃ p. n + m = 2 * p" ..from 8 show "even (n + m)" unfolding even_def .
qed
Jeremy Siek Discrete Mathematics 66 / 118
![Page 95: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/95.jpg)
First-Order Logic over Natural Numbers
I How expressive is First-Order Logic over Natural Numbers?
I Can you write down the rules for Sudoku?I What’s missing?
Jeremy Siek Discrete Mathematics 67 / 118
![Page 96: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/96.jpg)
First-Order Logic over Natural Numbers
I How expressive is First-Order Logic over Natural Numbers?I Can you write down the rules for Sudoku?
I What’s missing?
Jeremy Siek Discrete Mathematics 67 / 118
![Page 97: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/97.jpg)
First-Order Logic over Natural Numbers
I How expressive is First-Order Logic over Natural Numbers?I Can you write down the rules for Sudoku?I What’s missing?
Jeremy Siek Discrete Mathematics 67 / 118
![Page 98: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/98.jpg)
Stuff to Rememeber
I First-Order Logic adds the ability to reason about well-definedentities and adds ∀ and ∃.
I Natural numbers.I Proof rules for ∀ and ∃.I New from Isabelle: by simp, also/finally, unfolding, fix,
obtain/where, definition.
Jeremy Siek Discrete Mathematics 68 / 118
![Page 99: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/99.jpg)
Outline of Lecture 5
1. Proof by induction
2. Functions, defined by primitive recursion
Jeremy Siek Discrete Mathematics 69 / 118
![Page 100: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/100.jpg)
Induction
I Induction is the primary way we prove universal truths aboutentities of unbounded size (like natural numbers).
I (If the size is bounded, then we can do proof by cases.)I Induction is also the way we define things about entities of
unbounded size.
Jeremy Siek Discrete Mathematics 70 / 118
![Page 101: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/101.jpg)
Motivation: Dominos
I Domino Principle: Line up any number of dominos in a row;knock the first one over and they all fall down.
I Let Fk be the statement that the kth domino falls.I We know that, for any k, if Fk falls down, then so does Fk+1.I We knock down F0.I It’s clear that for any n, Fn falls down, i.e., ∀n. Fn.
Jeremy Siek Discrete Mathematics 71 / 118
![Page 102: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/102.jpg)
Mathematical Induction
To show that some property P is universally true of natural numbers
∀ n. P n
you need to prove
I P 0
I ∀ n. P n −→ P (n + 1)
Jeremy Siek Discrete Mathematics 72 / 118
![Page 103: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/103.jpg)
Example Proof by Mathematical Induction
Theorem∀n. 0 + 1 + · · ·+ n = n(n+1)
2 .
Proof.The proof is by mathematical induction on n.
I Base Step: We need to show that 0 = 0(0+1)2
, but that’s obviously true.
I Inductive Step: The inductive hypothesis (IH) is0 + 1 + · · ·+ n = n(n+1)
2.
0 + 1 + · · ·+ n + (n + 1) = (n + 1) +n(n + 1)
2(by the IH)
=2(n + 1) + n(n + 1)
2=
(n + 1)(n + 2)
2
=(n + 1)((n + 1) + 1)
2.
Jeremy Siek Discrete Mathematics 73 / 118
![Page 104: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/104.jpg)
Primitive Recursive Functions in Isabelle
I First, we need to express 0 + 1 + · · ·+ n in Isabelle. We can definea function that sums up the natural numbers.
I Isabelle provides a mechanism, called primrec, for definingsimple recursive functions.
I There is one clause in the primrec for each way of creating theinput value. (Recall the two ways to create a natural.)
I You may recursively call the function on a sub-part of the input,in this case the n within Suc n. In Isabelle, function call doesn’trequire parenthesis, just list the argumetns after the function.
I The ⇒ symbol is for function types. The input type (the domain)is to the left of the arrow and the output type (the codomain) is tothe right.
primrec sumto :: "nat ⇒ nat" where"sumto 0 = 0" |
"sumto (Suc n) = Suc n + sumto n"
Jeremy Siek Discrete Mathematics 74 / 118
![Page 105: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/105.jpg)
Mathematical Induction in Isabelle
theorem "sumto n = (n*(n + 1)) div 2"
proof (induct n)
show "sumto 0 = 0*(0 + 1) div 2" by simp
nextfix n assume IH: "sumto n = n*(n + 1) div 2"
have "sumto(Suc n) = Suc n + sumto n" by simp
also from IH have ". . . = Suc n + (n*(n+1) div 2)" by simp
also have ". . . = (Suc n * (Suc n + 1)) div 2" by simp
finally show "sumto(Suc n) = (Suc n * (Suc n + 1)) div 2" .qed
Jeremy Siek Discrete Mathematics 75 / 118
![Page 106: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/106.jpg)
Tower of Hanoi
I Can you move all of the discs from peg A to peg C?I Complication: you are not allowed to put larger discs on top of
smaller discs.
A B C
I How long does your algorithm take?
Jeremy Siek Discrete Mathematics 76 / 118
![Page 107: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/107.jpg)
Tower of Hanoi, cont’d
A B C
I Algorithm: To move n discs from peg A to peg C:1. Move n− 1 discs from A to B.2. Move disc #n from A to C.3. Move n− 1 discs from B to C so they sit on disc #n.
I Let’s characterize the number of moves needed for a tower of ndiscs.
T (0) = 0T (n) = 2T (n− 1) + 1
Jeremy Siek Discrete Mathematics 77 / 118
![Page 108: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/108.jpg)
Tower of Hanoi, cont’d
T (0) = 0T (n) = 2T (n− 1) + 1
I The above is an example of a recurrence relation.I It’s a valid definition, but a bit difficult to understand and a bit
expensive to evaluate (suppose n is large!). Can you think of anon-recursive expression for T (n)?
I Here’s a closed form solution:
T (n) = 2n − 1
I On paper, prove that the closed form solution is correct.
Jeremy Siek Discrete Mathematics 78 / 118
![Page 109: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/109.jpg)
Tower of Hanoi, cont’d
T (0) = 0T (n) = 2T (n− 1) + 1
I The above is an example of a recurrence relation.I It’s a valid definition, but a bit difficult to understand and a bit
expensive to evaluate (suppose n is large!). Can you think of anon-recursive expression for T (n)?
I Here’s a closed form solution:
T (n) = 2n − 1
I On paper, prove that the closed form solution is correct.
Jeremy Siek Discrete Mathematics 78 / 118
![Page 110: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/110.jpg)
Exercise, Tower of Hanoi in Isabelle
I Create a primrec for T (n).
T (0) = 0T (n) = 2T (n− 1) + 1
I Prove that T (n) = 2n − 1 in Isabelle.I In addition to by simp, you will need to use by arith, which
performs slightly more advanced arithmetical reasoning.I Hint: if Isabelle rejects one of the steps in your proof, try creating
a new step that is a smaller “distance” from the previous step.
Jeremy Siek Discrete Mathematics 79 / 118
![Page 111: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/111.jpg)
Solution for Tower of Hanoi
primrec moves :: "nat ⇒ nat" where"moves 0 = 0" |
"moves (Suc n) = 2 * (moves n) + 1"
theorem "moves n = 2^n - 1"
proof (induct n)
show "moves 0 = 2^0 - 1" by simp
nextfix n assume IH: "moves n = 2 ^ n - 1"
have 1: "(2::nat) ≤ 2 ^ (Suc n)" by simp
have "moves (Suc n) = 2 * (moves n) + 1" by simp
also from IH have ". . . = 2 * ((2 ^ n) - 1) + 1" by simp
also have ". . . = 2 ^ (Suc n) - 2 + 1" by simp
also from 1 have ". . . = 2 ^ (Suc n) - 1" by arith
finally show "moves (Suc n) = 2 ^ (Suc n) - 1" .qed
Jeremy Siek Discrete Mathematics 80 / 118
![Page 112: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/112.jpg)
Stuff to Rememeber
I Mathematical induction.I New from Isabelle: by arith, primrec.
Jeremy Siek Discrete Mathematics 81 / 118
![Page 113: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/113.jpg)
Outline of Lecture 6
1. More proof by induction and recursive functions
2. Repeated function composition example.
Jeremy Siek Discrete Mathematics 82 / 118
![Page 114: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/114.jpg)
Some Suggestions
1. Use a peice of scratch paper to sketch out the main ideas of theproof.
2. Dedicate one part of the paper to things that you know(assumptions, stuff you’ve proven),
3. Dedicate another part of the paper to things that you’d like toknow.
4. After your sketch is complete, write a nicely organized and cleanversion of the proof.
5. Now let’s look at more examples of induction.
Jeremy Siek Discrete Mathematics 83 / 118
![Page 115: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/115.jpg)
Repeated Function Composition
primrec rep :: "(’a ⇒ ’a) ⇒ nat ⇒ ’a ⇒ ’a" where"rep f 0 x = x"
| "rep f (Suc n) x = rep f n (f x)"
Jeremy Siek Discrete Mathematics 84 / 118
![Page 116: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/116.jpg)
First Attempt
theorem rep_add: "rep f (m + n) x = rep f n (rep f m x)"
proof (induct m)
show "rep f (0 + n) x = rep f n (rep f 0 x)" by simp
nextfix k assume IH: "rep f (k + n) x = rep f n (rep f k x)"
have "rep f ((Suc k) + n) x = rep f (Suc (k + n)) x" by simp
also have ". . . = rep f (k + n) (f x)" by simp
— Stuck, we can’t apply the IH. We need to add a “forall” for x.show "rep f ((Suc k) + n) x = rep f n (rep f (Suc k) x)"
oops
Jeremy Siek Discrete Mathematics 85 / 118
![Page 117: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/117.jpg)
Generalized Theorem
theorem rep_add: "∀ x. rep f (m + n) x = rep f n (rep f m x)"
proof (induct m)
show "∀ x. rep f (0 + n) x = rep f n (rep f 0 x)" by simp
nextfix k assume IH: "∀ x. rep f (k + n) x = rep f n (rep f k x)"
show "∀ x. rep f ((Suc k) + n) x = rep f n (rep f (Suc k) x)"
prooffix x
have "rep f ((Suc k) + n) x = rep f (Suc (k + n)) x" by simp
also have ". . . = rep f (k + n) (f x)" by simp
also from IH have ". . . = rep f n (rep f k (f x))" by simp
finally show "rep f ((Suc k)+n) x = rep f n (rep f (Suc k) x)"
by simp
qedqed
Jeremy Siek Discrete Mathematics 86 / 118
![Page 118: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/118.jpg)
Repeated Function, Difference
theorem rep_diff:
assumes nm: "n ≤ m" shows "rep f (m - n) (rep f n x) = rep f m x"
oops
Jeremy Siek Discrete Mathematics 87 / 118
![Page 119: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/119.jpg)
Repeated Function, Difference
This proof is easy, a direct consequence of the rep add theorem.
theorem rep_diff:
assumes nm: "n ≤ m" shows "rep f (m - n) (rep f n x) = rep f m x"
proof -
from nm have 1: "n + (m - n) = m" by simp
from 1 show "rep f (m - n) (rep f n x) = rep f m x"
using rep_add[of f n "m - n"] by simp
qed
Jeremy Siek Discrete Mathematics 88 / 118
![Page 120: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/120.jpg)
Outline of Lecture 7
1. In class exercise concerning repeated function composition
Jeremy Siek Discrete Mathematics 89 / 118
![Page 121: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/121.jpg)
Repeated Function, Cycle
I Which natural number should we do induction on, m or n?I Sometimes you just have to try both and see which one works.I Sometimes you can foresee which one is better.
lemma rep_cycle: "rep f n x = x −→ rep f (m*n) x = x"
oops
Jeremy Siek Discrete Mathematics 90 / 118
![Page 122: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/122.jpg)
Repeated Function, Cycle
Let’s try to do induction on n.
lemma rep_cycle: "rep f n x = x −→ rep f (m*n) x = x"
proof (induct n)
show "rep f 0 x = x −→ rep f (m*0) x = x" by simp
nextfix k assume IH: "rep f k x = x −→ rep f (m*k) x = x"
show "rep f (Suc k) x = x −→ rep f (m*(Suc k)) x = x"
proofassume 1: "rep f (Suc k) x = x"
— Problem: we can’t use the IH because we can’t prove that rep f k x = xoops
Jeremy Siek Discrete Mathematics 91 / 118
![Page 123: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/123.jpg)
Repeated Function, Cycle
Now let’s try induction on m.
lemma rep_cycle: "rep f n x = x −→ rep f (m*n) x = x"
proof (induct m)
show "rep f n x = x −→ rep f (0*n) x = x"
proofassume "rep f n x = x" — We dont’ use this assumptionshow "rep f (0*n) x = x" by simp
qednext
fix k assume IH: "rep f n x = x −→ rep f (k*n) x = x"
show "rep f n x = x −→ rep f ((Suc k)*n) x = x"
proofassume 1: "rep f n x = x"
have "rep f ((k+1)*n) x = rep f (n + k*n) x" by simp
also have ". . . = rep f (k*n) (rep f n x)" using rep_add by force
also from 1 have ". . . = rep f (k*n) x" by simp
also from 1 IH have ". . . = x" by simp
finally show "rep f ((Suc k)*n) x = x" by simp
qedqed
Jeremy Siek Discrete Mathematics 92 / 118
![Page 124: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/124.jpg)
Jeremy Siek Discrete Mathematics 93 / 118
![Page 125: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/125.jpg)
Outline of Lecture 8
1. Lists (to represent finite sequences).
2. More induction
Jeremy Siek Discrete Mathematics 93 / 118
![Page 126: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/126.jpg)
Lists
I Isabelle’s lists are descended from the Lisp language, they arebuilt up using two operations:
1. The empty list: []2. If x is an object, and ls is a list of objects, then x # ls is a new list
with x at the front and the rest being the same as ls.
I Also, lists can be created from a comma-separated list enclosed inbrackets: [1, 2, 3, 4].
I All the objects in a list must have the same type.
Jeremy Siek Discrete Mathematics 94 / 118
![Page 127: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/127.jpg)
Functions on Lists
I You can write primitive recursive functions over lists:
primrec app :: "’a list ⇒ ’a list ⇒ ’a list" where"app [] ys = ys" |
"app (x#xs) ys = x # (app xs ys)"
lemma "app [1,2] [3,4] = [1,2,3,4]" by simp
primrec reverse :: "’a list ⇒ ’a list" where"reverse [] = []" |
"reverse (x#xs) = app (reverse xs) [x]"
lemma "reverse [1,2,3,4] = [4,3,2,1]" by simp
Jeremy Siek Discrete Mathematics 95 / 118
![Page 128: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/128.jpg)
Induction on Lists and the Theorem Proving Process
theorem rev_rev_id: "reverse (reverse xs) = xs"
proof (induct xs)
show "reverse (reverse []) = []" by simp
nextfix a xs assume IH: "reverse (reverse xs) = xs"
— We can expand the LHS of the goal as followshave "reverse (reverse (a # xs))
= reverse (app (reverse xs) [a])" by simp
— But then we’re stuck. How can we use the IH?— Can we push the outer reverse under the app?show "reverse (reverse (a # xs)) = a # xs"
oops
Jeremy Siek Discrete Mathematics 96 / 118
![Page 129: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/129.jpg)
Reverse-Append Lemma
1,2,3,4,5,6
1,2,3 4,5,6
app
reverse
6,5,4,3,2,1
1,2,3 4,5,6
reverse reverse
3,2,1 6,5,4
app
6,5,4,3,2,1
xs ys xs ys
reverse(app(xs,ys)) = app(reverse(ys), reverse(xs))Jeremy Siek Discrete Mathematics 97 / 118
![Page 130: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/130.jpg)
Reverse-Append Lemma
lemma rev_app:
"reverse (app xs ys) = app (reverse ys) (reverse xs)"
proof (induct xs)
have 1: "reverse (app [] ys) = reverse ys" by simp
have 2: "app (reverse ys) (reverse []) = app (reverse ys) []"
by simp
— but no we’re stuckshow "reverse (app [] ys) = app (reverse ys) (reverse [])"
oops
Exercise: what additional lemma do we need? Prove the additionallemma.
Jeremy Siek Discrete Mathematics 98 / 118
![Page 131: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/131.jpg)
The Append-Nil Lemma
lemma app_nil: "(app xs []) = xs"
proof (induct xs)
show "app [] [] = []" by simp
nextfix a xs assume IH: "app xs [] = xs"
have "app (a # xs) [] = a # (app xs [])" by simp
also from IH have ". . . = a # xs" by simp
finally show "app (a # xs) [] = a # xs" .qed
Jeremy Siek Discrete Mathematics 99 / 118
![Page 132: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/132.jpg)
Back to Reverse-Append Lemma
lemma rev_app:
"reverse (app xs ys) = app (reverse ys) (reverse xs)"
proof (induct xs)
show "reverse (app [] ys) = app (reverse ys) (reverse [])"
using app_nil[of "reverse ys"] by simp
nextfix a xs assume IH: "reverse (app xs ys)
= app (reverse ys) (reverse xs)"
have "reverse (app (a # xs) ys)
= reverse (a # (app xs ys))" by simp
also have ". . . = app (reverse (app xs ys) ) [a]" by simp
also have ". . . = app (app (reverse ys) (reverse xs)) [a]"
using IH by simp
— We’re stuck again! What lemma do we need this time?show "reverse (app (a # xs) ys)
= app (reverse ys) (reverse (a # xs))"
oops
Jeremy Siek Discrete Mathematics 100 / 118
![Page 133: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/133.jpg)
Associativity of Append
lemma app_assoc: "app (app xs ys) zs = app xs (app ys zs)"
oops
Jeremy Siek Discrete Mathematics 101 / 118
![Page 134: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/134.jpg)
Associativity of Append
lemma app_assoc: "app (app xs ys) zs = app xs (app ys zs)"
proof (induct xs)
show "app (app [] ys) zs = app [] (app ys zs)" by simp
nextfix a xs assume IH: "app (app xs ys) zs = app xs (app ys zs)"
from IH
show "app (app (a # xs) ys) zs = app (a # xs) (app ys zs)"
by simp
qed
Jeremy Siek Discrete Mathematics 102 / 118
![Page 135: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/135.jpg)
Back to the Reverse-Append Lemma, Again
lemma rev_app:
"reverse (app xs ys) = app (reverse ys) (reverse xs)"
proof (induct xs)
show "reverse (app [] ys) = app (reverse ys) (reverse [])"
using app_nil[of "reverse ys"] by simp
nextfix a xs assume IH: "reverse (app xs ys)
= app (reverse ys) (reverse xs)"
have "reverse (app (a # xs) ys)
= reverse (a # (app xs ys))" by simp
also have ". . . = app (reverse (app xs ys) ) [a]" by simp
also have ". . . = app (app (reverse ys) (reverse xs)) [a]"
using IH by simp
also have ". . . = app (reverse ys) (app (reverse xs) [a])"
using app_assoc[of "reverse ys" "reverse xs" "[a]"] by simp
also have ". . . = app (reverse ys) (reverse (a # xs))" by simp
finally show "reverse (app (a # xs) ys)
= app (reverse ys) (reverse (a # xs))" .qed
Jeremy Siek Discrete Mathematics 103 / 118
![Page 136: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/136.jpg)
Finally, Back to the Theorem!
theorem rev_rev_id: "reverse (reverse xs) = xs"
proof (induct xs)
show "reverse (reverse []) = []" by simp
nextfix a xs assume IH: "reverse (reverse xs) = xs"
— We can expand the LHS of the goal as followshave "reverse (reverse (a # xs))
= reverse (app (reverse xs) [a])" by simp
also have ". . . = app (reverse [a]) (reverse (reverse xs))"
using rev_app[of "reverse xs" "[a]"] by simp
also from IH have ". . . = app (reverse [a]) xs" by simp
also have ". . . = a # xs" by simp
finally show "reverse (reverse (a # xs)) = a # xs" .qed
Jeremy Siek Discrete Mathematics 104 / 118
![Page 137: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/137.jpg)
More on Lists and the Theorem Proving Process
I When proving something about a recursive function, induct onthe argument that is decomposed by the recursive function (e.g.,the first argument of append).
I The pattern of getting stuck and then proving lemmas is normal.I Isabelle provides many functions and theorems regarding lists.
See Isabelle/src/HOL/List.thy for more details.
Jeremy Siek Discrete Mathematics 105 / 118
![Page 138: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/138.jpg)
Stuff to Rememeber
I Use lists to represent finite sequences.I Isabelle provides many functions and theorems regarding lists.
See Isabelle/src/HOL/List.thy for more details.I Proofs often require several lemmas.I Generalize your lemmas to make the induction go through.
Jeremy Siek Discrete Mathematics 106 / 118
![Page 139: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/139.jpg)
Outline of Lecture 9
1. Converting loops into recursive functions and accumulatorpassing style.
2. More generalizing theorems for induction
Jeremy Siek Discrete Mathematics 107 / 118
![Page 140: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/140.jpg)
Iterative Reverse Algorithm
I The reverse function is inneficient because it uses the appendfunction over and over again.
I The following iterative algorithm reverses a list in linear time(textbook page 317).
procedure iterative_reverse(list)xs = listys = []while xs != []
ys = hd(xs) # ysxs = tl(xs)
return ys
Jeremy Siek Discrete Mathematics 108 / 118
![Page 141: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/141.jpg)
Accumulator Passing Style
I The following itrev function is a recursive version of theiterative algorithm.
I The trick is to add an extra parameter for each variable that getsupdated in the for loop of the iterative algorithm.
primrec itrev :: "’a list ⇒ ’a list ⇒ ’a list" where"itrev [] ys = ys" |
"itrev (x#xs) ys = itrev xs (x#ys)"
lemma "itrev [1,2,3] [] = [3,2,1]"
proof -
have "itrev [1,2,3] [] = itrev [2,3] [1]" by simp
also have ". . . = itrev [3] [2,1]" by simp
also have ". . . = itrev [] [3,2,1]" by simp
also have ". . . = [3,2,1]" by simp
finally show ?thesis .qed
Jeremy Siek Discrete Mathematics 109 / 118
![Page 142: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/142.jpg)
Correctness of itrev
Let’s try to prove that itrev reverses a list.
lemma "itrev xs [] = reverse xs"
oops
Jeremy Siek Discrete Mathematics 110 / 118
![Page 143: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/143.jpg)
Generalizing in Proofs by Induction
lemma "itrev xs [] = reverse xs"
proof (induct xs)
show "itrev [] [] = reverse []" by simp
nextfix x xs assume IH: "itrev xs [] = reverse xs"
have "itrev (x#xs) [] = itrev xs [x]" by simp
oops
I The induction hypothesis does not apply to itrev xs [x].I We need to generalize the lemma, make it stronger, to give
ourselves more to assume in the induction hypothesis.
Jeremy Siek Discrete Mathematics 111 / 118
![Page 144: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/144.jpg)
Generalizing in Proofs by Induction
lemma "∀ ys. itrev xs ys = app (reverse xs) ys"
proof (induct xs)
show "∀ ys. itrev [] ys = app (reverse []) ys" by simp
nextfix x xs assume IH: "∀ ys. itrev xs ys = app (reverse xs) ys"
show "∀ ys. itrev (x#xs) ys = app (reverse (x # xs)) ys"
prooffix ys
have "itrev (x#xs) ys = itrev xs (x#ys)" by simp
also from IH have ". . . = app (reverse xs) (x#ys)" by simp
also have ". . . = app (reverse xs) (app [x] ys)" by simp
also have ". . . = app (app (reverse xs) [x]) ys"
by (simp only: app_assoc)
also have ". . . = app (reverse (x # xs)) ys" by simp
finally show "itrev (x#xs) ys = app (reverse (x # xs)) ys" .qed
qed
Jeremy Siek Discrete Mathematics 112 / 118
![Page 145: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/145.jpg)
Jeremy Siek Discrete Mathematics 113 / 118
![Page 146: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/146.jpg)
Outline of Lecture 10
1. Mini-project regarding the Fibonacci function:1.1 practice converting loops into recursive functions.1.2 proving correctness of algorithms.
2. In-class discussion of the solution.
Jeremy Siek Discrete Mathematics 113 / 118
![Page 147: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/147.jpg)
Definition of Fibonacci
fun fib :: "nat ⇒ nat" where"fib 0 = 0" |
"fib (Suc 0) = 1" |
"fib (Suc(Suc x)) = fib x + fib (Suc x)"
Jeremy Siek Discrete Mathematics 114 / 118
![Page 148: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/148.jpg)
Iterative Fibonacci Algorithm
I The fib function is inneficient because it redundantly computesthe same fibonacci number over and over.
I The following iterative algorithm computes Fibonacci numbers inlinear time (textbook page 317).
procedure iterative_fibonacci(n)if n = 0 theny := 0
elsex := 0y : = 1for i := 1 to n - 1z := x + yx := yy := z
return y
Jeremy Siek Discrete Mathematics 115 / 118
![Page 149: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/149.jpg)
Project
1. Implement a recursive version of the iterative fibonacci algorithm.Use accumulator passing style.
2. Prove that your recursive function produces the same output asfib.
Jeremy Siek Discrete Mathematics 116 / 118
![Page 150: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/150.jpg)
Accumulator Passing Fibonacci Function
primrec itfib :: "nat ⇒ nat ⇒ nat ⇒ nat" where"itfib f f’ 0 = f" |
"itfib f f’ (Suc k) = itfib f’ (f + f’) k"
Jeremy Siek Discrete Mathematics 117 / 118
![Page 151: Discrete Mathematics - University of Colorado Boulderecee.colorado.edu/~siek/ecen3703/spring10/slides.pdfOutline of Lecture 1 1. Course Information 2. Overview of Discrete Mathematics](https://reader031.fdocuments.us/reader031/viewer/2022022008/5ae159da7f8b9a595d8bd0b0/html5/thumbnails/151.jpg)
Proof of Correctness
theorem "∀ n. itfib (fib n) (fib (n + 1)) k = fib (n + k)"
proof (induct k)
show "∀ n. itfib (fib n) (fib (n + 1)) 0 = fib (n + 0)" by simp
nextfix k assume IH: "∀ n. itfib (fib n) (fib (n + 1)) k = fib (n + k)"
show "∀ n. itfib (fib n) (fib (n + 1)) (Suc k) = fib (n + Suc k)"
prooffix n
have "itfib (fib n) (fib (n + 1)) (Suc k)
= itfib (fib (n + 1)) (fib n + fib (n + 1)) k"
by simp — by the definition of itfibalso have ". . . = itfib (fib (n + 1)) (fib (n + 2)) k"
by simp — by the definition of fibalso have ". . . = fib (n + k + 1)"
proof -
from IH have 1: "itfib (fib (n + 1)) (fib ((n + 1) + 1)) k
= fib ((n + 1) + k)" ..from 1 show ?thesis by simp
qedfinally show "itfib (fib n) (fib (n + 1)) (Suc k) = fib (n + Suc k)"
by simp
qedqed
Jeremy Siek Discrete Mathematics 118 / 118