In mathematics and computer science, computable analysis is the study of mathematical analysis from the perspective of computability theory. It is concerned with the parts of real analysis and functional analysis that can be carried out in a computable manner. The field is closely related to constructive analysis and numerical analysis.
A notable result is that integration (in the sense of the Riemann integral) is computable.[1] This might be considered surprising as an integral is (loosely speaking) an infinite sum. While this result could be explained by the fact that every computable function from
[0,1]
R
The above motivating results have no counterpart in Bishop's constructive analysis. Instead, it is the stronger form of constructive analysis developed by Brouwer that provides a counterpart in constructive logic.
A popular model for doing computable analysis is Turing machines. The tape configuration and interpretation of mathematical structures are described as follows.
A Type 2 Turing machine is a Turing machine with three tapes: An input tape, which is read-only; a working tape, which can be written to and read from; and, notably, an output tape, which is "append-only".
In this context, real numbers are represented as arbitrary infinite sequences of symbols. These sequences could for instance represent the digits of a real number. Such sequences need not be computable — this freedom is both an important one and philosophically unproblematic.[2] Note that the programs that act on these sequences do need to be computable in a reasonable sense.
In the case of real numbers, the usual decimal or binary representations are not appropriate. Instead a signed digit representation first suggested by Brouwer often gets used: The number system is base 2, but the digits are
\overline1
-1
1/2
0.1
1.\overline1
To understand why decimal notation is inappropriate, consider the problem of computing
z=x+y
x=0.(3)
y=0.(6)
z
z
0.(9)
1.(0)
n
x
1
z
n+1
x
z
0.(9)
z
As well as signed digits, there are analogues of Cauchy sequences and Dedekind cuts that could in principle be used instead.
Computable functions are represented as programs on a Type 2 Turing machine. A program is considered total (in the sense of a total function as opposed to partial function) if it takes finite time to write any number of symbols on the output tape regardless of the input. A total program runs forever, generating increasingly more digits of the output.
Results about computability associated with infinite sets often involve namings, which are maps between those sets and recursive representations of subsets thereof. A naming on a set gives rise to a topology over that set, as elaborated upon below.
Type 1 computability is the naive form of computable analysis in which one restricts the inputs to a machine to be computable numbers instead of arbitrary real numbers.
The difference between the two models lies in the fact that a program that is well-behaved over computable numbers (in the sense of being total) is not necessarily well-behaved over arbitrary real numbers. For instance, there are computable functions over the computable real numbers that map some bounded closed intervals to unbounded open intervals.[3] These functions cannot be extended to arbitrary real numbers (without making them partial), as all computable functions
R\toR
In the event that one is unhappy with using Turing machines (on the grounds that they are low level and somewhat arbitrary), there is a realisability topos called the Kleene–Vesley topos in which one can reduce computable analysis to constructive analysis. This constructive analysis includes everything that is valid in the Brouwer school, and not just the Bishop school.[4] Additionally, a theorem in this school of constructive analysis is that not all real numbers are computable, which is constructively non-equivalent to there exist uncomputable numbers. This school of constructive analysis is therefore in direct contradiction to schools of constructive analysis — such as Markov's — which claim that all functions are computable. It ultimately shows that while constructive existence implies computability, it is in fact unproblematic — even useful — to assert that not every function is computable.
One of the basic results of computable analysis is that every computable function from
R
R
S
R
\forallS
P
S
P
[0,1]
The analogy suggests that general topology and computability are nearly mirror images of each other. The analogy has been made rigorous in the case of locally compact spaces.[7] This has resulted in the creation of sub-areas of general topology like domain theory which study topological spaces very unlike the Hausdorff spaces studied by most people in mathematical analysis — these spaces become natural under the analogy.