From 464def74f4f0ea69029adf5cb6ef51d57faaec3b Mon Sep 17 00:00:00 2001 From: desmettr Date: Wed, 5 Dec 2001 15:02:47 +0000 Subject: *** empty log message *** git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2270 85f007b7-540e-0410-9357-904b9bb8a0f7 --- theories/Reals/R_sqr.v | 4 ++++ theories/Reals/Rbase.v | 27 +++++++++++++++++++++++++++ theories/Reals/Rlimit.v | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) diff --git a/theories/Reals/R_sqr.v b/theories/Reals/R_sqr.v index 39cca741c4..19ac6d97b6 100644 --- a/theories/Reals/R_sqr.v +++ b/theories/Reals/R_sqr.v @@ -37,6 +37,10 @@ Lemma Rsqr_gt_0_0 : (x:R) ``0<(Rsqr x)`` -> ~``x==0``. Intros; Red; Intro; Rewrite H0 in H; Rewrite Rsqr_O in H; Elim (Rlt_antirefl ``0`` H). Save. +Lemma Rsqr_pos_lt : (x:R) ~(x==R0)->``0<(Rsqr x)``. +Intros; Case (total_order R0 x); Intro; [Unfold Rsqr; Apply Rmult_lt_pos; Assumption | Elim H0; Intro; [Elim H; Symmetry; Exact H1 | Rewrite Rsqr_neg; Generalize (Rlt_Ropp x ``0`` H1); Rewrite Ropp_O; Intro; Unfold Rsqr; Apply Rmult_lt_pos; Assumption]]. +Save. + Lemma Rsqr_div : (x,y:R) ~``y==0`` -> ``(Rsqr (x/y))==(Rsqr x)/(Rsqr y)``. Intros; Unfold Rsqr; Field; Repeat Apply prod_neq_R0; Assumption. Save. diff --git a/theories/Reals/Rbase.v b/theories/Reals/Rbase.v index 78e0876a02..45e03ca7aa 100644 --- a/theories/Reals/Rbase.v +++ b/theories/Reals/Rbase.v @@ -1581,4 +1581,31 @@ end. Theorem INR_eq_INR2 : (n:nat) (INR n)==(INR2 n). Induction n; [Unfold INR INR2; Reflexivity | Intros; Unfold INR INR2; Fold INR INR2; Rewrite H; Case n0; [Reflexivity | Intros; Ring]]. +Save. + +(*****************************************************) +(* Some properties of Rmin and Rmax *) +(*****************************************************) +Lemma Rmin_l : (x,y:R) ``(Rmin x y)<=x``. +Intros; Unfold Rmin; Case (total_order_Rle x y); Intro H1; [Right; Reflexivity | Auto with real]. +Save. + +Lemma Rmin_r : (x,y:R) ``(Rmin x y)<=y``. +Intros; Unfold Rmin; Case (total_order_Rle x y); Intro H1; [Assumption | Auto with real]. +Save. + +Lemma Rmin_stable_in_posreal : (x,y:posreal) ``0<(Rmin x y)``. +Intros; Apply Rmin_Rgt_r; Split; [Apply (cond_pos x) | Apply (cond_pos y)]. +Save. + +Lemma Rmax_l : (x,y:R) ``x<=(Rmax x y)``. +Intros; Unfold Rmax; Case (total_order_Rle x y); Intro H1; [Assumption | Right; Reflexivity]. +Save. + +Lemma Rmax_r : (x,y:R) ``y<=(Rmax x y)``. +Intros; Unfold Rmax; Case (total_order_Rle x y); Intro H1; [Right; Reflexivity | Auto with real]. +Save. + +Lemma Rmax_stable_in_negreal : (x,y:negreal) ``(Rmax x y)<0``. +Intros; Unfold Rmax; Case (total_order_Rle x y); Intro; [Apply (cond_neg y) | Apply (cond_neg x)]. Save. \ No newline at end of file diff --git a/theories/Reals/Rlimit.v b/theories/Reals/Rlimit.v index 3ebeccfdd9..974c411dc2 100644 --- a/theories/Reals/Rlimit.v +++ b/theories/Reals/Rlimit.v @@ -581,3 +581,52 @@ Unfold limit1_in;Unfold limit_in;Simpl;Intros; Intro;Exact (H2 (f x2) (conj (Dg (f x2)) (Rlt (R_dist (f x2) l) x) H6 H7)). Save. + +(*********) +Lemma limit_inv : (f:R->R)(D:R->Prop)(l:R)(x0:R) (limit1_in f D l x0)->~(l==R0)->(limit1_in [x:R](Rinv (f x)) D (Rinv l) x0). +Unfold limit1_in; Unfold limit_in; Simpl; Unfold R_dist; Intros; Elim (H ``(Rabsolu l)/2``). +Intros delta1 H2; Elim (H ``eps*((Rsqr l)/2)``). +Intros delta2 H3; Elim H2; Elim H3; Intros; Exists (Rmin delta1 delta2); Split. +Unfold Rmin; Case (total_order_Rle delta1 delta2); Intro; Assumption. +Intro; Generalize (H5 x); Clear H5; Intro H5; Generalize (H7 x); Clear H7; Intro H7; Intro H10; Elim H10; Intros; Cut (D x)/\``(Rabsolu (x-x0))