diff options
| author | letouzey | 2011-05-05 15:12:15 +0000 |
|---|---|---|
| committer | letouzey | 2011-05-05 15:12:15 +0000 |
| commit | c0a3544d6351e19c695951796bcee838671d1098 (patch) | |
| tree | d87f69afd73340492ac694b2aa837024a90e8692 /plugins/setoid_ring/Ring2_initial.v | |
| parent | f61a557fbbdb89a4c24a8050a67252c3ecda6ea7 (diff) | |
Modularization of BinPos + fixes in Stdlib
BinPos now contain a sub-module Pos, in which are placed functions
like add (ex-Pplus), mul (ex-Pmult), ... and properties like
add_comm, add_assoc, ...
In addition to the name changes, the organisation is changed quite
a lot, to try to take advantage more of the orders < and <= instead
of speaking only of the comparison function.
The main source of incompatibilities in scripts concerns this compare:
Pos.compare is now a binary operation, expressed in terms of the
ex-Pcompare which is ternary (expecting an initial comparision as 3rd arg),
this ternary version being called now Pos.compare_cont. As for everything
else, compatibility notations (only parsing) are provided. But notations
"_ ?= _" on positive will have to be edited, since they now point to
Pos.compare.
We also make the sub-module Pos to be directly an OrderedType,
and include results about min and max.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14098 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'plugins/setoid_ring/Ring2_initial.v')
| -rw-r--r-- | plugins/setoid_ring/Ring2_initial.v | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/plugins/setoid_ring/Ring2_initial.v b/plugins/setoid_ring/Ring2_initial.v index 38a300f714..f94ad9b0f5 100644 --- a/plugins/setoid_ring/Ring2_initial.v +++ b/plugins/setoid_ring/Ring2_initial.v @@ -147,7 +147,7 @@ Ltac rsimpl := simpl; set_ring_notations. Lemma gen_phiZ1_add_pos_neg : forall x y, gen_phiZ1 - match (x ?= y)%positive Eq with + match (x ?= y)%positive with | Eq => Z0 | Lt => Zneg (y - x) | Gt => Zpos (x - y) @@ -155,12 +155,11 @@ Ltac rsimpl := simpl; set_ring_notations. == gen_phiPOS1 x + -gen_phiPOS1 y. Proof. intros x y. - assert (H:= (Pcompare_Eq_eq x y)); assert (H0 := Pminus_mask_Gt x y). - generalize (Pminus_mask_Gt y x). - replace Eq with (CompOpp Eq);[intro H1;simpl|trivial]. - rewrite <- Pcompare_antisym in H1. - destruct ((x ?= y)%positive Eq). - ring_rewrite H;trivial. ring_rewrite ring_opp_def;gen_reflexivity. + assert (H0 := Pminus_mask_Gt x y). unfold Pos.gt in H0. + assert (H1 := Pminus_mask_Gt y x). unfold Pos.gt in H1. + rewrite Pos.compare_antisym in H1. + destruct (Pos.compare_spec x y) as [H|H|H]. + subst. ring_rewrite ring_opp_def;gen_reflexivity. destruct H1 as [h [Heq1 [Heq2 Hor]]];trivial. unfold Pminus; ring_rewrite Heq1;rewrite <- Heq2. ring_rewrite ARgen_phiPOS_add;simpl;norm. @@ -183,7 +182,7 @@ Ltac rsimpl := simpl; set_ring_notations. apply ARgen_phiPOS_add. apply gen_phiZ1_add_pos_neg. replace Eq with (CompOpp Eq);trivial. - rewrite <- Pcompare_antisym;simpl. + rewrite Pos.compare_antisym;simpl. ring_rewrite match_compOpp. ring_rewrite ring_add_comm. apply gen_phiZ1_add_pos_neg. |
