Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Discrete math with computers_3

.pdf
Скачиваний:
87
Добавлен:
16.03.2016
Размер:
2.29 Mб
Скачать

Bibliography

[1]Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, 2000.

[2]Harold Abelson, Gerald Jay Sussman, and Julie Sussman. Structure and Interpretation of Computer Programs. The MIT Press, 1985.

[3]Martin Aigner and G¨unter M. Ziegler. Proofs from THE BOOK. Springer, 1998.

[4]Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall, second edition, 1998.

[5]Richard Bird and Oege de Moor. Algebra of Programming. Prentice Hall, 1997.

[6]Stanley N. Burris. Logic for Mathematics and Computer Science. Prentice Hall, 1998.

[7]C. J. Date. An Introduction to Database Systems. Addison Wesley Longman, 1999.

[8]Antony Davie. An Introduction to Functional Programming Systems Using Haskell. Cambridge University Press, 1992.

[9]Michael Downward. Logic and Declarative Language. Taylor & Francis, 1998.

[10]Herbert B. Enderton. A Mathematical Introduction to Logic. Academic Press, 1972.

[11]Herbert B. Enderton. Elements of Set Theory. Academic Press, 1977.

[12]Arthur Engel. Problem-Solving Strategies. Springer, 1998.

[13]Jean-Yves Girard, Yves Lafont, and Paul Taylor. Proofs and Types, volume 7 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1989.

431

432

BIBLIOGRAPHY

[14]Derek Goldrei. Classic Set Theory. Chapman & Hall, 1996.

[15]Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. Concrete Mathematics. Addison-Wesley, 1989.

[16]Jan Gullberg. Mathematics from the Birth of Numbers. Norton, 1997.

[17]Douglas R. Hofstadter. G¨odel, Escher, Bach: An Eternal Golden Braid. Penguin, 1979.

[18]Paul Hudak. The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press, 2000.

[19]Geraint Jones and Mary Sheeran. Relations and refinement in circuit design. In 3rd Refinement Workshop, Workshops in Computing. Springer, 1991.

[20]Donald E. Knuth, Tracy Larrabee, and Paul M. Roberts. Mathematical Writing. Number 14 in MAA Notes. The Mathematical Association of America, 1989.

[21]E. J. Lemmon. Beginning Logic. Chapman & Hall, 1965.

[22]John O’Donnell. The hydra computer hardware description language. www.dcs.gla.ac.uk/ jtod/hydra/.

[23]John T. O’Donnell and Gudula R¨unger. Derivation of a logarithmic time carry lookahead addition circuit. Journal of Functional Programming, 14(6):697–713, November 2004. Cambridge University Press.

[24]Chris Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.

[25]John O’Leary, Xudong Zhao, Rob Gerth, and Carl-Johan Seger. Formally verifying IEEE compliance of floating-point hardware. Intel Technology Journal, 1999.

[26]Kenneth A. Ross and Chalres R. B. Wright. Discrete Mathematics. Prentice Hall, 1999.

[27]Simon Singh. The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography. Fourth Estate, 1999.

[28]Raymond Smullyan. Forever Undecided: A Puzzle Guide to G¨odel. Oxford University Press, 1987.

[29]Donald F. Stanat and David F. McAllister. Discrete Mathematics in Computer Science. Prentice Hall, 1977.

[30]Patrick Suppes. Axiomatic Set Theory. Dover, 1972.

BIBLIOGRAPHY

433

[31]Simon Thompson. Type Theory and Functional Programming. AddisonWesley Publishing Company, 1991.

[32]Simon Thompson. Haskell: The Craft of Functional Programming. Addison-Wesley, second edition, 1999.

[33]Daniel J. Velleman. How To Prove It: A Structured Approach. Cambridge University Press, 1994.

Index

(==), 318 (ˆ-), 350, 352 ( C), 325 ( ), 318 ( ), 318

=, 121, 192, 196 { EL}, 148 { ER}, 148 { I}, 148 {CTR}, 148 {ID}, 148

{→ E}, 148

{→ I}, 148

{ E}, 148

{ IL}, 148

{ IR}, 148

{RAA}, 148 ++, 72, 73, 76

, 194

, 194, 269, 286 , 192 , 288, 192, 190

, 165, 173, 61, 164, 165, 172 ˆ: new , 331

ˆ: old , 331 ˆ: , 331

ˆ: bal , 331 ˆ: ord , 331

, 115, 119, 121, 143, 146, 155, 190, 318

. . ., 207 , 117, 119–121, 128, 156

balanced , 330 gSteps, 327 ordered , 319 outLeft, 334

SearchTree, 343

Search Tree, 317 dataElems, 320 delRoot, 349 easyL, 336, 344 easyR, 334 getItem, 325 height, 344 rotL, 338

rotR, 338 shrink, 347

|=, 121, 124, 126, 158, 159 ¬, 115, 119–121, 128, 146, 154, 190, 254, 192

, 121, 124, 126, 134, 158, 159, 114, 119–121, 146, 113, 119–121, 146, 115

exists, 164 f orall, 170

., 73, 287

:type command, 10

Modus Ponens, 207

\/, 121

***, 198

**, 8

*, 6

+++, 198 ++, 23, 26, 50 +, 6

434

INDEX

->, 15 -, 6

... notation, 47

.., 12

., 27 /\, 121

/=, 9

:, 12, 74 <-, 13 <=>, 121

<=, 9

<, 9 ==>, 121

==, 9

=>, 31

>=, 9

>, 9 &&, 9, 121

||, 9 0-tuple, 11

abbreviation, 128 absurdity, 155 algebra, 110, 149 algebraic data type, 28 algebraic laws

predicate logic, 181 algorithm, 189 ambiguity, 170

and, 26, 55, 112, 113, 143, 146, 169 and gate, 356

antisymmetric, 233 append, 23, 50 argument, 15, 19

pattern, 17 arithmetic, 363

artificial intelligence, 109 associate

to the left, 120 to the right, 120

associative, 153, 201 Assume, 148 assumption, 127 AVL tree, 316 axiom, 110, 151

435

base case, 210, 212, 213 big

intersection, 194 union, 194

binary

comparison, 372 number, 366 relation, 223

binary search, 315 bit, 366

numbering, 366 bitValue, 364

Bool, 122

Boole, George, 149

Boolean, 164, 172

Boolean algebra, 110, 149–156, 158

calculation, 158 carry, 367, 370 case analysis, 137

cause and e ect, 116 chain, 207, 210, 258 of equalities, 149

Char, 10

check proof, 144 circuit

design, 157 simulation, 357, 358

class, 31 closure, 245 codomain, 223

combinational circuit, 355 combinator, 54 commutative, 150, 153, 201 compiler, 110

complement, 154, 195, 199 complete, 159

complexity, 274 compose, 27, 73 composition, 237 comprehension, 13, 191 computability, 110

computational complexity, 274 computer architecture, 109 concat, 51, 75

436

conclusion, 127 conditional expression, 20 conjunction, 113

cons, 12, 74 consistent, 159 constructor, 28 context, 32 contradiction, 123, 138 contrapositive, 155 control structure, 277 converse, 248 correctness, 157 countable, 259 counting, 300

Curry-Howard isomorphism, 157 Currying, 155, 281

cycle, 230

data, 28, 318 recursion, 58 type, 28

data recursion, 211 database, 110

declarative language, 48, 161 deduction, see inference DeMorgan’s laws, 154, 202 deriving, 30

design methodology, 359 detect, 32 diagonalisation, 303 di erence, 192

digital circuit, 157 digital circuit

design, 109 digraph, 226 directed path, 226

discharged assumption, 134 disjoint, 194

disjunction, 114 distributive, 154, 202 div, 7

divide and conquer, 47, 72 domain, 223

Double, 8

double negation, 140, 154

INDEX

drop, 23

easy-right rotation, 333 element, 189, 190 elimination

existential, 180 universal, 177

ellipses, 207 empty set, 190

enumerated type, 28 enumeration, 207 Eq, 32, 196

equation, 37, 151, 156

equational model of computation, 326 equational reasoning, 37, 149 equivalence, 117, 156

relation, 261 error, 283 evaluation, 5 exclusive

or gate, 356 exclusive or, 115 existential

elimination, 180 introduction, 179

exists, 173 expression, 5

conditional, 20, 163 expansion, 166

let, 21 nested, 165

quantified, 165 extremal clause, 212 extremal clause, 212, 213

factorial, 47, 48, 55, 273

False, 9, 119, 122, 123, 138, 151 filter, 14

first order, 19 Float, 8 floating point, 8

foldl, 26, 278, 374 foldr, 25, 55, 74, 77 forall, 172

formal

INDEX

logic, 109 reasoning, 126

formula, 118 abbreviated, 168 expansion, 166 translation, 169, 170

fst, 18

full adder, 365, 367 function, 15, 267, 357

application, 268, 358 argument type, 268 bijective, 296 codomain, 268, 270 composition, 27, 287 domain, 268, 269 equality, 76 extensional equality, 76 first order, 19

functional argument, 277 functional result, 278 graph, 268

higher order, 19, 54, 276–278 image, 269

inductively defined, 272 injective, 293 intensional equality, 76 inverse, 299

multiple arguments, 280 partial, 282, 286 predicate, 164, 172 primitive recursive, 273 program, 271

range, 270 result type, 268 state, 275 surjective, 291 total, 282, 286 type, 15, 19, 269

undefined, 269, 282 functional

circuit specification, 357 language, 143 programming, 160

G¨odel, 159, 160

437

generator, 13 graph, 268

greatest element, 254

half adder, 363, 373 half comparator, 373

halting problem, 285, 286 hardware design, 157 Haskell, 121

head, 19 height, 317, 327 hierarchy, 83 higher order, 19

function, 54, 369

id, 77 idempotent, 153 identity, 151

if, 115 Imp, 146

implication, 115, 155 chain rule, 135

imply, 112, 115, 116, 120, 155 inclusive or, 114

index (list), 22 induction, 62, 207, 212

and recursion, 66 base case, 62 case, 212, 213 inductive case, 62 infinite lists, 78 on lists, 70

on Peano naturals, 67 on trees, 96

induction case, 210 induction rule, 210 infer, 126

inference, 110, 126–149, 158 { E}, 177

{ I}, 175, 176

{ EL}, 131–132

{ ER}, 131–132

{ I}, 129–131 {CTR}, 138–140 { E}, 180

438

{ I}, 179

{ID}, 138

{→ E}, 132–133

{→ I}, 133–136 { E}, 137 { IL}, 136 { IR}, 136 {RAA}, 140 assumption, 127 conclusion, 127

elimination rule, 128 introduction rule, 128 predicate, 174 quantifier, 174

Reductio ad Absurdum, 129, 140 rule, 126, 127

infinite loop, 284 information retrieval, 109 integer, 215

intersection, 192 introduction

existential, 179 univeral, 175

inverter, 356 irreflexive, 229

Just, 30 justification, 150

key, 318

language meta, 127

object, 127 law, 111, 150–156

identity, 151 null, 151

Leaf, 87

length, 22, 48, 55, 73, 76, 276 let, 21

expression, 21 linear

logic, 157 order, 258

list, 11

INDEX

comprehension, 13, 197 construction, 12 notation, 12

logic gate, 356 logical

equivalence, 117 inference, see inference negation, 115, 154

map, 23, 54, 73–75, 276, 277 Maybe, 30

meaning, 124, 158 member, 189, 190

meta-language, 121, 126, 127, 156 meta-logic, 141, 158–159 meta-variable, 127

mod, 7 model, 124 modulus, 262

Modus Ponens, 132

Modus Tollens, 135 mscanr, 369, 371

n-tuple, 11 natural

deduction, 110, 126–149 number, 213

Node, 87

node balancing, 330 nor, 18 normalForm, 198 normalizeSet, 198

not, 9, 112, 115, 121, 146, 169 Nothing, 30

null, 151 value, 11

Num, 31 number

natural, 63 Peano, 67

object language, 120, 126, 127, 156 one-to-one correspondence, 299 ones, 58

operator, 5, 120

INDEX

or, 55, 112, 114, 115, 146, 169 gate, 356

order relation, 252 ordered pair, 268 outside left-heavy, 333 outside right-heavy, 336 overload, 31

pair, 11

partial order, 252 partially ordered set, 253 pattern, 17, 369 permutation, 297

pi, 15

pigeonhole principle, 296 pipeline, 288

poset, 253

greatest element, 254 weakest element, 254

power (of relation), 240 powerset, 195 precedence, 120 preciate, 163

predicate, 61, 163, 172, 191 product, 55

programming language, 110 proof, 144, 158, 160

checker, 142–149 correctness, 66 representation, 147–149 tools, 142

proper subset, 192 properSubset, 198 proposition, 111, 158 propositional

expression, 126 logic, 110

variable, 111, 119, 122, 127 Pvar, 146

quadratic, 21 quantifier, 163, 164

computing, 172 existential, 165, 166 expansion, 166

439

expansion formula, 166 universal, 164, 166

quasi order, 257 quicksort, 52

Ratio, 9

rational number, 9 rational number, 302 real number, 302 reasoning, 37 rebalance, 338 recursion, 47, 66, 119

data, 58 primitive, 273

Reductio ad Absurdum, 129, 140, 148 reflect, 90

reflexive, 228 closure, 246

relation, 223–265 antisymmetric, 233 closure, 245 composition, 237 converse, 248 cycle, 230 equivalence, 261 function, 268 irreflexive, 229 linear order, 258 order, 252

partial order, 252 poset, 253 power, 240

quasi order, 257 reflexive, 228 reflexive closure, 246 symmetric, 231

symmetric closure, 248 transitive, 235 transitive closure, 249 well order, 259

relational database, 224 ripple carry, 367

adder, 367, 370 ripple comparator, 373

440

safety-critical, 109 schematic diagram, 357 self reference, 47 semantics, 110, 124, 158 sequence, 12, 208 sequent, 126, 134

set, 189–206 associative, 201

big intersection, 194 big union, 194 cardinality, 299, 300 commutative, 201 complement, 195 comprehension, 13, 191 countable, 259, 301, 302 definition, 207, 212 DeMorgan’s laws, 202 di erence, 192 distributive, 202

empty, 166

equality, 192, 196, 198 finite, 300

infinite, 61, 300 integers, 215 intersection, 192 natural number, 213 powerset, 195 subset, 192

proper, 192 uncountable, 302 union, 192

setEq, 198 show, 30 sigma, 55 signal, 358 snd, 18 software

crisis, 157 engineering, 109

some, 171 specification, 359 splitter, 52

sqrt, 15 square, 16

INDEX

state, 275 String, 10 subscript, 22 subset, 192, 198

substitute equals for equals, 149 sum, 49, 55, 71, 72

syllogism, 149 symmetric, 231

closure, 248 syntax, 110, 158

tail, 19 take, 23

tautology, 123, 124 theorem, 143, 144, 158

prover, 142 therefore, 112, 115, 169 toLower, 10 topological sort, 260 toUpper, 10 transformation, 361 transitive, 235

closure, 249 tree, 83, 96

balanced, 91 tree induction, 320 triple, 11

True, 9, 119, 122, 123, 128, 151

truth table, 110, 122–125, 141, 158, 359

tuple, 11, 280 Turing, Alan, 286 turnstile, 124 twice, 19

twos, 58 type, 160, 269

class, 31 Eq, 32 Num, 31

context, 32 enumerated, 28 Maybe, 30 overloaded, 31

type system, 4, 157 typechecking, 110

Соседние файлы в предмете Дискретная математика