(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* ``0 ``0 (IZR z1)==(IZR z2). Intros; Rewrite H; Reflexivity. Qed. Lemma IZR_neq : (z1,z2:Z) `z1<>z2` -> ``(IZR z1)<>(IZR z2)``. Intros; Red; Intro; Elim H; Apply eq_IZR; Assumption. Qed. Tactic Definition DiscrR := Try Match Context With | [ |- ~(?1==?2) ] -> Replace ``2`` with (IZR `2`); [Replace R1 with (IZR `1`); [Replace R0 with (IZR `0`); [Repeat Rewrite <- plus_IZR Orelse Rewrite <- mult_IZR Orelse Rewrite <- Ropp_Ropp_IZR Orelse Rewrite Z_R_minus; Apply IZR_neq; Try Discriminate | Reflexivity] | Reflexivity] | Reflexivity]. Recursive Tactic Definition Sup0 := Match Context With | [ |- ``0<1`` ] -> Apply Rlt_R0_R1 | [ |- ``0 Repeat (Apply Rmult_lt_pos Orelse Apply Rplus_lt_pos; Try Apply Rlt_R0_R1 Orelse Apply Rlt_R0_R2) | [ |- ``?1>0`` ] -> Change ``0 Change ``?2 Sup0 | [ |- (Rlt (Ropp ?1) R0) ] -> Rewrite <- Ropp_O; Sup | [ |- (Rlt (Ropp ?1) (Ropp ?2)) ] -> Apply Rlt_Ropp; Sup | [ |- (Rlt (Ropp ?1) ?2) ] -> Apply Rlt_trans with ``0``; Sup | [ |- (Rlt ?1 ?2) ] -> SupOmega | _ -> Idtac. Tactic Definition RCompute := Replace ``2`` with (IZR `2`); [Replace R1 with (IZR `1`); [Replace R0 with (IZR `0`); [Repeat Rewrite <- plus_IZR Orelse Rewrite <- mult_IZR Orelse Rewrite <- Ropp_Ropp_IZR Orelse Rewrite Z_R_minus; Apply IZR_eq; Try Reflexivity | Reflexivity] | Reflexivity] | Reflexivity].