aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Reals/Rtrigo_calc.v
diff options
context:
space:
mode:
authorGravatar desmettr <desmettr@85f007b7-540e-0410-9357-904b9bb8a0f7>2002-07-16 10:05:25 +0000
committerGravatar desmettr <desmettr@85f007b7-540e-0410-9357-904b9bb8a0f7>2002-07-16 10:05:25 +0000
commitbf014271e07872d855a6704f66981e108ae2e654 (patch)
tree0d09ba91742390a6e6385c428c019618c8510cf3 /theories/Reals/Rtrigo_calc.v
parent2b4201841c437ef86659eda7e1d1555eea39e626 (diff)
*** empty log message ***
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2883 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories/Reals/Rtrigo_calc.v')
-rw-r--r--theories/Reals/Rtrigo_calc.v170
1 files changed, 170 insertions, 0 deletions
diff --git a/theories/Reals/Rtrigo_calc.v b/theories/Reals/Rtrigo_calc.v
index 0bcb76d1f..af6c6d59e 100644
--- a/theories/Reals/Rtrigo_calc.v
+++ b/theories/Reals/Rtrigo_calc.v
@@ -15,6 +15,129 @@ Require Rlimit.
Require Rtrigo.
Require R_sqrt.
+Lemma tan_PI : ``(tan PI)==0``.
+Unfold tan; Rewrite -> sin_PI; Rewrite -> cos_PI.
+Unfold Rdiv; Apply Rmult_Ol.
+Qed.
+
+Lemma sin_3PI2 : ``(sin (3*(PI/2)))==(-1)``.
+Replace ``3*(PI/2)`` with ``PI+(PI/2)``.
+Rewrite -> sin_plus; Rewrite -> sin_PI; Rewrite -> cos_PI; Rewrite -> sin_PI2; Ring.
+Pattern 1 PI; Rewrite (double_var PI).
+Ring.
+Qed.
+
+Lemma tan_2PI : ``(tan (2*PI))==0``.
+Unfold tan; Rewrite sin_2PI; Unfold Rdiv; Apply Rmult_Ol.
+Qed.
+
+Lemma sin_cos_PI4 : ``(sin (PI/4)) == (cos (PI/4))``.
+Rewrite cos_sin.
+Replace ``PI/2+PI/4`` with ``-(PI/4)+PI``.
+Rewrite neg_sin; Rewrite sin_neg; Ring.
+Cut ``PI==PI/2+PI/2``; [Intro | Apply double_var].
+Pattern 2 3 PI; Rewrite H.
+Pattern 2 3 PI; Rewrite H.
+Unfold Rdiv; Cut ``2*2==4``.
+Intro; Rewrite Rmult_Rplus_distrl.
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_Rmult; [Rewrite H0; Ring | Apply aze | Apply aze].
+Ring.
+Qed.
+
+
+Lemma sin_PI3_cos_PI6 : ``(sin (PI/3))==(cos (PI/6))``.
+Replace ``PI/6`` with ``(PI/2)-(PI/3)``.
+Rewrite cos_shift; Reflexivity.
+Pattern 2 PI; Rewrite double_var.
+Cut ``PI == 3*(PI/3)``.
+Intro.
+Pattern 1 PI; Rewrite H.
+Unfold Rdiv.
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_Rmult.
+Unfold Rminus.
+Rewrite (Rmult_Rplus_distrl ``PI*/2`` ``PI*/2`` ``/3``).
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_Rmult.
+Rewrite (Rmult_sym ``2``).
+Replace ``3*2`` with ``6``.
+Rewrite Ropp_distr1.
+Ring.
+Ring.
+Apply aze.
+DiscrR.
+DiscrR.
+Apply aze.
+Unfold Rdiv.
+Rewrite (Rmult_sym ``3``).
+Rewrite Rmult_assoc.
+Rewrite <- Rinv_l_sym.
+Rewrite Rmult_1r; Reflexivity.
+DiscrR.
+Qed.
+
+Lemma sin_PI6_cos_PI3 : ``(cos (PI/3))==(sin (PI/6))``.
+Replace ``PI/6`` with ``(PI/2)-(PI/3)``.
+Rewrite sin_shift; Reflexivity.
+Pattern 2 PI; Rewrite double_var.
+Cut ``PI == 3*(PI/3)``.
+Intro.
+Pattern 1 PI; Rewrite H.
+Unfold Rdiv.
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_Rmult.
+Unfold Rminus.
+Rewrite (Rmult_Rplus_distrl ``PI*/2`` ``PI*/2`` ``/3``).
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_Rmult.
+Rewrite (Rmult_sym ``2``).
+Replace ``3*2`` with ``6``.
+Rewrite Ropp_distr1.
+Ring.
+Ring.
+Apply aze.
+DiscrR.
+DiscrR.
+DiscrR.
+Unfold Rdiv.
+Rewrite (Rmult_sym ``3``).
+Rewrite Rmult_assoc.
+Rewrite <- Rinv_l_sym.
+Rewrite Rmult_1r; Reflexivity.
+DiscrR.
+Qed.
+
+Lemma sin_PI6 : ``(sin (PI/6))==1/2``.
+Apply r_Rmult_mult with ``2*(cos (PI/6))``.
+Replace ``2*(cos (PI/6))*(sin (PI/6))`` with ``2*(sin (PI/6))*(cos (PI/6))``.
+Rewrite <- sin_2a; Replace ``2*(PI/6)`` with ``PI/3``.
+Rewrite sin_PI3_cos_PI6.
+Unfold Rdiv.
+Rewrite Rmult_1l.
+Rewrite Rmult_assoc.
+Rewrite (Rmult_sym ``2``).
+Rewrite Rmult_assoc.
+Rewrite <- Rinv_l_sym.
+Rewrite Rmult_1r; Reflexivity.
+Apply aze.
+Replace ``6`` with ``2*3``.
+Unfold Rdiv.
+Rewrite Rinv_Rmult.
+Rewrite (Rmult_sym ``/2``).
+Rewrite (Rmult_sym ``2``).
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_l_sym.
+Rewrite Rmult_1r.
+Reflexivity.
+Apply aze.
+Apply aze.
+DiscrR.
+Ring.
+Ring.
+Apply prod_neq_R0; [DiscrR | Cut ``0<(cos (PI/6))``; [Intro H1; Auto with real | Apply cos_gt_0; [Apply (Rlt_trans ``-(PI/2)`` ``0`` ``PI/6`` _PI2_RLT_0 PI6_RGT_0) | Apply PI6_RLT_PI2]]].
+Qed.
+
Lemma sqrt2_neq_0 : ~``(sqrt 2)==0``.
Generalize (Rlt_le ``0`` ``2`` Rgt_2_0); Intro H1; Red; Intro H2; Generalize (sqrt_eq_0 ``2`` H1 H2); Intro H; Absurd ``2==0``; [ DiscrR | Assumption].
Qed.
@@ -314,4 +437,51 @@ Qed.
Lemma sin_cos5PI4 : ``(cos (5*(PI/4)))==(sin (5*(PI/4)))``.
Rewrite cos_5PI4; Rewrite sin_5PI4; Reflexivity.
+Qed.
+
+(***************************************************************)
+(* Radian -> Degree | Degree -> Radian *)
+(***************************************************************)
+
+Definition plat : R := (IZR `180`).
+Definition toRad [x:R] : R := ``x*PI*/plat``.
+Definition toDeg [x:R] : R := ``x*plat*/PI``.
+
+Lemma rad_deg : (x:R) (toRad (toDeg x))==x.
+Intro x; Unfold toRad toDeg.
+Rewrite <- (Rmult_sym plat).
+Repeat Rewrite Rmult_assoc.
+Rewrite (Rmult_sym plat).
+Repeat Rewrite Rmult_assoc.
+Rewrite <- Rinv_l_sym.
+Rewrite Rmult_1r; Rewrite <- Rinv_l_sym.
+Apply Rmult_1r.
+Apply PI_neq0.
+Unfold plat.
+Apply not_O_IZR.
+Discriminate.
+Qed.
+
+Lemma toRad_inj : (x,y:R) (toRad x)==(toRad y) -> x==y.
+Intros; Unfold toRad in H; Apply r_Rmult_mult with PI.
+Rewrite <- (Rmult_sym x); Rewrite <- (Rmult_sym y).
+Apply r_Rmult_mult with ``/plat``.
+Rewrite <- (Rmult_sym ``x*PI``); Rewrite <- (Rmult_sym ``y*PI``); Assumption.
+Apply Rinv_neq_R0.
+Unfold plat.
+Apply not_O_IZR.
+Discriminate.
+Apply PI_neq0.
+Qed.
+
+Lemma deg_rad : (x:R) (toDeg (toRad x))==x.
+Intro x; Apply toRad_inj; Rewrite -> (rad_deg (toRad x)); Reflexivity.
+Qed.
+
+Definition sind [x:R] : R := (sin (toRad x)).
+Definition cosd [x:R] : R := (cos (toRad x)).
+Definition tand [x:R] : R := (tan (toRad x)).
+
+Lemma Rsqr_sin_cos_d_one : (x:R) ``(Rsqr (sind x))+(Rsqr (cosd x))==1``.
+Intro x; Unfold sind; Unfold cosd; Apply sin2_cos2.
Qed. \ No newline at end of file