aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorVincent Semeria2019-06-27 23:35:03 +0200
committerVincent Semeria2019-07-16 18:45:34 +0200
commiteebc676ce4978b7e408c427889bae356d8b0efdc (patch)
tree2bc6228c80817026d4e2108e871867fc50a86fa2 /doc
parent3bd2722fb53552f45a25e6bc0a03a9ab0517485f (diff)
Define constructive real numbers as Cauchy sequences of rational numbers. Redefine classical real numbers as a quotient of those constructive real numbers.
Diffstat (limited to 'doc')
-rw-r--r--doc/changelog/10-standard-library/10445-constructive-reals.rst30
-rw-r--r--doc/stdlib/index-list.html.template3
2 files changed, 33 insertions, 0 deletions
diff --git a/doc/changelog/10-standard-library/10445-constructive-reals.rst b/doc/changelog/10-standard-library/10445-constructive-reals.rst
new file mode 100644
index 0000000000..dc5c97f895
--- /dev/null
+++ b/doc/changelog/10-standard-library/10445-constructive-reals.rst
@@ -0,0 +1,30 @@
+- New module `Reals.ConstructiveCauchyReals` defines constructive real numbers
+ by Cauchy sequences of rational numbers. Classical real numbers are now defined
+ as a quotient of these constructive real numbers, which significantly reduces
+ the number of axioms needed (see `Reals.Rdefinitions` and `Reals.Raxioms`),
+ while preserving backward compatibility.
+
+ Futhermore, the new axioms for classical real numbers include the limited
+ principle of omniscience (`sig_forall_dec`), which is a logical principle
+ instead of an ad hoc property of the real numbers. In a future pull request
+ we propose to deduce the other axiom, `completeness`, from the logical
+ principle `sig_not_dec` (see `Reals.Rlogic`), which is the excluded middle
+ of negations in sort `Type`.
+
+ If we want the axioms to be completely logical, we could also replace the
+ quotient axioms by functional extensionality, which gives the correct
+ equality to the equivalences classes represented as `bool`-valued functions
+ (also using Hedberg to get the unicity of proofs that those functions
+ are indeed equivalence classes). However that last part is not
+ completely backward compatible : it assumes funext, which is more
+ powerful than ad hoc quotient axioms.
+
+ Future work includes the development of constructive analysis, by
+ moving the constructive lemmas in new modules (see `Reals.RIneq_constr`),
+ and by interfacing tighter with libraries C-CoRN and math-classes.
+ Since the constructive definitions are weaker, this will require
+ to adapt the definitions in some places. We also need to work on
+ efficient extractions of constructive real numbers, so that we can
+ compute them in practice.
+
+ See `#10445 <https://github.com/coq/coq/pull/10445>`_, by Vincent Semeria.
diff --git a/doc/stdlib/index-list.html.template b/doc/stdlib/index-list.html.template
index a561de1d0c..eb7c982d49 100644
--- a/doc/stdlib/index-list.html.template
+++ b/doc/stdlib/index-list.html.template
@@ -516,7 +516,9 @@ through the <tt>Require Import</tt> command.</p>
</dt>
<dd>
theories/Reals/Rdefinitions.v
+ theories/Reals/ConstructiveCauchyReals.v
theories/Reals/Raxioms.v
+ theories/Reals/RIneq_constr.v
theories/Reals/RIneq.v
theories/Reals/DiscrR.v
theories/Reals/ROrderedType.v
@@ -561,6 +563,7 @@ through the <tt>Require Import</tt> command.</p>
theories/Reals/Ranalysis5.v
theories/Reals/Ranalysis_reg.v
theories/Reals/Rcomplete.v
+ theories/Reals/Rcomplete_constr.v
theories/Reals/RiemannInt.v
theories/Reals/RiemannInt_SF.v
theories/Reals/Rpow_def.v