aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Reals/RIneq.v
diff options
context:
space:
mode:
authorGravatar Guillaume Melquiond <guillaume.melquiond@inria.fr>2017-03-05 21:50:19 +0100
committerGravatar Maxime Dénès <mail@maximedenes.fr>2017-03-22 17:56:02 +0100
commit4e6fa17a3ef0b8d12cb8d55305f302338589ad1c (patch)
treeb6ed89f849f9423c9a2b3bee42bd8b9f5b176305 /theories/Reals/RIneq.v
parentd6ced637d9b7acabef2ccc9e761ec149bc7c93da (diff)
Make IZR a morphism for field.
There are now two field structures for R: one in RealField and one in RIneq. The first one is used to prove that IZR is a morphism which is needed to define the second one.
Diffstat (limited to 'theories/Reals/RIneq.v')
-rw-r--r--theories/Reals/RIneq.v25
1 files changed, 25 insertions, 0 deletions
diff --git a/theories/Reals/RIneq.v b/theories/Reals/RIneq.v
index 7cd4c00c7..dd2108159 100644
--- a/theories/Reals/RIneq.v
+++ b/theories/Reals/RIneq.v
@@ -2016,6 +2016,31 @@ Proof.
[ apply not_0_INR; discriminate | unfold INR; ring ].
Qed.
+Lemma R_rm : ring_morph
+ R0 R1 Rplus Rmult Rminus Ropp eq
+ 0%Z 1%Z Zplus Zmult Zminus Zopp Zeq_bool IZR.
+Proof.
+constructor ; try easy.
+exact plus_IZR.
+exact minus_IZR.
+exact mult_IZR.
+exact opp_IZR.
+intros x y H.
+apply f_equal.
+now apply Zeq_bool_eq.
+Qed.
+
+Lemma Zeq_bool_IZR x y :
+ IZR x = IZR y -> Zeq_bool x y = true.
+Proof.
+intros H.
+apply Zeq_is_eq_bool.
+now apply eq_IZR.
+Qed.
+
+Add Field RField : Rfield
+ (completeness Zeq_bool_IZR, morphism R_rm, constants [IZR_tac], power_tac R_power_theory [Rpow_tac]).
+
(*********************************************************)
(** ** Other rules about < and <= *)
(*********************************************************)