If the Axiom of Countable Choice (ACC)


$$ \forall n\in \mathbb{N} . \exists x \in X . \varphi [n, x] \implies \exists f: \mathbb{N} \longrightarrow X . \forall n \in \mathbb{N} . \varphi [n, f(n)] $$


is not assumed in constructive mathematics, Dedekind and Cauchy real numbers are [not equivalent](https://mathoverflow.net/questions/128569/a-model-where-dedekind-reals-and-cauchy-reals-are-different) in general. Even [worse](http://arxiv.org/pdf/1510.00641v1.pdf), Dedekind real numbers might not even form a set. Besides that, Dedekind cuts are notoriously unpleasant in terms of actual computation which is one of the most attractive parts of constructive mathematics. However, see *Efficient Computation with Dedekind Reals* by [Bauer](http://math.andrej.com/wp-content/uploads/2008/08/abstract-cca2008.pdf).


If we think of a Cauchy real as an algorithm that contains a convergence modulus $M\_x: \mathbb{Z} \rightarrow \mathbb{N}$ and outputs rational approximations as:


$$ \left( x \in \mathbb{R} \right) \triangleq \left( \forall k \forall n,m \geq M\_x(k) . \big| x(n) - x(m) \big| \leq 2^{-k} \right), $$


we then have a straightforward and transparent framework for computations (see, for instance, [Schwichtenberg](http://www.mathematik.uni-muenchen.de/~schwicht/papers/uppsala05/uppsala05.pdf)). On the other hand, in presence of the ACC, program extraction from proofs may get [more difficult](https://math.stackexchange.com/a/1441281/90296). 


Dedekind reals are often used instead of Cauchy reals when ACC does not hold.


A Dedekind real is a defined as a pair $(L, U)$ of located sets of rational numbers satisfying:


1. $q \in L \iff \exists r.(q < r \land r \in L)$ and $q \in U \iff \exists r.(r < q \land r \in U)$
2. Both sets are inhabited: $\exists q. q \in L$ and $\exists q. q \in U$
3. Sets are disjoint: $ \neg (q \in U \land q \in L)$
4. (locatedness): $q < r \implies q \in L \lor r \in U$


**What is the actual computational content of a Dedekind real in comparison to a (straightforward) Cauchy real? Can an efficient algorithm be derived for every constructive Dedekind real that outputs rational approximations with predictable accuracy (cf. modulus of convergence)? If yes, what is the difference between Cauchy and Dedekind algorithms?**



Difference between constructive Dedekind and Cauchy reals in computation
In line with what is actually *asked* in the bold part of the question, I have taken the liberty of changing the title from *constructive mathematics* to *computation*. As it stood it was essentially a [duplicate of another one](https://mathoverflow.net/questions/128569/a-model-where-dedekind-reals-and-cauchy-reals-are-different), which already contains a lot about constructive but non-computational mathematics and so that would be the appropriate forum for further such discussion.


In fact Valery tagged the answer to the end of his first paragraph, namely @AndrejBauer's [*Efficient Computation with Dedekind Reals*](http://math.andrej.com/wp-content/uploads/2008/08/abstract-cca2008.pdf), which describes the ideas behind his [Marshall calculator](https://github.com/andrejbauer/marshall), whilst being based on our [*Dedekind Reals in Abstract Stone Duality*](http://paultaylor.eu/ASD/dedras) and my [*Lambda Calculus for Real Analysis*](http://paultaylor.eu/ASD/lamcra).


The setting for this answer is my [ASD programme](http://paultaylor.eu). I refuse to carry the baggage of obsolete programming languages (Turing Machines and Gödel Codings), any form of set theory (CZF, which I think is the setting for Lubarsky and Rathjen's paper, or even a topos) or the two bolted together (computable analysis in Weihrauch's TTE).


Valery's definition of a Dedekind cut is correct, but (to underline my rejection of *any* form of set theory) I write $\delta d$ and $\upsilon u$ for the down and up *predicates* instead of his $q\in L$ and $q\in U$ for lower and upper *sets*.


The predicate $\delta d$ says that (we so far know that) $d\lt x$ where $x$ is the real number being defined and similarly $\upsilon u$ means that (we so far know that) $x\lt u$.


Where this knowledge is incomplete, the pair $(\delta,\upsilon)$ satisfies all but the last axiom (locatedness) and is equivalent to an **interval**.


In particular, Dedekind cuts are two-sided. Taking the complement would amount to deducing knowledge or termination from ignorance or divergence.


There are plenty of examples of limiting processes that define "uncomputable" numbers that are best thought of as one-sided cuts. For example, the domain of definition of the solution of a differential equation is something that is only known from the inside; it is remarkable if we *can* obtain some knowledge from the outside, not that the boundary is "uncomputable" in this sense.


In the case where the cut defines a rational number, it should occur on *neither* side (Dedekind's choice was wrong here).


Defining the usual stuff in elementary real analysis is **much** easier and more natural using Dedekind cuts than with Cauchy sequences. Consider Riemann integration: $\delta d$ holds if there is some polygon (piecewise linear function) that lies below the curve and has area more than $d$; deducing the various properties from this is easy. This is gratuitously difficult if you insist in advance that the polygon have a particular shape of resolution $2^{-n}$ to make a Cauchy sequence.


The essential difference between a Dedekind cut and a Cauchy sequence as the representation of the solution of a mathematical problem is that Cauchy assumes that the problem has *already* been solved (to each degree of precision), whereas Dedekind merely combines all the formulae ("compiles" them into an "intermediate code", if you like), so that the problem *remains* to be solved.


This means that deriving a Cauchy sequence or decimal expansion from a Dedekind cut in general is just as difficult as solving a general real-valued mathematical problem. So I am under no illusion about the difficulty in implementing this proposal.


But it is a novel and so valuable way of looking at things.


The predicates define *open* subspaces of $\mathbb R$, so I would think that, in terms of recursion, they have to be $\Sigma^0\_1$ or recursively enumerable. (I have thought a little bit about "descriptive set theory" (a name that needs to be changed) but haven't got very far with it.)


These predicates $\delta$ and $\upsilon$ are in the language of ASD and you will need to read the papers that I have linked to find out the details.


In the first instance, such predicates are built from $f(\vec x)\lt g(\vec x)$, where $f$ and $g$ are polynomials, using $\land$, $\lor$, $\exists$, recusion over $\mathbb N$ and universal quantification over closed bounded intervals.


We are given that $\delta d$ and $\upsilon u$ hold for certain rationals $d$ and $u$ and want to find some $d\lt m\lt u$ that is nearer to the result and whether $\delta m$ or $\upsilon m$.


In the case of $f(\vec x)\lt g(\vec x)$ we can use the (formal, interval) derivatives of $f$ and $g$ and the Newton--Raphson algorithm to do this. As is well known, this algorithm *doubles* the number of bits of precision at each step. This would justify the claim that the computation is *efficient* if we can extend it to more general formulae.


For more complicated logical expressions, Andrej developed a method of approximating these expressions with simpler ones. See his paper for details of this. This is quite closely analogous to methods of approximating real-valued functions by low(er) degree polynomials that have a very long history but have been developed in interval computation by [Michal Konecny](http://www-users.aston.ac.uk/~konecnym/). Whilst Michal himself has used these computationally, they have not yet been incorporated into Andrej's calculator, but I hope that this will be done in future.


Computations like this with so-called "exact real arithmetic" are necessarily non-deterministic with regard to the Cauchy sequences tat they produce, which means that the existence of the completed sequence necessarily relies on Dependent Choice. This is entirely natural from a computational point of view and I don't see what use there is in discussing it as an issue of constructivity.


