(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* ``(Rabsolu ((sqrt (1+h))-1))<=(Rabsolu h)``. Intros; Cut ``0<=1+h``. Intro; Apply Rle_trans with ``(Rabsolu ((sqrt (Rsqr (1+h)))-1))``. Case (total_order_T h R0); Intro. Elim s; Intro. Repeat Rewrite Rabsolu_left. Unfold Rminus; Do 2 Rewrite <- (Rplus_sym ``-1``). Do 2 Rewrite Ropp_distr1;Rewrite Ropp_Ropp; Apply Rle_compatibility. Apply Rle_Ropp1; Apply sqrt_le_1. Apply pos_Rsqr. Apply H0. Pattern 2 ``1+h``; Rewrite <- Rmult_1r; Unfold Rsqr; Apply Rle_monotony. Apply H0. Pattern 2 R1; Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Assumption. Apply Rlt_anti_compatibility with R1; Rewrite Rplus_Or; Rewrite Rplus_sym; Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or. Pattern 2 R1; Rewrite <- sqrt_1; Apply sqrt_lt_1. Apply pos_Rsqr. Left; Apply Rlt_R0_R1. Pattern 2 R1; Rewrite <- Rsqr_1; Apply Rsqr_incrst_1. Pattern 2 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility; Assumption. Apply H0. Left; Apply Rlt_R0_R1. Apply Rlt_anti_compatibility with R1; Rewrite Rplus_Or; Rewrite Rplus_sym; Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or. Pattern 2 R1; Rewrite <- sqrt_1; Apply sqrt_lt_1. Apply H0. Left; Apply Rlt_R0_R1. Pattern 2 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility; Assumption. Rewrite b; Rewrite Rplus_Or; Rewrite Rsqr_1; Rewrite sqrt_1; Right; Reflexivity. Repeat Rewrite Rabsolu_right. Unfold Rminus; Do 2 Rewrite <- (Rplus_sym ``-1``); Apply Rle_compatibility. Apply sqrt_le_1. Apply H0. Apply pos_Rsqr. Pattern 1 ``1+h``; Rewrite <- Rmult_1r; Unfold Rsqr; Apply Rle_monotony. Apply H0. Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Assumption. Apply Rle_sym1; Apply Rle_anti_compatibility with R1. Rewrite Rplus_Or; Rewrite Rplus_sym; Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or. Pattern 1 R1; Rewrite <- sqrt_1; Apply sqrt_le_1. Left; Apply Rlt_R0_R1. Apply pos_Rsqr. Pattern 1 R1; Rewrite <- Rsqr_1; Apply Rsqr_incr_1. Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rle_compatibility; Left; Assumption. Left; Apply Rlt_R0_R1. Apply H0. Apply Rle_sym1; Left; Apply Rlt_anti_compatibility with R1. Rewrite Rplus_Or; Rewrite Rplus_sym; Unfold Rminus; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_l; Rewrite Rplus_Or. Pattern 1 R1; Rewrite <- sqrt_1; Apply sqrt_lt_1. Left; Apply Rlt_R0_R1. Apply H0. Pattern 1 R1; Rewrite <- Rplus_Or; Apply Rlt_compatibility; Assumption. Rewrite sqrt_Rsqr. Replace ``(1+h)-1`` with h; [Right; Reflexivity | Ring]. Apply H0. Case (total_order_T h R0); Intro. Elim s; Intro. Rewrite (Rabsolu_left h a) in H. Apply Rle_anti_compatibility with ``-h``. Rewrite Rplus_Or; Rewrite Rplus_sym; Rewrite Rplus_assoc; Rewrite Rplus_Ropp_r; Rewrite Rplus_Or; Exact H. Left; Rewrite b; Rewrite Rplus_Or; Apply Rlt_R0_R1. Left; Apply gt0_plus_gt0_is_gt0. Apply Rlt_R0_R1. Apply r. Qed. (* sqrt is continuous in 1 *) Lemma sqrt_continuity_pt_R1 : (continuity_pt sqrt R1). Unfold continuity_pt; Unfold continue_in; Unfold limit1_in; Unfold limit_in; Unfold dist; Simpl; Unfold R_dist; Intros. Pose alpha := (Rmin eps R1). Exists alpha; Intros. Split. Unfold alpha; Unfold Rmin; Case (total_order_Rle eps R1); Intro. Assumption. Apply Rlt_R0_R1. Intros; Elim H0; Intros. Rewrite sqrt_1; Replace x with ``1+(x-1)``; [Idtac | Ring]; Apply Rle_lt_trans with ``(Rabsolu (x-1))``. Apply sqrt_var_maj. Apply Rle_trans with alpha. Left; Apply H2. Unfold alpha; Apply Rmin_r. Apply Rlt_le_trans with alpha; [Apply H2 | Unfold alpha; Apply Rmin_l]. Qed. (* sqrt is continuous forall x>0 *) Lemma sqrt_continuity_pt : (x:R) ``0 (continuity_pt sqrt x). Intros; Generalize sqrt_continuity_pt_R1. Unfold continuity_pt; Unfold continue_in; Unfold limit1_in; Unfold limit_in; Unfold dist; Simpl; Unfold R_dist; Intros. Cut ``00 *) Lemma derivable_pt_lim_sqrt : (x:R) ``0 (derivable_pt_lim sqrt x ``/(2*(sqrt x))``). Intros; Pose g := [h:R]``(sqrt x)+(sqrt (x+h))``. Cut (continuity_pt g R0). Intro; Cut ``(g 0)<>0``. Intro; Assert H2 := (continuity_pt_inv g R0 H0 H1). Unfold derivable_pt_lim; Intros; Unfold continuity_pt in H2; Unfold continue_in in H2; Unfold limit1_in in H2; Unfold limit_in in H2; Simpl in H2; Unfold R_dist in H2. Elim (H2 eps H3); Intros alpha H4. Elim H4; Intros. Pose alpha1 := (Rmin alpha x). Cut ``0 (derivable_pt sqrt x). Unfold derivable_pt; Intros. Apply Specif.existT with ``/(2*(sqrt x))``. Apply derivable_pt_lim_sqrt; Assumption. Qed. (**********) Lemma derive_pt_sqrt : (x:R;pr:``0=0 *) (* Remark : by definition of sqrt (as extension of Rsqrt on |R), *) (* we could also show that sqrt is continuous for all x *) Lemma continuity_pt_sqrt : (x:R) ``0<=x`` -> (continuity_pt sqrt x). Intros; Case (total_order R0 x); Intro. Apply (sqrt_continuity_pt x H0). Elim H0; Intro. Unfold continuity_pt; Unfold continue_in; Unfold limit1_in; Unfold limit_in; Simpl; Unfold R_dist; Intros. Exists (Rsqr eps); Intros. Split. Change ``0<(Rsqr eps)``; Apply Rsqr_pos_lt. Red; Intro; Rewrite H3 in H2; Elim (Rlt_antirefl ? H2). Intros; Elim H3; Intros. Rewrite <- H1; Rewrite sqrt_0; Unfold Rminus; Rewrite Ropp_O; Rewrite Rplus_Or; Rewrite <- H1 in H5; Unfold Rminus in H5; Rewrite Ropp_O in H5; Rewrite Rplus_Or in H5. Case (case_Rabsolu x0); Intro. Unfold sqrt; Case (case_Rabsolu x0); Intro. Rewrite Rabsolu_R0; Apply H2. Assert H6 := (Rle_sym2 ? ? r0); Elim (Rlt_antirefl ? (Rle_lt_trans ? ? ? H6 r)). Rewrite Rabsolu_right. Apply Rsqr_incrst_0. Rewrite Rsqr_sqrt. Rewrite (Rabsolu_right x0 r) in H5; Apply H5. Apply Rle_sym2; Exact r. Apply sqrt_positivity; Apply Rle_sym2; Exact r. Left; Exact H2. Apply Rle_sym1; Apply sqrt_positivity; Apply Rle_sym2; Exact r. Elim (Rlt_antirefl ? (Rlt_le_trans ? ? ? H1 H)). Qed.