The Isabelle Cookbook a Gentle Tutorial for Programming Isabelle/ML (Draft)

Total Page:16

File Type:pdf, Size:1020Kb

The Isabelle Cookbook a Gentle Tutorial for Programming Isabelle/ML (Draft) The Isabelle Cookbook A Gentle Tutorial for Programming Isabelle/ML (draft) by Christian Urban with contributions from: Stefan Berghofer Jasmin Blanchette Sascha Bohme¨ Lukas Bulwahn Jeremy Dawson Rafal Kolanski Alexander Krauss Tobias Nipkow Norbert Schirmer Andreas Schropp Christian Sternagel June 16, 2019 2 Contents Contentsi 1 Introduction1 1.1 Intended Audience and Prior Knowledge.................1 1.2 Isabelle Infrastructure...........................2 1.3 Existing Documentation..........................2 1.4 Typographic Conventions.........................3 1.5 How To Understand Isabelle Code.....................4 1.6 Aaaaargh! My Code Does not Work Anymore..............5 1.7 Serious Isabelle ML-Programming.....................6 1.8 Some Naming Conventions in the Isabelle Sources...........6 1.9 Acknowledgements.............................7 2 First Steps 11 2.1 Including ML-Code............................. 11 2.2 Printing and Debugging.......................... 12 2.3 Combinators................................ 16 2.4 ML-Antiquotations............................. 23 2.5 Storing Data in Isabelle.......................... 26 2.6 Summary.................................. 34 3 Isabelle Essentials 35 3.1 Terms and Types.............................. 35 3.2 Constructing Terms and Types Manually................. 40 3.3 Unification and Matching......................... 48 3.4 Sorts (TBD)................................. 57 3.5 Type-Checking............................... 58 3.6 Certified Terms and Certified Types.................... 60 3.7 Theorems.................................. 61 3.8 Theorem Attributes............................. 73 3.9 Pretty-Printing............................... 76 i ii CONTENTS 3.10 Summary.................................. 81 4 Advanced Isabelle 83 4.1 Theories................................... 83 4.2 Contexts................................... 85 4.3 Local Theories and Local Setups (TBD).................. 90 4.4 Morphisms (TBD).............................. 90 4.5 Misc (TBD)................................. 91 4.6 What Is In an Isabelle Name? (TBD)................... 91 4.7 Concurrency (TBD)............................. 92 4.8 Parse and Print Translations (TBD).................... 92 4.9 Summary.................................. 92 5 Tactical Reasoning 93 5.1 Basics of Reasoning with Tactics...................... 93 5.2 Simple Tactics................................ 97 5.3 Tactic Combinators............................. 106 5.4 Simplifier Tactics.............................. 112 5.5 Simprocs.................................. 119 5.6 Conversions................................. 123 5.7 Declarations (TBD)............................. 132 5.8 Structured Proofs (TBD).......................... 132 5.9 Summary.................................. 132 6 Parsing 133 6.1 Building Generic Parsers.......................... 133 6.2 Parsing Theory Syntax........................... 141 6.3 Parsers for ML-Code (TBD)........................ 145 6.4 Context Parser (TBD)............................ 145 6.5 Argument and Attribute Parsers (TBD).................. 145 6.6 Parsing Inner Syntax............................ 145 6.7 Parsing Specifications............................ 146 6.8 New Commands.............................. 149 6.9 Methods (TBD)............................... 152 7 How to Write a Definitional Package 155 7.1 Preliminaries................................ 156 7.2 Parsing and Typing the Specification................... 161 7.3 The Code in a Nutshell........................... 163 7.4 The Gory Details.............................. 166 CONTENTS iii 7.5 Extensions of the Package (TBD)..................... 183 7.6 Definitional Packages............................ 184 A Recipes 185 A.1 Useful Document Antiquotations..................... 185 A.2 Restricting the Runtime of a Function................... 188 A.3 Measuring Time............................... 188 A.4 Executing an External Application (TBD)................ 189 A.5 Writing an Oracle (TBD).......................... 190 A.6 SAT Solvers................................. 192 A.7 User Space Type-Systems (TBD)...................... 194 B Solutions to Most Exercises 195 C Comments for Authors 203 Bibliography 207 Index 208 iv CONTENTS Chapter 1 Introduction “My thesis is that programming is not at the bottom of the intellectual pyramid, but at the top. It’s creative design of the highest order. It isn’t monkey or donkey work; rather, as Edsger Dijkstra famously claimed, it’s amongst the hardest intellectual tasks ever attempted.” Richard Bornat, In Defence of Programming.[1] If your next project requires you to program Isabelle with ML, then this tutorial is for you. It will guide you through the first steps of Isabelle programming, and also explain “tricks of the trade”. We also hope the tutorial will encourage students and researchers to play with Isabelle and implement new ideas. The source code of Isabelle can look intimidating, but beginners can get by with knowledge of only a handful of concepts, a small number of functions and a few basic coding conventions. There is also a considerable amount of code written in Scala that allows Isabelle interface with the Jedit GUI. Explanation of this part is beyond this tutorial. The best way to get to know the Isabelle/ML is by experimenting with the many code examples included in the tutorial. The code is as far as possible checked against the Isabelle distribution. If something does not work, then please let us know. It is impossible for us to know every environment, operating system or editor in which Isabelle is used. If you have comments, criticism or like to add to the tutorial, please feel free—you are most welcome!! The tutorial is meant to be gentle and compre- hensive. To achieve this we need your help and feedback. 1.1 Intended Audience and Prior Knowledge This tutorial targets readers who already know how to use Isabelle for writing the- ories and proofs. We also assume that readers are familiar with the functional pro- gramming language ML, the language in which most of Isabelle is implemented. If you are unfamiliar with either of these two subjects, then you should first work through the Isabelle/HOL tutorial [4] or Paulson’s book on ML [5]. Recently, Isabelle has adopted a sizable amount of Scala code for a slick GUI based on jEdit. This part of the code is beyond the interest of this tutorial, since it mostly does not concern the regular Isabelle developer. 1 2 CHAPTER 1. INTRODUCTION 1.2 Isabelle Infrastructure There is a rich Isabelle infrastructure—it might be good to have the following rough mind map [7]: Logic Isabelle/Pure is the logical Framework and bootstrap environment. The Pure logic is used to represent rules for Higher-Order Natural Deduction declaratively. This allows the implementation and definition of object logics like HOL using the Pure logic and framework. Isabelle/HOL is the main library of theories and tools for applications that is used throughout this tutorial. Programming Isabelle/ML is the Isabelle tool implementation and extension language. It is based on Poly/ML1. Both Isabelle/Pure and Isabelle/ML emerge from the same boot- strap process: the result is a meta-language for programming the logic that is intertwined with it from a technological viewpoint, but logic and programming remain formally separated. Isabelle/Scala is the Isabelle system programming language. It connects the logical environment with the outside world. Most notably resulting in the Prover IDE Isabelle/jEdit and the command line tools. Proof Isabelle/Isar is the structured proof language of the Isabelle framework. Isar means, Intelligible semi-automated reasoning. Document language for HTML output and LATEXtype-setting of proof text. A proof document combines formal and informal text to describe what has been proven to a general audience. IDE Isabelle/jEdit is the IDE for proof and tool development. It provides a rich interac- tive frontend to the Isabelle framework in which logic and proof development, document creation as well as ML programming are seamlessly integrated. 1.3 Existing Documentation The following documentation about Isabelle programming already exists (and is part of the distribution of Isabelle): 1http://polyml.org 1.4. TYPOGRAPHIC CONVENTIONS 3 The Isabelle/Isar Reference Manual provides a top level view on the Isabelle sys- tem, explaining general concepts and specification material (like grammars, examples and so on) about Isabelle, Isar, Pure, HOL and the document lan- guage. The Isabelle/Isar Implementation Manual describes Isabelle implementation from a high-level perspective, documenting the major underlying concepts and in- terfaces. Isabelle/jEdit describes the IDE. The Old Introduction to Isabelle is an older document that used to be the main reference of Isabelle at a time when all proof scripts were written with ML. Many parts of this manual are outdated now, but some parts, particularly the chapters on tactics, are still useful. Then of course there are: The Isabelle sources. They are the ultimate reference for how things really work. Therefore you should not hesitate to look at the way things are actually imple- mented. While much of the Isabelle code is uncommented, some parts have very helpful comments—particularly the code about theorems and terms. De- spite the lack of comments in most parts, it is often good to look at code that does similar things as you want to do and learn from it. This tutorial contains frequently pointers to the Isabelle sources. The best way
Recommended publications
  • AMATH 731: Applied Functional Analysis Lecture Notes
    AMATH 731: Applied Functional Analysis Lecture Notes Sumeet Khatri November 24, 2014 Table of Contents List of Tables ................................................... v List of Theorems ................................................ ix List of Definitions ................................................ xii Preface ....................................................... xiii 1 Review of Real Analysis .......................................... 1 1.1 Convergence and Cauchy Sequences...............................1 1.2 Convergence of Sequences and Cauchy Sequences.......................1 2 Measure Theory ............................................... 2 2.1 The Concept of Measurability...................................3 2.1.1 Simple Functions...................................... 10 2.2 Elementary Properties of Measures................................ 11 2.2.1 Arithmetic in [0, ] .................................... 12 1 2.3 Integration of Positive Functions.................................. 13 2.4 Integration of Complex Functions................................. 14 2.5 Sets of Measure Zero......................................... 14 2.6 Positive Borel Measures....................................... 14 2.6.1 Vector Spaces and Topological Preliminaries...................... 14 2.6.2 The Riesz Representation Theorem........................... 14 2.6.3 Regularity Properties of Borel Measures........................ 14 2.6.4 Lesbesgue Measure..................................... 14 2.6.5 Continuity Properties of Measurable Functions...................
    [Show full text]
  • List of Theorems from Geometry 2321, 2322
    List of Theorems from Geometry 2321, 2322 Stephanie Hyland [email protected] April 24, 2010 There’s already a list of geometry theorems out there, but the course has changed since, so here’s a new one. They’re in order of ‘appearance in my notes’, which corresponds reasonably well to chronolog- ical order. 24 onwards is Hilary term stuff. The following theorems have actually been asked (in either summer or schol papers): 5, 7, 8, 17, 18, 20, 21, 22, 26, 27, 30 a), 31 (associative only), 35, 36 a), 37, 38, 39, 43, 45, 47, 48. Definitions are also asked, which aren’t included here. 1. On a finite-dimensional real vector space, the statement ‘V is open in M’ is independent of the choice of norm on M. ′ f f i 2. Let Rn ⊃ V −→ Rm be differentiable with f = (f 1, ..., f m). Then Rn −→ Rm, and f ′ = ∂f ∂xj f 3. Let M ⊃ V −→ N,a ∈ V . Then f is differentiable at a ⇒ f is continuous at a. 4. f = (f 1, ...f n) continuous ⇔ f i continuous, and same for differentiable. 5. The chain rule for functions on finite-dimensional real vector spaces. 6. The chain rule for functions of several real variables. f 7. Let Rn ⊃ V −→ R, V open. Then f is C1 ⇔ ∂f exists and is continuous, for i =1, ..., n. ∂xi 2 2 Rn f R 2 ∂ f ∂ f 8. Let ⊃ V −→ , V open. f is C . Then ∂xi∂xj = ∂xj ∂xi 9. (φ ◦ ψ)∗ = φ∗ ◦ ψ∗, where φ, ψ are maps of manifolds, and φ∗ is the push-forward of φ.
    [Show full text]
  • Calculus I – Math
    Math 380: Low-Dimensional Topology Instructor: Aaron Heap Office: South 330C E-mail: [email protected] Web Page: http://www.geneseo.edu/math/heap Textbook: Topology Now!, by Robert Messer & Philip Straffin. Course Info: We will cover topological equivalence, deformations, knots and links, surfaces, three- dimensional manifolds, and the fundamental group. Topics are subject to change depending on the progress of the class, and various topics may be skipped due to time constraints. An accurate reading schedule will be posted on the website, and you should check it often. By the time you take this course, most of you should be fairly comfortable with mathematical proofs. Although this course only has multivariable calculus, elementary linear algebra, and mathematical proofs as prerequisites, students are strongly encouraged to take abstract algebra (Math 330) prior to this course or concurrently. It requires a certain level of mathematical sophistication. There will be a lot of new terminology you must learn, and we will be doing a significant number of proofs. Please note that we will work on developing your independent reading skills in Mathematics and your ability to learn and use definitions and theorems. I certainly won't be able to cover in class all the material you will be required to learn. As a result, you will be expected to do a lot of reading. The reading assignments will be on topics to be discussed in the following lecture to enable you to ask focused questions in the class and to better understand the material. It is imperative that you keep up with the reading assignments.
    [Show full text]
  • Fundamental Theorems in Mathematics
    SOME FUNDAMENTAL THEOREMS IN MATHEMATICS OLIVER KNILL Abstract. An expository hitchhikers guide to some theorems in mathematics. Criteria for the current list of 243 theorems are whether the result can be formulated elegantly, whether it is beautiful or useful and whether it could serve as a guide [6] without leading to panic. The order is not a ranking but ordered along a time-line when things were writ- ten down. Since [556] stated “a mathematical theorem only becomes beautiful if presented as a crown jewel within a context" we try sometimes to give some context. Of course, any such list of theorems is a matter of personal preferences, taste and limitations. The num- ber of theorems is arbitrary, the initial obvious goal was 42 but that number got eventually surpassed as it is hard to stop, once started. As a compensation, there are 42 “tweetable" theorems with included proofs. More comments on the choice of the theorems is included in an epilogue. For literature on general mathematics, see [193, 189, 29, 235, 254, 619, 412, 138], for history [217, 625, 376, 73, 46, 208, 379, 365, 690, 113, 618, 79, 259, 341], for popular, beautiful or elegant things [12, 529, 201, 182, 17, 672, 673, 44, 204, 190, 245, 446, 616, 303, 201, 2, 127, 146, 128, 502, 261, 172]. For comprehensive overviews in large parts of math- ematics, [74, 165, 166, 51, 593] or predictions on developments [47]. For reflections about mathematics in general [145, 455, 45, 306, 439, 99, 561]. Encyclopedic source examples are [188, 705, 670, 102, 192, 152, 221, 191, 111, 635].
    [Show full text]
  • Math 025-1,2 List of Theorems and Definitions Fall 2010
    Math 025-1,2 List of Theorems and Definitions Fall 2010 Here are the 19 theorems of Math 25: Domination Law (aka Monotonicity Law) If f and g are integrable functions on [a; b] such that R b R b f(x) ≤ g(x) for all x 2 [a; b], then a f(x) dx ≤ a g(x) dx. R b Positivity Law If f is a nonnegative, integrable function on [a; b], then a f(x) dx ≥ 0. Also, if f(x) is R b a nonnegative, continuous function on [a; b] and a f(x) dx = 0, then f(x) = 0 for all x 2 [a; b]. Max-Min Inequality If f(x) is an integrable function on [a; b], then Z b (min value of f(x) on [a; b]) · (b − a) ≤ f(x) dx ≤ (max value of f(x) on [a; b]) · (b − a): a Triangle Inequality (for Integrals) Let f :[a; b] ! R be integrable. Then Z b Z b f(x) dx ≤ jf(x)j dx: a a Mean Value Theorem for Integrals Let f : R ! R be continuous on [a; b]. Then there exists a number c 2 (a; b) such that 1 Z b f(c) = f(x) dx: b − a a Fundamental Theorem of Calculus (one part) Let f :[a; b] ! R be continuous and define F : R x [a; b] ! R by F (x) = a f(t) dt. Then F is differentiable (hence continuous) on [a; b] and F 0(x) = f(x). Fundamental Theorem of Calculus (other part) Let f :[a; b] ! R be continuous and let F be any antiderivative of f on [a; b].
    [Show full text]
  • Calculus I ​ Teacher(S): Mr
    Remote Learning Packet NB: Please keep all work produced this week. Details regarding how to turn in this work will be forthcoming. April 20 - 24, 2020 Course: 11 Calculus I ​ Teacher(s): Mr. Simmons ​ Weekly Plan: ​ Monday, April 20 ⬜ Revise your proof of Fermat’s Theorem. Tuesday, April 21 ⬜ Extreme Value Theorem proof and diagram. Wednesday, April 22 ⬜ Diagrams for Fermat’s Theorem, Rolle’s Theorem, and the MVT Thursday, April 23 ⬜ Prove Rolle’s Theorem. Friday, April 24 ⬜ Prove the MVT. Statement of Academic Honesty I affirm that the work completed from the packet I affirm that, to the best of my knowledge, my is mine and that I completed it independently. child completed this work independently _______________________________________ _______________________________________ Student Signature Parent Signature Monday, April 20 I would like to apologize, because in the list of theorems that I sent you, there was a typo. In the hypotheses for two of the theorems, there were written nonstrict inequalities, but they should have been strict inequalities. I have corrected this in the new version. If you have felt particularly challenged by these proofs, that’s okay! I hope that this is an opportunity for you not to memorize a method and execute it perfectly, but rather to be challenged and to struggle with real mathematical problems. I highly encourage you to come to office hours (virtually) to ask questions about these problems. And feel free to email me as well! This week’s handout is a rewriting of those same theorems, along with one more, the Extreme Value Theorem. I apologize for all the changes, but I - along with the rest of you - am still adjusting to this new setup.
    [Show full text]
  • Formal Proof—Getting Started Freek Wiedijk
    Formal Proof—Getting Started Freek Wiedijk A List of 100 Theorems On the webpage [1] only eight entries are listed for Today highly nontrivial mathematics is routinely the first theorem, but in [2p] seventeen formaliza- being encoded in the computer, ensuring a reliabil- tions of the irrationality of 2 have been collected, ity that is orders of a magnitude larger than if one each with a short description of the proof assistant. had just used human minds. Such an encoding is When we analyze this list of theorems to see called a formalization, and a program that checks what systems occur most, it turns out that there are such a formalization for correctness is called a five proof assistants that have been significantly proof assistant. used for formalization of mathematics. These are: Suppose you have proved a theorem and you want to make certain that there are no mistakes proof assistant number of theorems formalized in the proof. Maybe already a couple of times a mistake has been found and you want to make HOL Light 69 sure that that will not happen again. Maybe you Mizar 45 fear that your intuition is misleading you and want ProofPower 42 to make sure that this is not the case. Or maybe Isabelle 40 you just want to bring your proof into the most Coq 39 pure and complete form possible. We will explain all together 80 in this article how to go about this. Although formalization has become a routine Currently in all systems together 80 theorems from activity, it still is labor intensive.
    [Show full text]
  • A Gentle Tutorial for Programming on the ML-Level of Isabelle (Draft)
    The Isabelle Cookbook A Gentle Tutorial for Programming on the ML-Level of Isabelle (draft) by Christian Urban with contributions from: Stefan Berghofer Jasmin Blanchette Sascha Bohme¨ Lukas Bulwahn Jeremy Dawson Rafal Kolanski Alexander Krauss Tobias Nipkow Andreas Schropp Christian Sternagel July 31, 2013 2 Contents Contentsi 1 Introduction1 1.1 Intended Audience and Prior Knowledge.................1 1.2 Existing Documentation..........................2 1.3 Typographic Conventions.........................2 1.4 How To Understand Isabelle Code.....................3 1.5 Aaaaargh! My Code Does not Work Anymore..............4 1.6 Serious Isabelle ML-Programming.....................4 1.7 Some Naming Conventions in the Isabelle Sources...........5 1.8 Acknowledgements.............................6 2 First Steps9 2.1 Including ML-Code.............................9 2.2 Printing and Debugging.......................... 10 2.3 Combinators................................ 14 2.4 ML-Antiquotations............................. 21 2.5 Storing Data in Isabelle.......................... 24 2.6 Summary.................................. 32 3 Isabelle Essentials 33 3.1 Terms and Types.............................. 33 3.2 Constructing Terms and Types Manually................. 38 3.3 Unification and Matching......................... 46 3.4 Sorts (TBD)................................. 55 3.5 Type-Checking............................... 55 3.6 Certified Terms and Certified Types.................... 57 3.7 Theorems.................................. 58 3.8 Theorem
    [Show full text]
  • This Is a Paper in Whiuch Several Famous Theorems Are Poven by Using Ths Same Method
    This is a paper in whiuch several famous theorems are poven by using ths same method. There formula due to Marston Morse which I think is exceptional. Vector Fields and Famous Theorems Daniel H. Gottlieb 1. Introduction. What do I mean ? Look at the example of Newton’s Law of Gravitation. Here is a mathematical statement of great simplicity which implies logically vast number of phe- nomena of incredible variety. For example, Galileo’s observation that objects of different weights fall to the Earth with the same acceleration, or Kepler’s laws governing the motion of the planets, or the daily movements of the tides are all due to the underlying notion of gravity. And this is established by deriving the the mathematical statements of these three classes of phenomena from Newton’s Law of Gravity. The mathematical relationship of falling objects, planets, and tides is defined by the beautiful fact that they follow from Newton’s Law by the same kind of argument. The derivation for falling objects is much simpler than the derivation of the tides, but the general method of proof is the same. This process of simple laws implying vast numbers of physical theorems repeats itself over and over in Physics, with Maxwell’s Equations and Conservation of Energy and Momentum. To a mathematician, this web of relationships stemming from a few sources is beautiful. But is it unreasonable ? This is the question I ask. Are there mathematical Laws ? That is are there theorems which imply large numbers of known, important, and beautiful results by using the same kind of proofs ? At thirteen I already knew what Mathematics was.
    [Show full text]
  • Long List of Theorems for Final Exam
    Stony Brook University Geometry for Teachers Mathematics Department MAT 515 Oleg Viro December 11, 2010 Long list of theorems for Final Exam The topics listed here are recommended for review. One of them will be included (in a rephrased form) in the exam. It will be required to formulate the relevant definitions and theorems, but no proofs will be required. The word section means below a section from the textbook Lessons in Geometry by Jacques Hadamard, the words Isometries and Similarity refer to files isometries.pdf and similarity.pdf. (1) Theorem about vertical angles, section 12. (2) Existence and uniqueness of perpendicular to a line from a point, section 19. (3) Theorems about isosceles triangles and their properties, section 23. (4) Tests for congruence of triangles, section 24. (5) Triangle inequality and its corollaries, sections 26, 27. (6) Bisector of an angle as the locus of point equidistant from the sides, section 36. (7) Tests for parallel lines, section 38. (8) Drawing through a given point a line parallel to a given line, section 39. (9) Parallel Axiom, angles formed by parallel lines and transversal, sections 40, 41. (10) The sum of interior angles in a triangle, section 44. (11) Properties of a parallelogram, section 46, 46b, 47. (12) Special types of parallelograms and their properties, section 48. (13) Theorems about concurrent lines in a triangle, sections 52 - 54, 56. (14) Theorem about a midline in a triangle, section 55. (15) Existence and uniqueness of a circle passing through three points, section 57. (16) Intersection of a line and a circle, section 58.
    [Show full text]
  • Discrete Mathematics for Computer Scientists
    DISCRETE MATHEMATICS FOR C OMPUTER SCIENTISTS Clifford St ein Columbia University Robert L. Drysdale Dartmouth College Kenne th Bogart Addison-Wesley Boston Columbus Indianapolis New York San Francisco Upper Saddle River Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto Delhi Mexico City Sao Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo Editor in Chief: Michael Hirsch Editorial Assistant: Stephanie Sellinger Director of Marketing: Margaret Whaples Marketing Coordinator: Kathryn Ferranti Managing Editor: Jeffrey Holcomb Production Project Manager: Heather McNally Senior Manufacturing Buyer: Carol Melville Media Manufacturing Buyer: Ginny Michaud Art Director: Linda Knowles Cover Designer: Elena Sidorova Cover Art: Veer Media Project Manager: Katelyn Boller Full-Service Project Management: Bruce Hobart, Laserwords Composition: Laserwords Credits and acknowledgments borrowed from other sources and reproduced, with permission, in this textbook appear on appropriate page within text. The programs and applications presented in this book have been included for their instructional value. They have been tested with care, but are not guaranteed for any particular purpose. The publisher does not offer any warranties or representations, nor does it accept any liabilities with respect to the programs or applications. Copyright 2011. Pearson Education, Inc., publishing as Addison-Wesley, 501 Boylston Street, Suite 900, Boston, Massachusetts 02116. All rights reserved. Manufactured in the United States of America. This publication is protected by Copyright, and permission should be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. To obtain permission(s) to use material from this work, please submit a written request to Pearson Education, Inc., Permissions Department, 501 Boylston Street, Suite 900, Boston, Massachusetts 02116.
    [Show full text]
  • DISCRETE MATHEMATICS for COMPUTER SCIENTISTS This Page Intentionally Left Blank DISCRETE MATHEMATICS for COMPUTER SCIENTISTS
    DISCRETE MATHEMATICS FOR COMPUTER SCIENTISTS This page intentionally left blank DISCRETE MATHEMATICS FOR COMPUTER SCIENTISTS Clifford Stein Columbia University Robert L. Drysdale Dartmouth College Kenneth Bogart Addison-Wesley Boston Columbus Indianapolis New York San Francisco Upper Saddle River Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto Delhi Mexico City Sao Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo Editor in Chief: Michael Hirsch Editorial Assistant: Stephanie Sellinger Director of Marketing: Margaret Whaples Marketing Coordinator: Kathryn Ferranti Managing Editor: Jeffrey Holcomb Production Project Manager: Heather McNally Senior Manufacturing Buyer: Carol Melville Media Manufacturing Buyer: Ginny Michaud Art Director: Linda Knowles Cover Designer: Elena Sidorova Cover Art: Veer Media Project Manager: Katelyn Boller Full-Service Project Management: Bruce Hobart, Laserwords Composition: Laserwords Credits and acknowledgments borrowed from other sources and reproduced, with permission, in this textbook appear on appropriate page within text. The programs and applications presented in this book have been included for their instructional value. They have been tested with care, but are not guaranteed for any particular purpose. The publisher does not offer any warranties or representations, nor does it accept any liabilities with respect to the programs or applications. Copyright © 2011. Pearson Education, Inc., publishing as Addison-Wesley, 501 Boylston Street, Suite 900, Boston, Massachusetts 02116. All rights reserved. Manufactured in the United States of America. This publication is protected by Copyright, and permission should be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise.
    [Show full text]