Computing Over the Reals, Lecture notes of Theory of Computation

One theory or many? In 2004 a very interesting and readable article by Lenore. Blum, entitled “Computing over the reals: Where Turing meets Newton,” ...

Typology: Lecture notes

2022/2023

Uploaded on 05/11/2023

yorket
yorket 🇺🇸

4.4

(38)

276 documents

1 / 28

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
About and Around Computing Over the Reals
Solomon Feferman
1. One theory or many? In 2004 a very interesting and readable article by Lenore
Blum, entitled “Computing over the reals: Where Turing meets Newton,” appeared in the
Notices of the American Mathematical Society. It explained a basic model of
computation over the reals due to Blum, Michael Shub and Steve Smale (1989),
subsequently exposited at length in their influential book, Complexity and Real
Computation (1997), coauthored with Felipe Cucker. The ‘Turing’ in the title of Blum’s
article refers of course to Alan Turing, famous for his explication of the notion of
mechanical computation on discrete data such as the integers. The ‘Newton’ there has to
do to with the well known numerical method due to Isaac Newton for approximating the
zeros of continuous functions under suitable conditions that is taken to be a paradigm of
scientific computing. Finally, the meaning of “Turing meets Newton” in the title of
Blum’s article has another, more particular aspect: in connection with the problem of
controlling errors in the numerical solution of linear equations and inversion of
matrices,Turing (1948) defined a notion of condition for the relation of changes in the
output of a computation due to small changes in the input that is analogous to Newton’s
definition of the derivative.
The thrust of Blum’s 2004 article was that the BSS model of computation on the
reals is the appropriate foundation for scientific computing in general. By way of
response, two years later another very interesting and equally readable article appeared in
the Notices, this time by Mark Braverman and Stephen Cook (2006) entitled “Computing
over the reals: Foundations for scientific computing,” in which the authors argued that the
requisite foundation is provided by a quite different “bit computation” model, that is in
fact prima facie incompatible with the BSS model. The bit computation model goes back
to ideas due to Stefan Banach and Stanislaw Mazur in the latter part of the 1930s, but the
first publication was not made until Mazur (1963). In the meantime, the model was
refined and improved by Andrzej Grzegorczyk (1955) and independently by Daniel
Lacombe (1955) in terms of a theory of recursively computable functionals of the sort
familiar to logicians. Terminologically, something like “effective approximation
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Partial preview of the text

Download Computing Over the Reals and more Lecture notes Theory of Computation in PDF only on Docsity!

About and Around Computing Over the Reals Solomon Feferman

1. One theory or many? In 2004 a very interesting and readable article by Lenore Blum, entitled “Computing over the reals: Where Turing meets Newton,” appeared in the Notices of the American Mathematical Society. It explained a basic model of computation over the reals due to Blum, Michael Shub and Steve Smale (1989), subsequently exposited at length in their influential book, Complexity and Real Computation (1997), coauthored with Felipe Cucker. The ‘Turing’ in the title of Blum’s article refers of course to Alan Turing, famous for his explication of the notion of mechanical computation on discrete data such as the integers. The ‘Newton’ there has to do to with the well known numerical method due to Isaac Newton for approximating the zeros of continuous functions under suitable conditions that is taken to be a paradigm of scientific computing. Finally, the meaning of “Turing meets Newton” in the title of Blum’s article has another, more particular aspect: in connection with the problem of controlling errors in the numerical solution of linear equations and inversion of matrices,Turing (1948) defined a notion of condition for the relation of changes in the output of a computation due to small changes in the input that is analogous to Newton’s definition of the derivative. The thrust of Blum’s 2004 article was that the BSS model of computation on the reals is the appropriate foundation for scientific computing in general. By way of response, two years later another very interesting and equally readable article appeared in the Notices , this time by Mark Braverman and Stephen Cook (2006) entitled “Computing over the reals: Foundations for scientific computing,” in which the authors argued that the requisite foundation is provided by a quite different “bit computation” model, that is in fact prima facie incompatible with the BSS model. The bit computation model goes back to ideas due to Stefan Banach and Stanislaw Mazur in the latter part of the 1930s, but the first publication was not made until Mazur (1963). In the meantime, the model was refined and improved by Andrzej Grzegorczyk (1955) and independently by Daniel Lacombe (1955) in terms of a theory of recursively computable functionals of the sort familiar to logicians. Terminologically, something like “effective approximation

computability” is preferable to “bit computability” as a name for this approach in its applications to analysis. 1 There are functions that are computable in each of these two models of computation over the reals that are not computable in the other. For example, the exponential function is computable in the effective approximation model but not in the BSS model. And in the latter⎯but not in the former⎯given a non-trivial polynomial p over the rationals, one can compute the function of x that is 1 just in case p(x) = 0 and is 0 otherwise. Despite their incompatibility, is there any way that these can both be considered to be reasonable candidates for computation on the real numbers? As we shall see, an obvious answer is provided very quickly by the observation that the BSS model may be considered to be given in terms of computation over the reals as an algebraic structure , while that of the effective approximation model can be given in terms of computation over the reals as a topological structure of a particular kind, or alternatively as a second-order structure over the rationals. But all such explanations presume a general theory of computation over an arbitrary structure. After explaining the BSS and effective computation models respectively in sections 2 and 3 below, my main purpose here is to describe three theories of computation over (more or less) arbitrary structures in sections 4 and 5, the first due to Harvey Friedman, the second due to John Tucker and Jeffery Zucker, and the third due to the author, adapting earlier work of Richard Platek and Yiannis Moschovakis. Finally, and in part as an aside, I shall relate the effective approximation approach to the foundations of constructive analysis in its groundbreaking form due to Errett Bishop. Before engaging in all that, let us return to the issue of computation over the reals as a foundation for scientific computation , aka computational science or numerical analysis. That subject is problem oriented toward the development of techniques for such diverse tasks as solving systems of one or more linear and polynomial equations, interpolation from data, numerical integration and differentiation, determination of maxima and minima, optimization, and solutions of differential and integral equations. Though nowadays these techniques are formulated as programs to be carried out on (^1) These two are not the only theories of computation over the real numbers. See Weirauch (2000) for a useful survey of various such notions.

numbers C, and so on the face of it, it is an algebraic conception of computability. This is reflected in the fact that inputs to a machine for computing a given algorithm are unanalyzed entities in the algebra A, and that a basic admitted step in a computation procedure is to test whether two machine contents x and y are equal or not, and then to branch to further instructions accordingly. (In case A is ordered, one can also test similarly whether x < y or not.) In the BSS description, an algorithmic procedure is given by a directed graph whose top node represents the input stage and passage from a given node to a successor node is made either by a direct computation, which in the case of a ring is effected by a polynomial function (and in the case of a field by a rational function), or by a decision step whose branches may proceed to a new node or return to an earlier node. In the finite-dimensional case, the inputs are finite sequences of any fixed length, while in the infinite-dimensional case they are sequences of arbitrary length from A. The finite dimensional case is illustrated by the Newton algorithm for R or C as follows: given a rational function f, to find a zero of f within a prescribed degree of accuracy ε > 0, one starts with an input x, and successively updates that by replacing x by x– f(x)/f′(x), until one reaches a value of x (if at all) for which |f(x)| < ε. The infinite dimensional case is illustrated by a BSS algorithm to decide whether or not m given polynomials f 1 , …, fm in n variables over C have a common zero, where the procedure is to be described for n, m arbitrary; this is related in an essential way to the Hilbert Nullstellensatz of 1893. 3 It is pointed out in Blum, et al. (1997) that a BSS algorithm for the finite- dimensional case may be thought of more concretely in terms of register machines as a 3 As stated by Blum (2004), p. 1027, Hilbert’s Nullstellensatz (theorem on the zeros) asserts in the case of the complex numbers C that if f 1 ,…,fm are polynomials in C [x] for indeterminates x = (x 1 ,…,xn), then f 1 ,…,fm have no common zero in C n iff there are polynomials g 1 ,…gm in C [x] such that ∑ gifi = 1. This gives a semidecision procedure by searching for such gi. That is turned into a BSS algorithm to decide whether or not the fi have a common zero by use of effective bounds on the degrees of possible such gi found by Grete Hermann in 1926.

direct generalization of the notion due to Shepherdson and Sturgis (1963).^4 Actually, such a generalization to arbitrary fields was already made by Herman and Isard (1970). For the infinite dimensional case, the BSS machine picture is treated instead as a form of a Turing machine with a two-way infinite tape whose squares may be occupied by elements of the ring or field A; the infinite tape allows for inputs consisting of sequences of arbitrary length. Alternatively, it could be treated as a register machine with so-called stack registers. Indeed, this falls under a very general adaptation of the register machine approach to arbitrary structures that was made by Friedman (1971); this will be described in sec. 4 below. It may be seen that in the case of rings, resp. fields, only piecewise polynomial functions, resp. rational functions, are BSS computable. In particular, the Newton algorithm can only be applied to such. But one could add any continuous function f to the basic field structure and relativize the notion of BSS computable function to that. Of course, doing so affects the complexity questions that are of major concern in Blum, et al. (1997). In the opposite direction, one may ask what BSS algorithms can actually be carried out on a computer. Tarski’s decision procedure (1951) for the algebra of real numbers may be considered as a special case of such. Its centerpiece method reduces the question of whether or not a system of polynomial equations and inequalities in one variable with coefficients in R has a common solution, to a quantifier-free condition on the coefficients of the polynomials. On the face of it, Tarski’s procedure runs in time complexity as a tower of exponentials. That was cut down considerably to doubly exponential upper bounds by George Collins in 1973 using a new method that he called Cylindrical Algebraic Decomposition (CAD); Collins’ original work and many relevant articles are to be found in the valuable source Caviness and Johnson (1998). The CAD algorithm has actually been implemented for computers by one of Collins’ students, and in a modified form in the system Mathematica ; that works in reasonable time for polynomials of relatively low degree_._ But in principle, Fischer and Rabin (1974, reprinted in Caviness and Johnson), give an EXPTIME lower bound of the form 2 cn for 4 See Cutland (1980) for a nice exposition and development of recursion theory on the basis of register machines. This is also referred to by some as the Random Access Model (RAM).

In these terms, the requirement for S-effective approximation computability of f reduces to obtaining a computable functional F: ZN^ → ZN^ such that for any φ: NZ satisfying (1) and for F(φ) = ψ we have (2) (∀n) |x – φ(n)/2n| ≤ 1/2n^ ⇒ (∀m) |f(x) – ψ(m)/2m| ≤ 1/2m. When this holds for all x in the domain of f we say that F effectively represents f. This notion of computability of real functions is due independently to Grzegorczyk (1955) and Lacombe (1955). It is illustrated in Braverman and Cook (2006) by proof of the bit- computability of f(x) = e x using its usual power series expansion, thus showing that for many such functions, one goes well beyond BSS computability over the reals in this model. Using the effective correspondence of Z with N , the preceding explanation of S-effective approximation computability of real functions reduces to the explanation from classical recursion theory of the notion of effectively computable functional F: NN^ → NN.

Write T for the class NN^ of all total functions from N to N , and P for the class of all

partial functions from N to N. The original explanation of what is an effectively computable functional (of type 2 over N) was that given by Kleene (1952) p. 326 for

F: P → P, in terms of Herbrand-Gödel calculability from a suitable system of equations

E with a symbol for an arbitrary partial function φ and a symbol ψ for a function defined

by E from φ. The idea is that for any φ in P, the values ψ(m) can be calculated by the

equational rules from E together with the diagram (i.e. formal graph) of φ. It is immediate that any partial recursive F is monotonic in its arguments, i.e. if φ and φ′ are partial functions with φ′ an extension of φ then F(φ′) is an extension of F(φ). Moreover we have the continuity property that if F(φ) = ψ then each value ψ(n) depends only on a finite number of values of φ, i.e. there is a finite subfunction φ 0 of φ such that if φ′ is any extension of φ 0 and ψ′ = F(φ′) then ψ′(m) = ψ(m). Combining these facts, one has that F(φ) is the union of F(φ 0 ) for all finite φ 0 ⊆ φ. Kleene’s main result for the partial recursive functionals is his (“second”) Recursion Theorem, according to which each such F has a least fixed point, obtained by taking the union of all finite iterations of F starting with the empty function. An alternative approach to partial recursive functionals (that

yields the same class as Kleene’s) is via recursive operators, as exposited for example in Cutland (1980), Ch. 10; it only presumes the notion of partial recursive function, independently of how that is defined.

Now the computable functionals F: T →T may be defined to be those partial

recursive functionals F whose value for each total function φ is a total function F(φ). (It is not enough to restrict a partial recursive functional to T, since its value on a total argument f may still be partial.) But there are several other ways of defining which are

the computable functionals F: T →T without appealing to the notion of partial recursive

functional. One is due to Grzegorczyk (1955) by means of a direct generalization of Kleene’s schemata for the general recursive functions using both primitive recursion and the least number operator μ. Grzegorczyk deals with F(φ)(x), where φ = φ 1 ,…,φj is a sequence (possibly empty) of total functions, and x is a sequence x 1 ,…,xk of numerical arguments with k ≥ 1. For simplicity, we shall write F(φ, x) for Gregorczyk’s F(φ)(x). These functionals reduce to functions of natural numbers F(x) when j = 0. A basic computable functional F taken in the schemata is that for application, i.e. F(φ, x) = φ(x). Then in addition to the primitive recursive schemata^6 relativized uniformly to function arguments φ, one has a scheme for the μ (minimum) operator formulated as follows. Suppose given computable F(φ, x, y) such that ∀φ, x ∃y [F(φ, x, y) = 0]; then the functional G defined by G(φ, x) = μy [F(φ, x, y) = 0] is computable. An equivalent definition of computable functionals from total functions to total functions has been given by Weirauch (2000) via uniform oracle Turing machines, called by him the Type-2 Theory of Effectivity (TTE). In my view, Kleene’s notion of partial recursive functional is the fundamental one, in that it specializes to Grzegorczyk’s (or Weirauch’s) in the following sense: if F is a partial recursive

functional F: P → P, and F|T, the restriction of F to T, maps T to T, then F|T is definable

by the Grzegorczyk schemata, as may easily be shown. 7 6 Actually, Grzegorczyk only assumes special consequences of primitive recursion from which the general primitive recursive schemata are inferred. (^7) One proof is as follows. Let E be a system of equations used to define F, and consider ψ = F(φ) for any total φ; by assumption, for each i there is a unique j and a derivation of

S-effective computability of functions on any closed interval I and on the full real line R. Slightly more general results with an alternative proof are given in Shepherdson (1976). Though the notions of P-effective computability are simpler than those of S-effective computability, Shepherdson remarks that insofar as actual computation is concerned, “the values are still given via approximating sequences [of rationals to reals]; this is inescapable.”

4. The view from generalized recursion theory (g. r. t.); two theories of computability on arbitrary structures. Beginning in the 1960s and continuing through the 1970s and beyond there was much work on generalizations of recursion theory to arbitrary structures. One of these generalizations was made by Harvey Friedman (1971) by adaptation of the register machine approach as explained next. 8 As will be seen below, this approach to computability over arbitrary structures considerably antedates and comprehends the BSS notions. By a (first-order) structure or algebra A is meant one of the form (1) A = (A, c 1 ,…,cj, f 1 ,…,fk, R 1 ,…,Rm), where A is a non-empty set, each ci is a member of A, each fi is a partial function of one or more arguments from A to A, and each Ri is a relation of one or more arguments on A.^9 For non-triviality, both k and m are not zero. The signature of A is given by the triple (j, k, m) and the arity of each fi and each Ri. Of special note is that the test for equality of elements of A is not assumed as one of the basic operations; rather, if equality is to be a basic test, that is to be included as one of the relations Ri. A finite algorithmic procedure (fap) π on A is given by a finite list of instructions I 1 , I 2 , …, It for some t, with I 1 being the initial instruction and It the terminal one. The machine has register names r 0 , r 1 , r 2 , …, though only a finite number are needed for any given computation, namely those mentioned in π; the register r 0 is reserved for the output. The ri may also be thought of as variables. The fap π may be used to calculate a partial n-ary function f on A n to A for any 8 Friedman also considered a variant approach using infinite tapes as in Turing machines and as in Blum (2004). (^9) Friedman allowed partial relations in a suitable sense.

n. Given an input (x 1 , …, xn), one enters xi into register ri, and proceeds to I 1. Each instruction other than It has one of the following four forms: (2) ra: = rb ra: = ci ra: = fi(rb1, …, rbj), for j-ary fi if Ri(rb1, …, rbj) then go to Iu else Iv, for j-ary Ri. In the first three cases, one goes to the next instruction after executing it. The computation terminates only if the third instruction is defined at each stage where it is called and if one eventually lands in It, at which point the contents of register r 0 is the value of f(x 1 , …, xn). An n-ary relation R is decidable by a fap π if its characteristic function is computable by π. The class of fap computable partial functions on A is denoted by FAP (A). For the structure N = ( N, 0, Sc, Pd, =), where N is the set of natural numbers and Sc and Pd are respectively the successor and predecessor operations (taking Pd(0) = 0), FAP (N) is equal to the class of partial recursive functions. For general structures A, Friedman (1971) also introduced the notion of finite algorithmic procedure with counting , in which certain registers are reserved for natural numbers and one can perform the operations and tests on the contents of those registers that go with the structure N. Then FAPC (A) is used to denote the partial functions on A computable by means of such procedures. The notion of finite algorithmic procedure is directly generalized to many-sorted structures (3) A = (A 1 ,…An, c 1 ,…,cj, f 1 ,…,fk, R 1 ,…,Rm), with the arity modified accordingly, while each register comes with a sort index limiting which elements can be admitted as its contents. In particular, FAPC (A) can be identified with FAP (A, N) where (A, N) denotes the structure A augmented by that for N. A further extension of Friedman’s notions was made by Moldestad et al. (1980a, 1980b), with stack registers which may contain finite sequences of elements of any one of the basic domains Ai, including the empty sequence. The basic operations for such a register are pop (remove the top element of a stack) and push (add the contents of one of the registers of type Ai). This leads to the notion of what is computable by finite algorithmic

treated as (possibly partial) functions into {t, f}, and branching on a relation is executed via the if…then…else command. The basic notion of computability for standard algebras is given by “while” schemata generated by the following rules (op. cit. p. 362) for procedure statements S: (7) S :: = skip|x: = t|S 1 ;S 2 |if b then S 1 else S 2 |while b do S, where ‘b’ is a Boolean term. The set of partial functions computable on A by means of these rules or schemata is denoted by While (A). Then to deal with computability with counting, Tucker and Zucker simply expand the algebra A to the algebra (A, N). To incorporate finite sequences for each domain Ai, they make a further expansion of that to A*. This leads to the following notions of computability over A: While N(A) and While (A), given simply by While (A, N) and While (A), respectively. The following result is stated in Tucker and Zucker (2000) p. 487 for any standard algebra A: (8) While (A) = FAP (A), While N(A) = FAPC (A), and While *(A) = FAPCS (A). In other words, we have a certain robustness of computability in the While * sense. Tucker and Zucker (1988) present a number of arguments in favor of a generalized Church-Turing thesis for computability, according to which the functions that effectively computable on a many-sorted algebra A in the informal sense are precisely the functions that are While * computable on A; see also Tucker and Zucker (2000) pp. 493ff for a briefer sketch of these arguments. So far, we are still dealing with essentially algebraic notions of computability. To extend the While approaches to notions of computability on the reals, it would seem that topological considerations must be brought to bear. That is done in a more general setting in Sec. 7 (pp. 451-478) of Tucker and Zucker (2000). It is more difficult to describe informally the several ways that is carried out loc. cit., so I shall simply give the names of the notions introduced there, with the hope that they at least indicate what is involved. First of all, the structures A = (A,…) dealt with are topological partial algebras , where the partiality essentially has to do with the Boolean-valued functions of equality and⎯in the case of R ⎯order; as total functions these are discontinuous, so one must replace them by partial functions which are undefined at (x, y) in A when x = y

and⎯in the case of R⎯when neither x < y nor y < x. If the other basic functions on A are taken to be continuous then so also are all the While * computable functions. That is then specialized to metric partial algebras which are used to explain effectively uniform While , resp. While *, and then approximable computability on A and effective Weierstrass approximable computability on A; these three notions are shown to be equivalent for suitable A (op. cit., p. 473). The Weierstrass notion is a generalization of Pour-El’s P-computability that was described above. When further specialized to functions on I to R , where I is a closed interval, they are further shown (op. cit., p. 474) to be equivalent to Grzegorczyk-Lacombe computability, i.e. S-effective computability described above. 10 Thus the notions of While and While * computability serve to subsume under a single framework the notions of computability in the BSS sense with those computable in the effective approximation sense. Another framework from g.r.t. that does not require direct appeal to topological notions for the two notions of computability on the real numbers is provided in the next section.

5. The higher type approach to computation on arbitrary structures. From the schematic point of view, computable functions are generated from given functions by explicit definition and by recursion, i.e. definition of a function in terms of itself. Abstractly, recursion is given by a functional equation, f = F(f), which determines a unique function f as the least fixed point (LFP) of F only if F is monotonic; moreover, the LFP of F is in general a partial function. (For reasons that will be seen below, we now use ‘f’, ‘g’, … for partial function arguments of functionals in place of ‘φ’, ‘ψ’, … as was done in sec. 3 above.) But then one has to ask where F comes from if it is not itself explicitly generated; that would require determining it as the LFP of a higher type operator G, and so on. This idea formed the underpinning of Richard Platek’s definition of computability over fairly arbitrary structures A in his famous (but regrettably never published) Stanford PhD dissertation, Platek (1966), in terms of a hierarchy of monotonic (^10) For continuations of this work on computation on metric partial algebras, see Tucker and Zucker (2004, 2005).

simply identified with an element of Aj. The arity of f is determined by a pair σ = (i, j) where i = (i 1 ,…iν) lists the sorts of the product domain. Given f of arity σ, x = (x 1 ,…,xν) of arity i , and y of sort j, we write f(x) ≃y when f(x)↓ (i.e. f(x) is defined) and the value of f(x) is y. Given f, g of arity (i, j) we write f ⊆ g if whenever f(x) ≃y then g(x) ≃y. We can now turn to the functionals (which may reduce to functions or individuals), for which we use the letters F, G, H,…. These have both a sequence f = (f 1 ,…,fμ) of partial function arguments of arities σ = (σ 1 ,…,σμ), and individual arguments x = (x 1 ,…xν) of arity i, and have values F(f, x) in a specified domain Aj when defined; the arity of such F is given by the triple (σ, i, j). We allow μ = 0, in which case F reduces to a partial function of arity (i, j); we further allow ν = 0 as above, in which case it reduces to an element of Aj when defined. Given f, g of arity σ, write f ⊆ g, if each f (^) ξ⊆ gξ; then F is said to be monotonic if whenever f ⊆ g and F(f, x) ≃y then F(g, x) ≃y. This is automatically the case when there are no function arguments. The basic assumption on the structure A above is that each Fk is monotonic for k = 0,…,m. We further assume that the basic boolean functions corresponding to conjunction and negation are among these. Suppose given monotonic G(g, w) with a single function argument g of arity σ = (i, j) where w is of arity i. Then for any g, the function λw.G(g, w) is again of arity σ. Let ΓG(g) = λw.G(g, w), in other words ΓG = λgλw.G(g, w). Then LFP(ΓG) is defined to be the unique function h such that (2) ΓG(h) = h, and if ΓG(g) = g then h ⊆g. We can now list the schemata for ACPs F, G, H… over A as follows: I. (Initial functionals) F(f, x) ≃ Fl(f, x) for l = 0,…,m II. (Identity functions) F(x) = x III. (Application functionals) F(f, x) ≃ f(x) IV. (Conditional definition) F(f, x, b) ≃[if b = t then G(f, x) else H(f, x)] V. (Structural) F(f, x) ≃ G(fρ, xτ) VI. (Individual substitution) F(f, x) ≃ G(f, x, H(f, x)) VII. (Function substitution) F(f, x) ≃ G(f, λu.H(f, x, u), x)

VIII. (Least fixed point) F(f, x, u) ≃ LFPλgλw.G(f, g, x, w). In IV of this list, ‘b’ is of boolean sort. In V, ρ: {1,…,μ′} → {1,…,μ}for some μ′ and fρ = (fρ(1),…fρ(μ)); similarly for τ and xτ. In all the other cases the arities are taken to be the appropriate ones. We denote by ACP (A) the set of all F of type levels 0, 1 and 2 generated from the initial F 0 ,…,Fm specified by A, and by ACP^1 (A) ( ACP^2 (A)) the subset consisting of the functions of type level 1 (functionals of type level 2) among these. As is easily seen, the reason the ACPs deserve to be called abstract procedures is that they are preserved under isomorphism. That they also deserve to be called computation procedures , at least in the case of N-standard structures A with arrays, is due to the result below of Xu and Zucker (2005) below. A structure A is N-standard if it is an expansion of the structure N = ( N , 0, Sc, Pd). An N-standard structure has arrays if with each basic domain Ai is associated the domain of all finite sequences from Ai, with the appropriate operations of length, term, expansion and restriction. Let ACP (A) denote the set of functions generated by the schemata I-VIII above. Xu and Tucker proved: (3) If A is an N-standard structure with arrays, then While* (A) = ACP 1 (A). We also have a matchup with the Moschovakis (1984) theory of algorithms by the result of Feferman (1992b) sec.9 that the ACPs are closed under simultaneous LFP recursion. 12 Since it was seen in the preceding section that the BSS machine model of computation on the real numbers (and on algebraic structures more generally) is subsumed under While* computability, to show that we have a generalization of both that and the effective approximation approach to computation on the reals, we specialize to the case of ACPs over the structure N, which by the usual coding, includes the associated structure with arrays. And for this, one simply comes down to showing that (4) ACP 2 (N) = the partial recursive functionals over the natural numbers. For it is easy to show that every partial recursive function is generated by the ACPs over N, from which one obtains all the partial recursive functionals in the guise of recursive (^12) See also Feferman (1996), Appendix A. Note also that Appendix C of that paper contains several corrections to Feferman (1992b).

f and g are extensionally equal. Now one proves inductively for this interpretation that each F in ACP^2 (N) preserves extensional equality and hence is an effective operator in the sense of Myhill and Shepherdson (1955), i.e. if f ≡ g then F(f) ≡ F(g). That is also used to show that we have closure in this interpretation under the LFP scheme, since by the Myhill-Shepherdson theorem, every effective operator is the restriction to the partial recursive functions of a partial recursive functional; for more details, see Feferman (1992b), secs. 10.4 and 11. In the end, when speaking about actual computation, we have intensionality throughout, since computers only work with finite symbolic representations of the objects being manipulated.

6. Explicit mathematics and the Bishop approach to constructive analysis. In 1967 Errett Bishop published his ground-breaking book, Foundations of Constructive Analysis. Bishop had for many years been a practicing analyst in the classical tradition to which he contributed important work on Banach spaces, operator algebras, function algebras and the theory of functions of several complex variables. In the mid-60s, while spending a year at the Miller Institute in U. C. Berkeley, Bishop had a radical change of mind about how mathematics ought to be developed. Namely he became convinced that it should be carried out constructively so that each theorem has “numerical meaning”, i.e. can in principle have a computational interpretation. But he found that the most sustained previous effort to redevelop mathematics constructively⎯in the work of L. E. J. Brouwer and his school of intuitionism⎯was very unsatisfactory “partly by extraneous peculiarities of Brouwer’s system which made it vague and even ridiculous to practising mathematicians, but chiefly by the failure of Brouwer and his followers to convince the mathematical public that abandonment of the idealistic [i.e., classical] viewpoint would not sterilize or cripple the development of mathematics.” (Bishop (1967) p. 2) In its place, Bishop explained a way of developing analysis constructively that could be readily understood by classical mathematicians and yet would be constructively meaningful at the same time. Where Brouwer depended in part on the rejection of classical logical reasoning as exemplified by use of the law of excluded middle to lead to existential conclusions for which one may not have a witness, Bishop depends in part on the systematic replacement of classical notions by related ones in which all witnessing

information is explicitly stated and carried along in proofs. Furthermore, Brouwer depended in his redevelopment of analysis on the use of the intuitive notion of “choice sequence”, which has no direct classical interpretation, and on principles concerning that notion which allowed him to prove such classically false statements as that every function on a closed interval of the real numbers is uniformly continuous. Bishop, by contrast, when dealing with functions on a closed interval [a, b], simply restricts himself to those f which are not only uniformly continuous, but carry with them a uniform modulus of convergence function, i.e. an effective function m: QQ such that for each rational ε > 0 we have m(ε) > 0 and for all x, y in [a, b], if |x – y| < m(ε) then |f(x) – f(y)| < ε. For Bishop, in effect, the objects with which one works are pairs (f, m) of functions satisfying this condition on given closed interval [a, b]. Every theorem in Bishop is also classically true; in practice it gives a constructive substitute for a classical theorem which is equivalent to the latter under the assumption of the law of excluded middle.^13 With such modifications, Bishop (1967) showed how substantial tracts of modern analysis could be developed in an informal style meeting everyday standards of rigor. Subsequently⎯in work with one of his students, Henry Cheng⎯Bishop and Cheng (1972) published an improved version of his theory of measure; a couple of years later, work on constructive probability theory was carried out by another student, Y.-K. Chan (1974). But despite the evidence of its success in carrying out a great deal of mathematics constructively without using strange notions or assumptions, Bishop’s approach did not have any major impact, though it did take hold in a small but steadily widening group. One of the first mathematicians outside of his immediate circle who was to take it up was Douglas S. Bridges, who made several contributions to constructive functional analysis in the mid 1970s leading up to the monograph Bridges (1979). Bishop then began a collaboration with Bridges to make substantial additions and improvements in his book that resulted in the volume, Constructive Analysis, Bishop and Bridges (1985); that appeared after Bishop’s life and career was brought to a premature close by his death due to cancer. There have been a number of further developments in (^13) According to Bishop, only the particular consequences of the law of excluded middle according to which for a function f: N → N either (∀n ∈ N ) f(n) = 0 or (∃n ∈ N ) f(n)≠0, (that he calls the Limited Principle of Omniscience) are needed for these equivalences.