# Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I

Save this PDF as:

Size: px
Start display at page:

Download "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"

## Transcription

1 Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I John McCarthy, Massachusetts Institute of Technology, Cambridge, Mass. April Introduction A programming system called LISP (for LISt Processor) has been developed for the IBM 704 computer by the Artificial Intelligence group at M.I.T. The system was designed to facilitate experiments with a proposed system called the Advice Taker, whereby a machine could be instructed to handle declarative as well as imperative sentences and could exhibit common sense in carrying out its instructions. The original proposal [1] for the Advice Taker was made in November The main requirement was a programming system for manipulating expressions representing formalized declarative and imperative sentences so that the Advice Taker system could make deductions. In the course of its development the LISP system went through several stages of simplification and eventually came to be based on a scheme for representing the partial recursive functions of a certain class of symbolic expressions. This representation is independent of the IBM 704 computer, or of any other electronic computer, and it now seems expedient to expound the system by starting with the class of expressions called S-expressions and the functions called S-functions. Putting this paper in L A TEXpartly supported by ARPA (ONR) grant N to Stanford University where John McCarthy has been since Copied with minor notational changes from CACM, April If you want the exact typography, look there. Current address, John McCarthy, Computer Science Department, Stanford, CA 94305, ( (URL: ) 1

2 In this article, we first describe a formalism for defining functions recursively. We believe this formalism has advantages both as a programming language and as a vehicle for developing a theory of computation. Next, we describe S-expressions and S-functions, give some examples, and then describe the universal S-function apply which plays the theoretical role of a universal Turing machine and the practical role of an interpreter. Then we describe the representation of S-expressions in the memory of the IBM 704 by list structures similar to those used by Newell, Shaw and Simon [2], and the representation of S-functions by program. Then we mention the main features of the LISP programming system for the IBM 704. Next comes another way of describing computations with symbolic expressions, and finally we give a recursive function interpretation of flow charts. We hope to describe some of the symbolic computations for which LISP has been used in another paper, and also to give elsewhere some applications of our recursive function formalism to mathematical logic and to the problem of mechanical theorem proving. 2 Functions and Function Definitions We shall need a number of mathematical ideas and notations concerning functions in general. Most of the ideas are well known, but the notion of conditional expression is believed to be new 1, and the use of conditional expressions permits functions to be defined recursively in a new and convenient way. a. Partial Functions. A partial function is a function that is defined only on part of its domain. Partial functions necessarily arise when functions are defined by computations because for some values of the arguments the computation defining the value of the function may not terminate. However, some of our elementary functions will be defined as partial functions. b. Propositional Expressions and Predicates. A propositional expression is an expression whose possible values are T (for truth) and F (for falsity). We shall assume that the reader is familiar with the propositional connectives ( and ), ( or ), and ( not ). Typical propositional expressions are: 1 reference Kleene 2

3 x < y (x < y) (b = c) x is prime A predicate is a function whose range consists of the truth values T and F. c. Conditional Expressions. The dependence of truth values on the values of quantities of other kinds is expressed in mathematics by predicates, and the dependence of truth values on other truth values by logical connectives. However, the notations for expressing symbolically the dependence of quantities of other kinds on truth values is inadequate, so that English words and phrases are generally used for expressing these dependences in texts that describe other dependences symbolically. For example, the function x is usually defined in words. Conditional expressions are a device for expressing the dependence of quantities on propositional quantities. A conditional expression has the form (p 1 e 1,, p n e n ) where the p s are propositional expressions and the e s are expressions of any kind. It may be read, If p 1 then e 1 otherwise if p 2 then e 2,, otherwise if p n then e n, or p 1 yields e 1,, p n yields e n. 2 We now give the rules for determining whether the value of (p 1 e 1,, p n e n ) is defined, and if so what its value is. Examine the p s from left to right. If a p whose value is T is encountered before any p whose value is undefined is encountered then the value of the conditional expression is the value of the corresponding e (if this is defined). If any undefined p is encountered before 2 I sent a proposal for conditional expressions to a CACM forum on what should be included in Algol 60. Because the item was short, the editor demoted it to a letter to the editor, for which CACM subsequently apologized. The notation given here was rejected for Algol 60, because it had been decided that no new mathematical notation should be allowed in Algol 60, and everything new had to be English. The if...then...else that Algol 60 adopted was suggested by John Backus. 3

4 a true p, or if all p s are false, or if the e corresponding to the first true p is undefined, then the value of the conditional expression is undefined. We now give examples. (1 < 2 4, 1 > 2 3) = 4 (2 < 1 4, 2 > 1 3, 2 > 1 2) = 3 (2 < 1 4, T 3) = 3 (2 < 1 0 0, T 3) = 3 (2 < 1 3, T 0 ) is undefined 0 (2 < 1 3, 4 < 1 4) is undefined Some of the simplest applications of conditional expressions are in giving such definitions as x = (x < 0 x, T x) δ ij = (i = j 1, T 0) sgn(x) = (x < 0 1, x = 0 0, T 1) d. Recursive Function Definitions. By using conditional expressions we can, without circularity, define functions by formulas in which the defined function occurs. For example, we write n! = (n = 0 1, T n (n 1)!) When we use this formula to evaluate 0! we get the answer 1; because of the way in which the value of a conditional expression was defined, the meaningless 4

5 expression 0 (0-1)! does not arise. The evaluation of 2! according to this definition proceeds as follows: 2! = (2 = 0 1, T 2 (2 1)!) = 2 1! = 2 (1 = 0 1T (1 1)!) = 2 1 0! = 2 1 (0 = 0 1, T 0 (0 1)!) = = 2 We now give two other applications of recursive function definitions. The greatest common divisor, gcd(m,n), of two positive integers m and n is computed by means of the Euclidean algorithm. This algorithm is expressed by the recursive function definition: gcd(m, n) = (m > n gcd(n, m), rem(n, m) = 0 m, T gcd(rem(n, m), m)) where rem(n, m) denotes the remainder left when n is divided by m. The Newtonian algorithm for obtaining an approximate square root of a number a, starting with an initial approximation x and requiring that an acceptable approximation y satisfy y 2 a < ɛ, may be written as sqrt(a, x, ɛ) = ( x 2 a < ɛ x,t sqrt (a, 1(x + a ), ɛ)) 2 x The simultaneous recursive definition of several functions is also possible, and we shall use such definitions if they are required. There is no guarantee that the computation determined by a recursive definition will ever terminate and, for example, an attempt to compute n! from our definition will only succeed if n is a non-negative integer. If the computation does not terminate, the function must be regarded as undefined for the given arguments. The propositional connectives themselves can be defined by conditional expressions. We write 5

6 p q = (p q, T F) p q = (p T, T q) p = (p F, T T) p q = (p q, T T) It is readily seen that the right-hand sides of the equations have the correct truth tables. If we consider situations in which p or q may be undefined, the connectives and are seen to be noncommutative. For example if p is false and q is undefined, we see that according to the definitions given above p q is false, but q p is undefined. For our applications this noncommutativity is desirable, since p q is computed by first computing p, and if p is false q is not computed. If the computation for p does not terminate, we never get around to computing q. We shall use propositional connectives in this sense hereafter. e. Functions and Forms. It is usual in mathematics outside of mathematical logic to use the word function imprecisely and to apply it to forms such as y 2 + x. Because we shall later compute with expressions for functions, we need a distinction between functions and forms and a notation for expressing this distinction. This distinction and a notation for describing it, from which we deviate trivially, is given by Church [3]. Let f be an expression that stands for a function of two integer variables. It should make sense to write f(3, 4) and the value of this expression should be determined. The expression y 2 +x does not meet this requirement; y 2 +x(3, 4) is not a conventional notation, and if we attempted to define it we would be uncertain whether its value would turn out to be 13 or 19. Church calls an expression like y 2 + x, a form. A form can be converted into a function if we can determine the correspondence between the variables occurring in the form and the ordered list of arguments of the desired function. This is accomplished by Church s λ-notation. If E is a form in variables x 1,, x n, then λ((x 1,, x n ), E) will be taken to be the function of n variables whose value is determined by substituting the arguments for the variables x 1,, x n in that order in E and evaluating the resulting expression. For example, λ((x, y), y 2 + x) is a function of two variables, and λ((x, y), y 2 + x)(3, 4) = 19. The variables occurring in the list of variables of a λ-expression are dummy or bound, like variables of integration in a definite integral. That is, we may 6

7 change the names of the bound variables in a function expression without changing the value of the expression, provided that we make the same change for each occurrence of the variable and do not make two variables the same that previously were different. Thus λ((x, y), y 2 + x), λ((u, v), v 2 + u) and λ((y, x), x 2 + y) denote the same function. We shall frequently use expressions in which some of the variables are bound by λ s and others are not. Such an expression may be regarded as defining a function with parameters. The unbound variables are called free variables. An adequate notation that distinguishes functions from forms allows an unambiguous treatment of functions of functions. It would involve too much of a digression to give examples here, but we shall use functions with functions as arguments later in this report. Difficulties arise in combining functions described by λ-expressions, or by any other notation involving variables, because different bound variables may be represented by the same symbol. This is called collision of bound variables. There is a notation involving operators that are called combinators for combining functions without the use of variables. Unfortunately, the combinatory expressions for interesting combinations of functions tend to be lengthy and unreadable. f. Expressions for Recursive Functions. The λ-notation is inadequate for naming functions defined recursively. For example, using λ s, we can convert the definition into sqrt(a, x, ɛ) = ( x 2 a < ɛ x, T sqrt(a, 1 2 (x + a ), ɛ)) x sqrt = λ((a, x, ɛ), ( x 2 a < ɛ x, T sqrt(a, 1 2 (x + a ), ɛ))), x but the right-hand side cannot serve as an expression for the function because there would be nothing to indicate that the reference to sqrt within the expression stood for the expression as a whole. In order to be able to write expressions for recursive functions, we introduce another notation. label(a, E) denotes the expression E, provided that occurrences of a within E are to be interpreted as referring to the expression 7

8 as a whole. Thus we can write label(sqrt, λ((a, x, ɛ), ( x 2 a < ɛ x, T sqrt(a, 1(x + a ), ɛ)))) 2 x as a name for our sqrt function. The symbol a in label (a, E) is also bound, that is, it may be altered systematically without changing the meaning of the expression. It behaves differently from a variable bound by a λ, however. 3 Recursive Functions of Symbolic Expressions We shall first define a class of symbolic expressions in terms of ordered pairs and lists. Then we shall define five elementary functions and predicates, and build from them by composition, conditional expressions, and recursive definitions an extensive class of functions of which we shall give a number of examples. We shall then show how these functions themselves can be expressed as symbolic expressions, and we shall define a universal function apply that allows us to compute from the expression for a given function its value for given arguments. Finally, we shall define some functions with functions as arguments and give some useful examples. a. A Class of Symbolic Expressions. We shall now define the S-expressions (S stands for symbolic). They are formed by using the special characters ) ( and an infinite set of distinguishable atomic symbols. For atomic symbols, we shall use strings of capital Latin letters and digits with single imbedded 8

9 blanks. 3 Examples of atomic symbols are A ABA APPLE PIE NUMBER 3 There is a twofold reason for departing from the usual mathematical practice of using single letters for atomic symbols. First, computer programs frequently require hundreds of distinguishable symbols that must be formed from the 47 characters that are printable by the IBM 704 computer. Second, it is convenient to allow English words and phrases to stand for atomic entities for mnemonic reasons. The symbols are atomic in the sense that any substructure they may have as sequences of characters is ignored. We assume only that different symbols can be distinguished. S-expressions are then defined as follows: 1. Atomic symbols are S-expressions. 2. If e 1 and e 2 are S-expressions, so is (e 1 e 2 ). Examples of S-expressions are AB (A B) ((AB C) D) An S-expression is then simply an ordered pair, the terms of which may be atomic symbols or simpler S-expressions. We can can represent a list of arbitrary length in terms of S-expressions as follows. The list is represented by the S-expression (m 1, m 2,, m n ) (m 1 (m 2 ( (m n NIL) ))) Here NIL is an atomic symbol used to terminate lists. Since many of the symbolic expressions with which we deal are conveniently expressed as lists, we shall introduce a list notation to abbreviate certain S-expressions. We have remark: Imbedded blanks could be allowed within symbols, because lists were then written with commas between elements. 9

10 l. (m) stands for (m NIL). 2. (m 1,, m n ) stands for (m 1 ( (m n NIL) )). 3. (m 1,, m n x) stands for (m 1 ( (m n x) )). Subexpressions can be similarly abbreviated. Some examples of these abbreviations are ((AB, C), D) for ((AB (C NIL)) (D NIL)) ((A, B), C, D E) for ((A (B NIL)) (C (D E))) Since we regard the expressions with commas as abbreviations for those not involving commas, we shall refer to them all as S-expressions. b. Functions of S-expressions and the Expressions That Represent Them. We now define a class of functions of S-expressions. The expressions representing these functions are written in a conventional functional notation. However, in order to clearly distinguish the expressions representing functions from S- expressions, we shall use sequences of lower-case letters for function names and variables ranging over the set of S-expressions. We also use brackets and semicolons, instead of parentheses and commas, for denoting the application of functions to their arguments. Thus we write car[x] car[cons[(a B); x]] In these M-expressions (meta-expressions) any S-expression that occur stand for themselves. c. The Elementary S-functions and Predicates. We introduce the following functions and predicates: 1. atom. atom[x] has the value of T or F according to whether x is an atomic symbol. Thus atom [X] = T atom [(X A)] = F 2. eq. eq [x;y] is defined if and only if both x and y are atomic. eq [x; y] = T if x and y are the same symbol, and eq [x; y] = F otherwise. Thus 10

11 eq [X; X] = T eq [X; A] = F eq [X; (X A)] is undefined. 3. car. car[x] is defined if and only if x is not atomic. car [(e 1 e 2 )] = e 1. Thus car [X] is undefined. car [(X A)] = X car [((X A) Y )] = (X A) 4. cdr. cdr [x] is also defined when x is not atomic. We have cdr [(e 1 e 2 )] = e 2. Thus cdr [X] is undefined. cdr [(X A)] = A cdr [((X A) Y )] = Y 5. cons. cons [x; y] is defined for any x and y. We have cons [e 1 ; e 2 ] = (e 1 e 2 ). Thus cons [X; A] = (X A) cons [(X A); Y ] = ((X A)Y ) car, cdr, and cons are easily seen to satisfy the relations car [cons [x; y]] = x cdr [cons [x; y]] = y cons [car [x]; cdr [x]] = x, provided that x is not atomic. The names car and cons will come to have mnemonic significance only when we discuss the representation of the system in the computer. Compositions of car and cdr give the subexpressions of a given expression in a given position. Compositions of cons form expressions of a given structure out of parts. The class of functions which can be formed in this way is quite limited and not very interesting. d. Recursive S-functions. We get a much larger class of functions (in fact, all computable functions) when we allow ourselves to form new functions of S-expressions by conditional expressions and recursive definition. We now give 11

12 some examples of functions that are definable in this way. 1. ff[x]. The value of ff[x] is the first atomic symbol of the S-expression x with the parentheses ignored. Thus We have ff[((a B) C)] = A ff[x] = [atom[x] x; T ff[car[x]]] We now trace in detail the steps in the evaluation of ff [((A B) C)]: ff [((A B) C)] = [atom[((a B) C)] ((A B) C); T ff[car[((a B)C )]]] = [F ((A B) C); T ff[car[((a B) C)]]] = [T ff[car[((a B) C)]]] = ff[car[((a B) C)]] = ff[(a B)] = [atom[(a B)] (A B); T ff[car[(a B)]]] = [F (A B); T ff[car[(a B)]]] = [T ff[car[(a B)]]] = ff[car[(a B)]] = ff[a] 12

13 = [atom[a] A; T ff[car[a]]] = [T A; T ff[car[a]]] = A 2. subst [x; y; z]. This function gives the result of substituting the S- expression x for all occurrences of the atomic symbol y in the S-expression z. It is defined by subst [x; y; z] = [atom [z] [eq [z; y] x; T z]; T cons [subst [x; y; car [z]]; subst [x; y; cdr [z]]]] As an example, we have subst[(x A); B; ((A B) C)] = ((A (X A)) C) 3. equal [x; y]. This is a predicate that has the value T if x and y are the same S-expression, and has the value F otherwise. We have equal [x; y] = [atom [x] atom [y] eq [x; y]] [ atom [x] atom [y] equal [car [x]; car [y]] equal [cdr [x]; cdr [y]]] It is convenient to see how the elementary functions look in the abbreviated list notation. The reader will easily verify that (i) car[(m 1, m 2,, m n )] = m 1 (ii) cdr[(m s, m 2,, m n )] = (m 2,, m n ) (iii) cdr[(m)] = NIL (iv) cons[m 1 ; (m 2,, m n )] = (m 1, m 2,, m n ) (v) cons[m; NIL] = (m) We define 13

14 null[x] = atom[x] eq[x; NIL] This predicate is useful in dealing with lists. Compositions of car and cdr arise so frequently that many expressions can be written more concisely if we abbreviate cadr[x] for car[cdr[x]], caddr[x] for car[cdr[cdr[x]]], etc. Another useful abbreviation is to write list [e 1 ; e 2 ; ; e n ] for cons[e 1 ; cons[e 2 ; ; cons[e n ; NIL] ]]. This function gives the list, (e 1,, e n ), as a function of its elements. The following functions are useful when S-expressions are regarded as lists. 1. append [x;y]. append [x; y] = [null[x] y; T cons [car [x]; append [cdr [x]; y]]] An example is append [(A, B); (C, D, E)] = (A, B, C, D, E) 2. among [x;y]. This predicate is true if the S-expression x occurs among the elements of the list y. We have among[x; y] = null[y] [equal[x; car[y]] among[x; cdr[y]]] 3. pair [x;y]. This function gives the list of pairs of corresponding elements of the lists x and y. We have pair[x; y] = [null[x] null[y] NIL; atom[x] atom[y] cons[list[car[x]; car[y]]; pair[cdr[x]; cdr[y]]] An example is pair[(a, B, C); (X, (Y, Z), U)] = ((A, X), (B, (Y, Z)), (C, U)). 14

15 4. assoc [x;y]. If y is a list of the form ((u 1, v 1 ),, (u n, v n )) and x is one of the u s, then assoc [x; y] is the corresponding v. We have assoc[x; y] = eq[caar[y]; x] cadar[y]; T assoc[x; cdr[y]]] An example is assoc[x; ((W, (A, B)), (X, (C, D)), (Y, (E, F)))] = (C, D). 5. sublis[x; y]. Here x is assumed to have the form of a list of pairs ((u 1, v 1 ),, (u n, v n )), where the u s are atomic, and y may be any S-expression. The value of sublis[x; y] is the result of substituting each v for the corresponding u in y. In order to define sublis, we first define an auxiliary function. We have and sub2[x; z] = [null[x] z; eq[caar[x]; z] cadar[x]; T sub2[cdr[x]; z]] sublis[x; y] = [atom[y] sub2[x; y]; T cons[sublis[x; car[y]]; sublis[x; cdr[y]]] We have sublis [((X, (A, B)), (Y, (B, C))); (A, X Y)] = (A, (A, B), B, C) e. Representation of S-Functions by S-Expressions. S-functions have been described by M-expressions. We now give a rule for translating M-expressions into S-expressions, in order to be able to use S-functions for making certain computations with S-functions and for answering certain questions about S- functions. The translation is determined by the following rules in rich we denote the translation of an M-expression E by E*. 1. If E is an S-expression E* is (QUOTE, E). 2. Variables and function names that were represented by strings of lowercase letters are translated to the corresponding strings of the corresponding uppercase letters. Thus car* is CAR, and subst* is SUBST. 3. A form f[e 1 ; ; e n ] is translated to (f, e 1, e n ). Thus cons [car [x]; cdr [x]] is (CONS, (CAR, X), (CDR, X)). 4. {[p 1 e 1 ; ; p n e n ]} is (COND, (p 1, e 1),, (p n e n)). 15

16 5. {λ[[x 1 ; ; x n ]; E]} is (LAMBDA, (x 1,, x n ), E ). 6. {label[a; E]} is (LABEL, a, E ). With these conventions the substitution function whose M-expression is label [subst; λ [[x; y; z]; [atom [z] [eq [y; z] x; T z]; T cons [subst [x; y; car [z]]; subst [x; y; cdr [z]]]]]] has the S-expression (LABEL, SUBST, (LAMBDA, (X, Y, Z), (COND ((ATOM, Z), (COND, (EQ, Y, Z), X), ((QUOTE, T), Z))), ((QUOTE, T), (CONS, (SUBST, X, Y, (CAR Z)), (SUBST, X, Y, (CDR, Z))))))) This notation is writable and somewhat readable. It can be made easier to read and write at the cost of making its structure less regular. If more characters were available on the computer, it could be improved considerably. 4 f. The Universal S-Function apply. There is an S-function apply with the property that if f is an S-expression for an S-function f and args is a list of arguments of the form (arg 1,, arg n ), where arg 1,, arg n are arbitrary S- expressions, then apply[f; args] and f [arg 1 ; ; arg n ] are defined for the same values of arg 1,, arg n, and are equal when defined. For example, λ[[x; y]; cons[car[x]; y]][(a, B); (C, D)] = apply[(lambda, (X, Y ), (CONS, (CAR, X), Y )); ((A, B), (C, D))] = (A, C, D) The S-function apply is defined by where apply[f; args] = eval[cons[f; appq[args]]; NIL], appq[m] = [null[m] NIL; T cons[list[quot E; car[m]]; appq[cdr[m]]]] and eval[e; a] = [ : More characters were made available on SAIL and later on the Lisp machines. Alas, the world went back to inferior character sets again though not as far back as when this paper was written in early

18 We now explain a number of points about these definitions apply itself forms an expression representing the value of the function applied to the arguments, and puts the work of evaluating this expression onto a function eval. It uses appq to put quotes around each of the arguments, so that eval will regard them as standing for themselves. 2. eval[e; a] has two arguments, an expression e to be evaluated, and a list of pairs a. The first item of each pair is an atomic symbol, and the second is the expression for which the symbol stands. 3. If the expression to be evaluated is atomic, eval evaluates whatever is paired with it first on the list a. 4. If e is not atomic but car[e] is atomic, then the expression has one of the forms (QUOTE, e) or (ATOM, e) or (EQ, e 1, e 2 ) or (COND, (p 1, e 1 ),, (p n, e n )), or (CAR, e) or (CDR, e) or (CONS, e 1, e 2 ) or (f, e 1,, e n ) where f is an atomic symbol. In the case (QUOTE, e) the expression e, itself, is taken. In the case of (ATOM, e) or (CAR, e) or (CDR, e) the expression e is evaluated and the appropriate function taken. In the case of (EQ, e 1, e 2 ) or (CONS, e 1, e 2 ) two expressions have to be evaluated. In the case of (COND, (p 1, e 1 ), (p n, e n )) the p s have to be evaluated in order until a true p is found, and then the corresponding e must be evaluated. This is accomplished by evcon. Finally, in the case of (f, e 1,, e n ) we evaluate the expression that results from replacing f in this expression by whatever it is paired with in the list a. 5. The evaluation of ((LABEL, f, E), e 1,, e n ) is accomplished by evaluating (E, e 1,, e n ) with the pairing (f, (LABEL, f, E)) put on the front of the previous list a of pairs. 6. Finally, the evaluation of ((LAMBDA, (x 1,, x n ), E), e 1, e n ) is accomplished by evaluating E with the list of pairs ((x 1, e 1 ),, ((x n, e n )) put on the front of the previous list a. The list a could be eliminated, and LAMBDA and LABEL expressions evaluated by substituting the arguments for the variables in the expressions E. Unfortunately, difficulties involving collisions of bound variables arise, but they are avoided by using the list a : This version isn t quite right. A comparison of this and other versions of eval including what was actually implemented (and debugged) is given in The Influence of the Designer on the Design by Herbert Stoyan and included in Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy, Vladimir Lifschitz (ed.), Academic Press,

19 Calculating the values of functions by using apply is an activity better suited to electronic computers than to people. As an illustration, however, we now give some of the steps for calculating apply [(LABEL, FF, (LAMBDA, (X), (COND, (ATOM, X), X), ((QUOTE, T),(FF, (CAR, X))))));((A B))] = A The first argument is the S-expression that represents the function ff defined in section 3d. We shall abbreviate it by using the letter φ. We have apply [φ; ( (A B) )] = eval [((LABEL, FF, ψ), (QUOTE, (A B))); NIL] where ψ is the part of φ beginning (LAMBDA = eval[((lambda, (X), ω), (QUOTE, (A B)));((FF, φ))] where ω is the part of ψ beginning (COND = eval [(COND, (π 1, ɛ 1 ), (π 2, ɛ 2 )); ((X, (QUOTE, (A B) ) ), (FF, φ) )] Denoting ((X, (QUOTE, (A B))), (FF, φ)) by a, we obtain = evcon [((π 1, ɛ 1 ), (π 2, ɛ 2 )); a] This involves eval [π 1 ; a] = eval [( ATOM, X); a] = atom [eval [X; a]] = atom [eval [assoc [X; ((X, (QUOTE, (A B))), (FF,φ))];a]] = atom [eval [(QUOTE, (A B)); a]] = atom [(A B)], = F Our main calulation continues with 19

20 apply [φ; ((A B))] = evcon [((π 2, ɛ 2, )); a], which involves eval [π 2 ; a] = eval [(QUOTE, T); a] = T Our main calculation again continues with apply [φ; ((A B))] = eval [ɛ 2 ; a] = eval [(FF, (CAR, X));a] = eval [Cons [φ; evlis [((CAR, X)); a]]; a] Evaluating evlis [((CAR, X)); a] involves eval [(CAR, X); a] = car [eval [X; a]] = car [(A B)], where we took steps from the earlier computation of atom [eval [X; a]] = A, and so evlis [((CAR, X)); a] then becomes list [list [QUOTE; A]] = ((QUOTE, A)), and our main quantity becomes = eval [(φ, (QUOTE, A)); a] The subsequent steps are made as in the beginning of the calculation. The LABEL and LAMBDA cause new pairs to be added to a, which gives a new list of pairs a 1. The π 1 term of the conditional eval [(ATOM, X); a 1 ] has the 20

21 value T because X is paired with (QUOTE, A) first in a 1, rather than with (QUOTE, (A B)) as in a. Therefore we end up with eval [X; a 1 ] from the evcon, and this is just A. g. Functions with Functions as Arguments. There are a number of useful functions some of whose arguments are functions. They are especially useful in defining other functions. One such function is maplist[x; f] with an S- expression argument x and an argument f that is a function from S-expressions to S-expressions. We define maplist[x; f] = [null[x] NIL; T cons[f[x]; maplist[cdr[x]; f]]] The usefulness of maplist is illustrated by formulas for the partial derivative with respect to x of expressions involving sums and products of x and other variables. The S-expressions that we shall differentiate are formed as follows. 1. An atomic symbol is an allowed expression. 2. If e 1, e 2,, e n are allowed expressions, ( PLUS, e 1,, e n ) and (TIMES, e 1,, e n ) are also, and represent the sum and product, respectively, of e 1,, e n. This is, essentially, the Polish notation for functions, except that the inclusion of parentheses and commas allows functions of variable numbers of arguments. An example of an allowed expression is (TIMES, X, (PLUS, X, A), Y), the conventional algebraic notation for which is X(X + A)Y. Our differentiation formula, which gives the derivative of y with respect to x, is diff [y; x] = [atom [y] [eq [y; x] ONE; T ZERO]; eq [car [Y]; PLUS] cons [PLUS; maplist [cdr [y]; λ[[z]; diff [car [z]; x]]]]; eq[car [y]; TIMES] cons[plus; maplist[cdr[y]; λ[[z]; cons [TIMES; maplist[cdr [y]; λ[[w]; eq [z; w] car [w]; T diff [car [[w]; x]]]]]]] The derivative of the expression (TIMES, X, (PLUS, X, A), Y), as computed by this formula, is (PLUS, (TIMES, ONE, (PLUS, X, A), Y), (TIMES, X, (PLUS, ONE, ZERO), Y), (TIMES, X, (PLUS, X, A), ZERO)) Besides maplist, another useful function with functional arguments is search, which is defined as search[x; p; f; u] = [null[x] u; p[x] f[x]; T search[cdr[x]; p; f; u] 21

### CHAPTER 2. Logic. 1. Logic Definitions. Notation: Variables are used to represent propositions. The most common variables used are p, q, and r.

CHAPTER 2 Logic 1. Logic Definitions 1.1. Propositions. Definition 1.1.1. A proposition is a declarative sentence that is either true (denoted either T or 1) or false (denoted either F or 0). Notation:

### Students in their first advanced mathematics classes are often surprised

CHAPTER 8 Proofs Involving Sets Students in their first advanced mathematics classes are often surprised by the extensive role that sets play and by the fact that most of the proofs they encounter are

### 2. Methods of Proof Types of Proofs. Suppose we wish to prove an implication p q. Here are some strategies we have available to try.

2. METHODS OF PROOF 69 2. Methods of Proof 2.1. Types of Proofs. Suppose we wish to prove an implication p q. Here are some strategies we have available to try. Trivial Proof: If we know q is true then

### A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts

[Mechanical Translation, vol.5, no.1, July 1958; pp. 25-41] A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts A notational

### Functional Programming. Functional Programming Languages. Chapter 14. Introduction

Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The

### Chapter 15 Functional Programming Languages

Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,

### Compiling Scheme to a Micro 2 computer

Massachusetts Institute of Technology Course Notes 7 6.844, Spring 03: Computability Theory of and with Scheme April 22 Prof. Albert Meyer revised April 22, 2003, 1115 minutes Compiling Scheme to a Micro

### Math Review. for the Quantitative Reasoning Measure of the GRE revised General Test

Math Review for the Quantitative Reasoning Measure of the GRE revised General Test www.ets.org Overview This Math Review will familiarize you with the mathematical skills and concepts that are important

### It is time to prove some theorems. There are various strategies for doing

CHAPTER 4 Direct Proof It is time to prove some theorems. There are various strategies for doing this; we now examine the most straightforward approach, a technique called direct proof. As we begin, it

### Chapter 1. Logic and Proof

Chapter 1. Logic and Proof 1.1 Remark: A little over 100 years ago, it was found that some mathematical proofs contained paradoxes, and these paradoxes could be used to prove statements that were known

### Section 1. Statements and Truth Tables. Definition 1.1: A mathematical statement is a declarative sentence that is true or false, but not both.

M3210 Supplemental Notes: Basic Logic Concepts In this course we will examine statements about mathematical concepts and relationships between these concepts (definitions, theorems). We will also consider

### Lecture 3. Mathematical Induction

Lecture 3 Mathematical Induction Induction is a fundamental reasoning process in which general conclusion is based on particular cases It contrasts with deduction, the reasoning process in which conclusion

### Elementary Number Theory We begin with a bit of elementary number theory, which is concerned

CONSTRUCTION OF THE FINITE FIELDS Z p S. R. DOTY Elementary Number Theory We begin with a bit of elementary number theory, which is concerned solely with questions about the set of integers Z = {0, ±1,

### Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to

### WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT?

WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? introduction Many students seem to have trouble with the notion of a mathematical proof. People that come to a course like Math 216, who certainly

### Handout #1: Mathematical Reasoning

Math 101 Rumbos Spring 2010 1 Handout #1: Mathematical Reasoning 1 Propositional Logic A proposition is a mathematical statement that it is either true or false; that is, a statement whose certainty or

### 31 is a prime number is a mathematical statement (which happens to be true).

Chapter 1 Mathematical Logic In its most basic form, Mathematics is the practice of assigning truth to welldefined statements. In this course, we will develop the skills to use known true statements to

### [Refer Slide Time: 05:10]

Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture

### SYSTEMS OF EQUATIONS AND MATRICES WITH THE TI-89. by Joseph Collison

SYSTEMS OF EQUATIONS AND MATRICES WITH THE TI-89 by Joseph Collison Copyright 2000 by Joseph Collison All rights reserved Reproduction or translation of any part of this work beyond that permitted by Sections

### Moving from CS 61A Scheme to CS 61B Java

Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you

### U.C. Berkeley CS276: Cryptography Handout 0.1 Luca Trevisan January, 2009. Notes on Algebra

U.C. Berkeley CS276: Cryptography Handout 0.1 Luca Trevisan January, 2009 Notes on Algebra These notes contain as little theory as possible, and most results are stated without proof. Any introductory

### Mathematics of Cryptography

CHAPTER 2 Mathematics of Cryptography Part I: Modular Arithmetic, Congruence, and Matrices Objectives This chapter is intended to prepare the reader for the next few chapters in cryptography. The chapter

### WUCT121. Discrete Mathematics. Logic

WUCT121 Discrete Mathematics Logic 1. Logic 2. Predicate Logic 3. Proofs 4. Set Theory 5. Relations and Functions WUCT121 Logic 1 Section 1. Logic 1.1. Introduction. In developing a mathematical theory,

### Magic Tutorial #S-1: The scheme command-line interpreter

Magic Tutorial #S-1: The scheme command-line interpreter Rajit Manohar Department of Computer Science California Institute of Technology Pasadena, CA 91125 This tutorial corresponds to Magic version 7.

### 2) Write in detail the issues in the design of code generator.

COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage

### a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a 2n x n = b 2.

Chapter 1 LINEAR EQUATIONS 1.1 Introduction to linear equations A linear equation in n unknowns x 1, x,, x n is an equation of the form a 1 x 1 + a x + + a n x n = b, where a 1, a,..., a n, b are given

### Unit 2: Number Systems, Codes and Logic Functions

Unit 2: Number Systems, Codes and Logic Functions Introduction A digital computer manipulates discrete elements of data and that these elements are represented in the binary forms. Operands used for calculations

### Tutorial No. 1 - Solution (Introduction to Computers & Programming)

Tutorial No. 1 - Solution (Introduction to Computers & Programming) Computer Programming and Utilization (2110003) 1. Draw a block diagram of computer architecture. 2. List various components of a computer

### Mathematics for Computer Science/Software Engineering. Notes for the course MSM1F3 Dr. R. A. Wilson

Mathematics for Computer Science/Software Engineering Notes for the course MSM1F3 Dr. R. A. Wilson October 1996 Chapter 1 Logic Lecture no. 1. We introduce the concept of a proposition, which is a statement

### Elementary Number Theory and Methods of Proof. CSE 215, Foundations of Computer Science Stony Brook University http://www.cs.stonybrook.

Elementary Number Theory and Methods of Proof CSE 215, Foundations of Computer Science Stony Brook University http://www.cs.stonybrook.edu/~cse215 1 Number theory Properties: 2 Properties of integers (whole

### 6 EXTENDING ALGEBRA. 6.0 Introduction. 6.1 The cubic equation. Objectives

6 EXTENDING ALGEBRA Chapter 6 Extending Algebra Objectives After studying this chapter you should understand techniques whereby equations of cubic degree and higher can be solved; be able to factorise

### COMPUTER SCIENCE TRIPOS

CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five

### The current topic: Scheme. Announcements. Numeric operators. Review: car, cdr, and cons

The current topic: Scheme! Introduction! Object-oriented programming: Python Functional programming: Scheme! Introduction Next up: Numeric operators, REPL, quotes, functions, conditionals Types and values

### Prime Numbers. Chapter Primes and Composites

Chapter 2 Prime Numbers The term factoring or factorization refers to the process of expressing an integer as the product of two or more integers in a nontrivial way, e.g., 42 = 6 7. Prime numbers are

### Summation Algebra. x i

2 Summation Algebra In the next 3 chapters, we deal with the very basic results in summation algebra, descriptive statistics, and matrix algebra that are prerequisites for the study of SEM theory. You

### Reading 13 : Finite State Automata and Regular Expressions

CS/Math 24: Introduction to Discrete Mathematics Fall 25 Reading 3 : Finite State Automata and Regular Expressions Instructors: Beck Hasti, Gautam Prakriya In this reading we study a mathematical model

### Continued Fractions and the Euclidean Algorithm

Continued Fractions and the Euclidean Algorithm Lecture notes prepared for MATH 326, Spring 997 Department of Mathematics and Statistics University at Albany William F Hammond Table of Contents Introduction

### The following themes form the major topics of this chapter: The terms and concepts related to trees (Section 5.2).

CHAPTER 5 The Tree Data Model There are many situations in which information has a hierarchical or nested structure like that found in family trees or organization charts. The abstraction that models hierarchical

### 3. Recurrence Recursive Definitions. To construct a recursively defined function:

3. RECURRENCE 10 3. Recurrence 3.1. Recursive Definitions. To construct a recursively defined function: 1. Initial Condition(s) (or basis): Prescribe initial value(s) of the function.. Recursion: Use a

### Theory of Computation Lecture Notes

Theory of Computation Lecture Notes Abhijat Vichare August 2005 Contents 1 Introduction 2 What is Computation? 3 The λ Calculus 3.1 Conversions: 3.2 The calculus in use 3.3 Few Important Theorems 3.4 Worked

### 3 SOFTWARE AND PROGRAMMING LANGUAGES

3 SOFTWARE AND PROGRAMMING LANGUAGES 3.1 INTRODUCTION In the previous lesson we discussed about the different parts and configurations of computer. It has been mentioned that programs or instructions have

### Fractions and Decimals

Fractions and Decimals Tom Davis tomrdavis@earthlink.net http://www.geometer.org/mathcircles December 1, 2005 1 Introduction If you divide 1 by 81, you will find that 1/81 =.012345679012345679... The first

### Introduction Number Systems and Conversion

UNIT 1 Introduction Number Systems and Conversion Objectives 1. Introduction The first part of this unit introduces the material to be studied later. In addition to getting an overview of the material

### Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating

### CHAPTER 3 Numbers and Numeral Systems

CHAPTER 3 Numbers and Numeral Systems Numbers play an important role in almost all areas of mathematics, not least in calculus. Virtually all calculus books contain a thorough description of the natural,

### MAT2400 Analysis I. A brief introduction to proofs, sets, and functions

MAT2400 Analysis I A brief introduction to proofs, sets, and functions In Analysis I there is a lot of manipulations with sets and functions. It is probably also the first course where you have to take

### A Concrete Introduction. to the Abstract Concepts. of Integers and Algebra using Algebra Tiles

A Concrete Introduction to the Abstract Concepts of Integers and Algebra using Algebra Tiles Table of Contents Introduction... 1 page Integers 1: Introduction to Integers... 3 2: Working with Algebra Tiles...

### 3. Mathematical Induction

3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)

### C H A P T E R Regular Expressions regular expression

7 CHAPTER Regular Expressions Most programmers and other power-users of computer systems have used tools that match text patterns. You may have used a Web search engine with a pattern like travel cancun

### Factoring Polynomials

Factoring Polynomials Hoste, Miller, Murieka September 12, 2011 1 Factoring In the previous section, we discussed how to determine the product of two or more terms. Consider, for instance, the equations

### max cx s.t. Ax c where the matrix A, cost vector c and right hand side b are given and x is a vector of variables. For this example we have x

Linear Programming Linear programming refers to problems stated as maximization or minimization of a linear function subject to constraints that are linear equalities and inequalities. Although the study

### MATH REVIEW KIT. Reproduced with permission of the Certified General Accountant Association of Canada.

MATH REVIEW KIT Reproduced with permission of the Certified General Accountant Association of Canada. Copyright 00 by the Certified General Accountant Association of Canada and the UBC Real Estate Division.

### If A is divided by B the result is 2/3. If B is divided by C the result is 4/7. What is the result if A is divided by C?

Problem 3 If A is divided by B the result is 2/3. If B is divided by C the result is 4/7. What is the result if A is divided by C? Suggested Questions to ask students about Problem 3 The key to this question

### Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2

CS 70 Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 2 Proofs Intuitively, the concept of proof should already be familiar We all like to assert things, and few of us

### Regular Languages and Finite Automata

Regular Languages and Finite Automata 1 Introduction Hing Leung Department of Computer Science New Mexico State University Sep 16, 2010 In 1943, McCulloch and Pitts [4] published a pioneering work on a

### It is not immediately obvious that this should even give an integer. Since 1 < 1 5

Math 163 - Introductory Seminar Lehigh University Spring 8 Notes on Fibonacci numbers, binomial coefficients and mathematical induction These are mostly notes from a previous class and thus include some

### Lecture 1: Elementary Number Theory

Lecture 1: Elementary Number Theory The integers are the simplest and most fundamental objects in discrete mathematics. All calculations by computers are based on the arithmetical operations with integers

### Introduction to Proofs

Chapter 1 Introduction to Proofs 1.1 Preview of Proof This section previews many of the key ideas of proof and cites [in brackets] the sections where they are discussed thoroughly. All of these ideas are

### Lecture Notes on Polynomials

Lecture Notes on Polynomials Arne Jensen Department of Mathematical Sciences Aalborg University c 008 Introduction These lecture notes give a very short introduction to polynomials with real and complex

### 12 Lists and Recursive Search

12 Lists and Recursive Search Chapter Objectives Chapter Contents Lisp processing of arbitrary symbol structures Building blocks for data structures Designing accessors The symbol list as building block

### Formal Languages and Automata Theory - Regular Expressions and Finite Automata -

Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March

### CHAPTER 5: MODULAR ARITHMETIC

CHAPTER 5: MODULAR ARITHMETIC LECTURE NOTES FOR MATH 378 (CSUSM, SPRING 2009). WAYNE AITKEN 1. Introduction In this chapter we will consider congruence modulo m, and explore the associated arithmetic called

### Automata and Languages

Automata and Languages Computational Models: An idealized mathematical model of a computer. A computational model may be accurate in some ways but not in others. We shall be defining increasingly powerful

### 11 Ideals. 11.1 Revisiting Z

11 Ideals The presentation here is somewhat different than the text. In particular, the sections do not match up. We have seen issues with the failure of unique factorization already, e.g., Z[ 5] = O Q(

### Basic Lisp Operations

Basic Lisp Operations BLO-1 Function invocation It is an S-expression just another list! ( function arg1 arg2... argn) First list item is the function prefix notation The other list items are the arguments

### Linear Algebra Notes for Marsden and Tromba Vector Calculus

Linear Algebra Notes for Marsden and Tromba Vector Calculus n-dimensional Euclidean Space and Matrices Definition of n space As was learned in Math b, a point in Euclidean three space can be thought of

### The Set Data Model CHAPTER 7. 7.1 What This Chapter Is About

CHAPTER 7 The Set Data Model The set is the most fundamental data model of mathematics. Every concept in mathematics, from trees to real numbers, is expressible as a special kind of set. In this book,

### 3515ICT Theory of Computation Turing Machines

Griffith University 3515ICT Theory of Computation Turing Machines (Based loosely on slides by Harald Søndergaard of The University of Melbourne) 9-0 Overview Turing machines: a general model of computation

### Chapter One Introduction to Programming

Chapter One Introduction to Programming 1-1 Algorithm and Flowchart Algorithm is a step-by-step procedure for calculation. More precisely, algorithm is an effective method expressed as a finite list of

### SECTION 0.6: POLYNOMIAL, RATIONAL, AND ALGEBRAIC EXPRESSIONS

(Section 0.6: Polynomial, Rational, and Algebraic Expressions) 0.6.1 SECTION 0.6: POLYNOMIAL, RATIONAL, AND ALGEBRAIC EXPRESSIONS LEARNING OBJECTIVES Be able to identify polynomial, rational, and algebraic

### Chapter 1 LOGIC AND PROOF

Chapter 1 LOGIC AND PROOF To be able to understand mathematics and mathematical arguments, it is necessary to have a solid understanding of logic and the way in which known facts can be combined to prove

### 13 Variables, Datatypes, and Search

13 Variables, Datatypes, and Search Chapter Objectives Chapter Contents Variables introduced Basic support for type systems Fundamental to search Creating and binding variables set let Depth-first search

### NP-Completeness and Cook s Theorem

NP-Completeness and Cook s Theorem Lecture notes for COM3412 Logic and Computation 15th January 2002 1 NP decision problems The decision problem D L for a formal language L Σ is the computational task:

### Mathematical Induction

Chapter 2 Mathematical Induction 2.1 First Examples Suppose we want to find a simple formula for the sum of the first n odd numbers: 1 + 3 + 5 +... + (2n 1) = n (2k 1). How might we proceed? The most natural

### JUST THE MATHS UNIT NUMBER 1.8. ALGEBRA 8 (Polynomials) A.J.Hobson

JUST THE MATHS UNIT NUMBER 1.8 ALGEBRA 8 (Polynomials) by A.J.Hobson 1.8.1 The factor theorem 1.8.2 Application to quadratic and cubic expressions 1.8.3 Cubic equations 1.8.4 Long division of polynomials

### Sets and functions. {x R : x > 0}.

Sets and functions 1 Sets The language of sets and functions pervades mathematics, and most of the important operations in mathematics turn out to be functions or to be expressible in terms of functions.

### PROVING STATEMENTS IN LINEAR ALGEBRA

Mathematics V2010y Linear Algebra Spring 2007 PROVING STATEMENTS IN LINEAR ALGEBRA Linear algebra is different from calculus: you cannot understand it properly without some simple proofs. Knowing statements

### Integer roots of quadratic and cubic polynomials with integer coefficients

Integer roots of quadratic and cubic polynomials with integer coefficients Konstantine Zelator Mathematics, Computer Science and Statistics 212 Ben Franklin Hall Bloomsburg University 400 East Second Street

### Flowchart Techniques

C H A P T E R 1 Flowchart Techniques 1.1 Programming Aids Programmers use different kinds of tools or aids which help them in developing programs faster and better. Such aids are studied in the following

### Algebraic Complexity Theory and Matrix Multiplication

Algebraic Complexity Theory and Matrix Multiplication [Handout for the Tutorial] François Le Gall Department of Computer Science Graduate School of Information Science and Technology The University of

### strsep exercises Introduction C strings Arrays of char

strsep exercises Introduction The standard library function strsep enables a C programmer to parse or decompose a string into substrings, each terminated by a specified character. The goals of this document

### EXPONENTS. To the applicant: KEY WORDS AND CONVERTING WORDS TO EQUATIONS

To the applicant: The following information will help you review math that is included in the Paraprofessional written examination for the Conejo Valley Unified School District. The Education Code requires

### Chapter 2: Problem Solving Using C++

Chapter 2: Problem Solving Using C++ 1 Objectives In this chapter, you will learn about: Modular programs Programming style Data types Arithmetic operations Variables and declaration statements Common

### ECS 120 Lesson 17 Church s Thesis, The Universal Turing Machine

ECS 120 Lesson 17 Church s Thesis, The Universal Turing Machine Oliver Kreylos Monday, May 7th, 2001 In the last lecture, we looked at the computation of Turing Machines, and also at some variants of Turing

### Chapter 7: Functional Programming Languages

Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language

### CHAPTER 2 PROBLEM SOLVING

CHAPTER 2 PROBLEM SOLVING This chapter will cover the following topics: Problem Solving Concepts for the Computer Pre-Programming Phase Programming Or Implementation Phase What Problem Can Be Solved By

### Notes on Determinant

ENGG2012B Advanced Engineering Mathematics Notes on Determinant Lecturer: Kenneth Shum Lecture 9-18/02/2013 The determinant of a system of linear equations determines whether the solution is unique, without

### A Second Course in Mathematics Concepts for Elementary Teachers: Theory, Problems, and Solutions

A Second Course in Mathematics Concepts for Elementary Teachers: Theory, Problems, and Solutions Marcel B. Finan Arkansas Tech University c All Rights Reserved First Draft February 8, 2006 1 Contents 25

### Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay

Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay Lecture - 17 Shannon-Fano-Elias Coding and Introduction to Arithmetic Coding

### Indiana State Core Curriculum Standards updated 2009 Algebra I

Indiana State Core Curriculum Standards updated 2009 Algebra I Strand Description Boardworks High School Algebra presentations Operations With Real Numbers Linear Equations and A1.1 Students simplify and

### Revised Version of Chapter 23. We learned long ago how to solve linear congruences. ax c (mod m)

Chapter 23 Squares Modulo p Revised Version of Chapter 23 We learned long ago how to solve linear congruences ax c (mod m) (see Chapter 8). It s now time to take the plunge and move on to quadratic equations.

### Quotient Rings and Field Extensions

Chapter 5 Quotient Rings and Field Extensions In this chapter we describe a method for producing field extension of a given field. If F is a field, then a field extension is a field K that contains F.

### On Generalized Fermat Numbers 3 2n +1

Applied Mathematics & Information Sciences 4(3) (010), 307 313 An International Journal c 010 Dixie W Publishing Corporation, U. S. A. On Generalized Fermat Numbers 3 n +1 Amin Witno Department of Basic

### CHAPTER 2. Inequalities

CHAPTER 2 Inequalities In this section we add the axioms describe the behavior of inequalities (the order axioms) to the list of axioms begun in Chapter 1. A thorough mastery of this section is essential

### ML for the Working Programmer

ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming

### Problem Solving Basics and Computer Programming

Problem Solving Basics and Computer Programming A programming language independent companion to Roberge/Bauer/Smith, "Engaged Learning for Programming in C++: A Laboratory Course", Jones and Bartlett Publishers,

### Number Systems and. Data Representation

Number Systems and Data Representation 1 Lecture Outline Number Systems Binary, Octal, Hexadecimal Representation of characters using codes Representation of Numbers Integer, Floating Point, Binary Coded

### The Classes P and NP

The Classes P and NP We now shift gears slightly and restrict our attention to the examination of two families of problems which are very important to computer scientists. These families constitute the