aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Reals/ArithProp.v
diff options
context:
space:
mode:
authorGravatar Guillaume Melquiond <guillaume.melquiond@inria.fr>2017-03-05 20:48:52 +0100
committerGravatar Maxime Dénès <mail@maximedenes.fr>2017-03-22 17:19:51 +0100
commita4a76c253474ac4ce523b70d0150ea5dcf546385 (patch)
treeebde19ff337a88fd8029ac5dc9eca03df1202367 /theories/Reals/ArithProp.v
parentddbc3839923731686a89a401d0f9dd44f3ad339b (diff)
Make IZR use a compact representation of integers.
That way, (IZR 5) is no longer reduced to 2 + 1 + 1 + 1 (which is not convertible to 5) but instead to 1 + 2 * 2 (which is). Moreover, it means that, after reduction, real constants no longer exponentially blow up. Note that I was not able to fix the test-suite for the declarative mode, so the missing proof terms have been admitted.
Diffstat (limited to 'theories/Reals/ArithProp.v')
-rw-r--r--theories/Reals/ArithProp.v4
1 files changed, 2 insertions, 2 deletions
diff --git a/theories/Reals/ArithProp.v b/theories/Reals/ArithProp.v
index 6fca9c8ad..7d9fff276 100644
--- a/theories/Reals/ArithProp.v
+++ b/theories/Reals/ArithProp.v
@@ -106,7 +106,7 @@ Proof.
split.
ring.
unfold k0; case (Rcase_abs y) as [Hlt|Hge].
- assert (H0 := archimed (x / - y)); rewrite <- Z_R_minus; simpl;
+ assert (H0 := archimed (x / - y)); rewrite <- Z_R_minus; change (IZR 1) with 1;
unfold Rminus.
replace (- ((1 + - IZR (up (x / - y))) * y)) with
((IZR (up (x / - y)) - 1) * y); [ idtac | ring ].
@@ -140,7 +140,7 @@ Proof.
rewrite <- Ropp_mult_distr_r_reverse; rewrite (Ropp_inv_permute _ H); elim H0;
unfold Rdiv; intros H1 _; exact H1.
apply Ropp_neq_0_compat; assumption.
- assert (H0 := archimed (x / y)); rewrite <- Z_R_minus; simpl;
+ assert (H0 := archimed (x / y)); rewrite <- Z_R_minus; change (IZR 1) with 1;
cut (0 < y).
intro; unfold Rminus;
replace (- ((IZR (up (x / y)) + -1) * y)) with ((1 - IZR (up (x / y))) * y);