1
<html xmlns="http://www.w3.org/1999/xhtml">
3
<meta http-equiv="Content-Type" content="text/html; charset="><link rel="stylesheet" href="style.css" type="text/css"><title>Coq.Reals.Rtrigo_calc</title>
8
<h1>Library Coq.Reals.Rtrigo_calc</h1>
11
<code class="keyword">Require</code> <code class="keyword">Import</code> Rbase.<br/>
12
<code class="keyword">Require</code> <code class="keyword">Import</code> Rfunctions.<br/>
13
<code class="keyword">Require</code> <code class="keyword">Import</code> SeqSeries.<br/>
14
<code class="keyword">Require</code> <code class="keyword">Import</code> Rtrigo.<br/>
15
<code class="keyword">Require</code> <code class="keyword">Import</code> R_sqrt.<br/>
16
Open <code class="keyword">Local</code> Scope R_scope.<br/>
19
<code class="keyword">Lemma</code> <a name="tan_PI"></a>tan_PI : <a href="Coq.Reals.Rtrigo.html#tan">tan</a> <a href="Coq.Reals.AltSeries.html#PI">PI</a> = 0.<br/>
20
unfold tan in |- *; rewrite <a href="Coq.Reals.Rtrigo.html#sin_PI">sin_PI</a>; rewrite <a href="Coq.Reals.Rtrigo.html#cos_PI">cos_PI</a>; unfold Rdiv in |- *;<br/>
21
apply <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>. <br/>
22
<code class="keyword">Qed</code>.<br/>
25
<code class="keyword">Lemma</code> <a name="sin_3PI2"></a>sin_3PI2 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)) = -1.<br/>
26
replace (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> + <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2).<br/>
27
rewrite <a href="Coq.Reals.Rtrigo.html#sin_plus">sin_plus</a>; rewrite <a href="Coq.Reals.Rtrigo.html#sin_PI">sin_PI</a>; rewrite <a href="Coq.Reals.Rtrigo.html#cos_PI">cos_PI</a>; rewrite <a href="Coq.Reals.Rtrigo.html#sin_PI2">sin_PI2</a>; ring.<br/>
28
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 1 in |- *; rewrite (<a href="Coq.Reals.RIneq.html#double_var">double_var</a> <a href="Coq.Reals.AltSeries.html#PI">PI</a>); ring.<br/>
29
<code class="keyword">Qed</code>.<br/>
32
<code class="keyword">Lemma</code> <a name="tan_2PI"></a>tan_2PI : <a href="Coq.Reals.Rtrigo.html#tan">tan</a> (2 * <a href="Coq.Reals.AltSeries.html#PI">PI</a>) = 0.<br/>
33
unfold tan in |- *; rewrite <a href="Coq.Reals.Rtrigo.html#sin_2PI">sin_2PI</a>; unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>.<br/>
34
<code class="keyword">Qed</code>.<br/>
37
<code class="keyword">Lemma</code> <a name="sin_cos_PI4"></a>sin_cos_PI4 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) = <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4).<br/>
38
<code class="keyword">Proof</code> with trivial.<br/>
39
rewrite <a href="Coq.Reals.Rtrigo.html#cos_sin">cos_sin</a>...<br/>
40
replace (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 + <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) with (- (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) + <a href="Coq.Reals.AltSeries.html#PI">PI</a>)...<br/>
41
rewrite <a href="Coq.Reals.Rtrigo.html#neg_sin">neg_sin</a>; rewrite <a href="Coq.Reals.Rtrigo.html#sin_neg">sin_neg</a>; ring...<br/>
42
cut (<a href="Coq.Reals.AltSeries.html#PI">PI</a> = <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 + <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2); [ intro | apply double_var ]...<br/>
43
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 3 in |- *; rewrite H; pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 3 in |- *; rewrite H...<br/>
44
assert (H0 : 2 <> 0);<br/>
45
[ discrR | unfold Rdiv in |- *; rewrite Rinv_mult_distr; try ring ]...<br/>
46
<code class="keyword">Qed</code>.<br/>
49
<code class="keyword">Lemma</code> <a name="sin_PI3_cos_PI6"></a>sin_PI3_cos_PI6 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3) = <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6).<br/>
50
<code class="keyword">Proof</code> with trivial.<br/>
51
replace (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 - <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3)...<br/>
52
rewrite <a href="Coq.Reals.Rtrigo.html#cos_shift">cos_shift</a>...<br/>
53
assert (H0 : 6 <> 0); [ discrR | idtac ]...<br/>
54
assert (H1 : 3 <> 0); [ discrR | idtac ]...<br/>
55
assert (H2 : 2 <> 0); [ discrR | idtac ]...<br/>
56
apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with 6...<br/>
57
rewrite <a href="Coq.Reals.RIneq.html#Rmult_minus_distr_l">Rmult_minus_distr_l</a>; repeat rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 6)...<br/>
58
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>...<br/>
59
rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
60
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 3)); repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>...<br/>
61
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 in |- *; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> <a href="Coq.Reals.AltSeries.html#PI">PI</a>); repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>;<br/>
62
repeat rewrite <- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
64
<code class="keyword">Qed</code>.<br/>
67
<code class="keyword">Lemma</code> <a name="sin_PI6_cos_PI3"></a>sin_PI6_cos_PI3 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3) = <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6).<br/>
68
<code class="keyword">Proof</code> with trivial.<br/>
69
replace (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 - <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3)...<br/>
70
rewrite <a href="Coq.Reals.Rtrigo.html#sin_shift">sin_shift</a>...<br/>
71
assert (H0 : 6 <> 0); [ discrR | idtac ]...<br/>
72
assert (H1 : 3 <> 0); [ discrR | idtac ]...<br/>
73
assert (H2 : 2 <> 0); [ discrR | idtac ]...<br/>
74
apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with 6...<br/>
75
rewrite <a href="Coq.Reals.RIneq.html#Rmult_minus_distr_l">Rmult_minus_distr_l</a>; repeat rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 6)...<br/>
76
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>...<br/>
77
rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
78
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 3)); repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>...<br/>
79
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 in |- *; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> <a href="Coq.Reals.AltSeries.html#PI">PI</a>); repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>;<br/>
80
repeat rewrite <- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
82
<code class="keyword">Qed</code>.<br/>
85
<code class="keyword">Lemma</code> <a name="PI6_RGT_0"></a>PI6_RGT_0 : 0 < <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6.<br/>
86
unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>;<br/>
87
[ apply PI_RGT_0 | apply Rinv_0_lt_compat; prove_sup0 ].<br/>
88
<code class="keyword">Qed</code>.<br/>
91
<code class="keyword">Lemma</code> <a name="PI6_RLT_PI2"></a>PI6_RLT_PI2 : <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6 < <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2.<br/>
92
unfold Rdiv in |- *; apply <a href="Coq.Reals.Raxioms.html#Rmult_lt_compat_l">Rmult_lt_compat_l</a>.<br/>
93
apply <a href="Coq.Reals.AltSeries.html#PI_RGT_0">PI_RGT_0</a>.<br/>
94
apply <a href="Coq.Reals.RIneq.html#Rinv_lt_contravar">Rinv_lt_contravar</a>; prove_sup.<br/>
95
<code class="keyword">Qed</code>.<br/>
98
<code class="keyword">Lemma</code> <a name="sin_PI6"></a>sin_PI6 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) = 1 / 2.<br/>
99
<code class="keyword">Proof</code> with trivial.<br/>
100
assert (H : 2 <> 0); [ discrR | idtac ]...<br/>
101
apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with (2 * <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6))...<br/>
102
replace (2 * <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) * <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6)) with<br/>
103
(2 * <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) * <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6))...<br/>
104
rewrite <- <a href="Coq.Reals.Rtrigo.html#sin_2a">sin_2a</a>; replace (2 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3)...<br/>
105
rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI3_cos_PI6">sin_PI3_cos_PI6</a>...<br/>
106
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>;<br/>
107
pattern 2 at 2 in |- *; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2); rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>;<br/>
108
rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
109
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>...<br/>
110
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>...<br/>
111
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 2)); rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2);<br/>
112
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
113
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>...<br/>
116
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>...<br/>
117
cut (0 < <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6));<br/>
118
[ intro H1; auto with real<br/>
119
| apply <a href="Coq.Reals.Rtrigo.html#cos_gt_0">cos_gt_0</a>;<br/>
120
[ apply (Rlt_trans (- (PI / 2)) 0 (PI / 6) _PI2_RLT_0 PI6_RGT_0)
121
| apply PI6_RLT_PI2 ] ]...<br/>
122
<code class="keyword">Qed</code>.<br/>
125
<code class="keyword">Lemma</code> <a name="sqrt2_neq_0"></a>sqrt2_neq_0 : <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2 <> 0.<br/>
126
assert (Hyp : 0 < 2);<br/>
127
[ prove_sup0<br/>
128
| generalize (<a href="Coq.Reals.RIneq.html#Rlt_le">Rlt_le</a> 0 2 Hyp); intro H1; red in |- *; intro H2;<br/>
129
generalize (<a href="Coq.Reals.R_sqrt.html#sqrt_eq_0">sqrt_eq_0</a> 2 H1 H2); intro H; absurd (2 = 0);<br/>
130
[ discrR | assumption ] ].<br/>
131
<code class="keyword">Qed</code>.<br/>
134
<code class="keyword">Lemma</code> <a name="R1_sqrt2_neq_0"></a>R1_sqrt2_neq_0 : 1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2 <> 0.<br/>
135
generalize (<a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a> (<a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2) <a href="Coq.Reals.Rtrigo_calc.html#sqrt2_neq_0">sqrt2_neq_0</a>); intro H;<br/>
136
generalize (<a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a> 1 (/ <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2) <a href="Coq.Reals.Raxioms.html#R1_neq_R0">R1_neq_R0</a> H); <br/>
137
intro H0; assumption.<br/>
138
<code class="keyword">Qed</code>.<br/>
141
<code class="keyword">Lemma</code> <a name="sqrt3_2_neq_0"></a>sqrt3_2_neq_0 : 2 * <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3 <> 0.<br/>
142
apply <a href="Coq.Reals.RIneq.html#prod_neq_R0">prod_neq_R0</a>;<br/>
144
| assert (Hyp : 0 < 3);<br/>
145
[ prove_sup0<br/>
146
| generalize (<a href="Coq.Reals.RIneq.html#Rlt_le">Rlt_le</a> 0 3 Hyp); intro H1; red in |- *; intro H2;<br/>
147
generalize (<a href="Coq.Reals.R_sqrt.html#sqrt_eq_0">sqrt_eq_0</a> 3 H1 H2); intro H; absurd (3 = 0);<br/>
148
[ discrR | assumption ] ] ].<br/>
149
<code class="keyword">Qed</code>.<br/>
152
<code class="keyword">Lemma</code> <a name="Rlt_sqrt2_0"></a>Rlt_sqrt2_0 : 0 < <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
153
assert (Hyp : 0 < 2);<br/>
154
[ prove_sup0<br/>
155
| generalize (<a href="Coq.Reals.R_sqrt.html#sqrt_positivity">sqrt_positivity</a> 2 (<a href="Coq.Reals.RIneq.html#Rlt_le">Rlt_le</a> 0 2 Hyp)); intro H1; elim H1;<br/>
156
intro H2;<br/>
157
[ assumption<br/>
158
| absurd (0 = <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2);<br/>
159
[ apply (<a href="Coq.Init.Logic.html#sym_not_eq">sym_not_eq</a> (A:=<a href="Coq.Reals.Rdefinitions.html#R">R</a>)); apply <a href="Coq.Reals.Rtrigo_calc.html#sqrt2_neq_0">sqrt2_neq_0</a> | assumption ] ] ].<br/>
160
<code class="keyword">Qed</code>.<br/>
163
<code class="keyword">Lemma</code> <a name="Rlt_sqrt3_0"></a>Rlt_sqrt3_0 : 0 < <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3.<br/>
164
cut (0%nat <> 1%nat);<br/>
165
[ intro H0; assert (Hyp : 0 < 2);<br/>
166
[ prove_sup0<br/>
167
| generalize (<a href="Coq.Reals.RIneq.html#Rlt_le">Rlt_le</a> 0 2 Hyp); intro H1; assert (Hyp2 : 0 < 3);<br/>
168
[ prove_sup0<br/>
169
| generalize (<a href="Coq.Reals.RIneq.html#Rlt_le">Rlt_le</a> 0 3 Hyp2); intro H2;<br/>
170
generalize (<a href="Coq.Reals.RIneq.html#lt_INR_0">lt_INR_0</a> 1 (<a href="Coq.Arith.Lt.html#neq_O_lt">neq_O_lt</a> 1 H0)); <br/>
171
unfold INR in |- *; intro H3;<br/>
172
generalize (<a href="Coq.Reals.Raxioms.html#Rplus_lt_compat_l">Rplus_lt_compat_l</a> 2 0 1 H3); <br/>
173
rewrite <a href="Coq.Reals.Raxioms.html#Rplus_comm">Rplus_comm</a>; rewrite <a href="Coq.Reals.Raxioms.html#Rplus_0_l">Rplus_0_l</a>; replace (2 + 1) with 3;<br/>
174
[ intro H4; generalize (sqrt_lt_1 2 3 H1 H2 H4); clear H3; intro H3;
175
apply (Rlt_trans 0 (sqrt 2) (sqrt 3) Rlt_sqrt2_0 H3)
177
| discriminate ].<br/>
178
<code class="keyword">Qed</code>.<br/>
181
<code class="keyword">Lemma</code> <a name="PI4_RGT_0"></a>PI4_RGT_0 : 0 < <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4.<br/>
182
unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>;<br/>
183
[ apply PI_RGT_0 | apply Rinv_0_lt_compat; prove_sup0 ].<br/>
184
<code class="keyword">Qed</code>.<br/>
187
<code class="keyword">Lemma</code> <a name="cos_PI4"></a>cos_PI4 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) = 1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
188
<code class="keyword">Proof</code> with trivial.<br/>
189
apply <a href="Coq.Reals.R_sqr.html#Rsqr_inj">Rsqr_inj</a>...<br/>
190
apply <a href="Coq.Reals.Rtrigo.html#cos_ge_0">cos_ge_0</a>...<br/>
191
left; apply (<a href="Coq.Reals.Raxioms.html#Rlt_trans">Rlt_trans</a> (- (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)) 0 (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) <a href="Coq.Reals.Rtrigo.html#_PI2_RLT_0">_PI2_RLT_0</a> <a href="Coq.Reals.Rtrigo_calc.html#PI4_RGT_0">PI4_RGT_0</a>)...<br/>
192
left; apply <a href="Coq.Reals.Rtrigo.html#PI4_RLT_PI2">PI4_RLT_PI2</a>...<br/>
193
left; apply (<a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a> 1 (/ <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2))...<br/>
195
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; apply <a href="Coq.Reals.Rtrigo_calc.html#Rlt_sqrt2_0">Rlt_sqrt2_0</a>...<br/>
196
rewrite <a href="Coq.Reals.R_sqr.html#Rsqr_div">Rsqr_div</a>...<br/>
197
rewrite <a href="Coq.Reals.R_sqr.html#Rsqr_1">Rsqr_1</a>; rewrite <a href="Coq.Reals.R_sqrt.html#Rsqr_sqrt">Rsqr_sqrt</a>...<br/>
198
assert (H : 2 <> 0); [ discrR | idtac ]...<br/>
199
unfold Rsqr in |- *; pattern (<a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) at 1 in |- *;<br/>
200
rewrite <- <a href="Coq.Reals.Rtrigo_calc.html#sin_cos_PI4">sin_cos_PI4</a>;<br/>
201
replace (<a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) * <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) with<br/>
202
(1 / 2 * (2 * <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) * <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)))...<br/>
203
rewrite <- <a href="Coq.Reals.Rtrigo.html#sin_2a">sin_2a</a>; replace (2 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)...<br/>
204
rewrite <a href="Coq.Reals.Rtrigo.html#sin_PI2">sin_PI2</a>...<br/>
205
apply <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>...<br/>
206
unfold Rdiv in |- *; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2); rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>...<br/>
207
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
208
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>...<br/>
209
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; repeat rewrite <- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>...<br/>
210
rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
211
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>...<br/>
212
left; prove_sup...<br/>
213
apply <a href="Coq.Reals.Rtrigo_calc.html#sqrt2_neq_0">sqrt2_neq_0</a>...<br/>
214
<code class="keyword">Qed</code>.<br/>
217
<code class="keyword">Lemma</code> <a name="sin_PI4"></a>sin_PI4 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) = 1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
218
rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_cos_PI4">sin_cos_PI4</a>; apply <a href="Coq.Reals.Rtrigo_calc.html#cos_PI4">cos_PI4</a>.<br/>
219
<code class="keyword">Qed</code>.<br/>
222
<code class="keyword">Lemma</code> <a name="tan_PI4"></a>tan_PI4 : <a href="Coq.Reals.Rtrigo.html#tan">tan</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) = 1.<br/>
223
unfold tan in |- *; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_cos_PI4">sin_cos_PI4</a>.<br/>
224
unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rinv_r">Rinv_r</a>.<br/>
225
change (<a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4) <> 0) in |- *; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI4">cos_PI4</a>; apply <a href="Coq.Reals.Rtrigo_calc.html#R1_sqrt2_neq_0">R1_sqrt2_neq_0</a>.<br/>
226
<code class="keyword">Qed</code>.<br/>
229
<code class="keyword">Lemma</code> <a name="cos3PI4"></a>cos3PI4 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) = -1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
230
<code class="keyword">Proof</code> with trivial.<br/>
231
replace (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 - - (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4))...<br/>
232
rewrite <a href="Coq.Reals.Rtrigo.html#cos_shift">cos_shift</a>; rewrite <a href="Coq.Reals.Rtrigo.html#sin_neg">sin_neg</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI4">sin_PI4</a>...<br/>
233
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a>...<br/>
234
unfold Rminus in |- *; rewrite <a href="Coq.Reals.RIneq.html#Ropp_involutive">Ropp_involutive</a>; pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 1 in |- *;<br/>
235
rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rmult_plus_distr_r">Rmult_plus_distr_r</a>;<br/>
236
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>;<br/>
237
[ ring | discrR | discrR ]...<br/>
238
<code class="keyword">Qed</code>.<br/>
241
<code class="keyword">Lemma</code> <a name="sin3PI4"></a>sin3PI4 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) = 1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
242
<code class="keyword">Proof</code> with trivial.<br/>
243
replace (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 - - (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4))...<br/>
244
rewrite <a href="Coq.Reals.Rtrigo.html#sin_shift">sin_shift</a>; rewrite <a href="Coq.Reals.Rtrigo.html#cos_neg">cos_neg</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI4">cos_PI4</a>...<br/>
245
unfold Rminus in |- *; rewrite <a href="Coq.Reals.RIneq.html#Ropp_involutive">Ropp_involutive</a>; pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 1 in |- *;<br/>
246
rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; unfold Rdiv in |- *; rewrite <a href="Coq.Reals.RIneq.html#Rmult_plus_distr_r">Rmult_plus_distr_r</a>;<br/>
247
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>;<br/>
248
[ ring | discrR | discrR ]...<br/>
249
<code class="keyword">Qed</code>.<br/>
252
<code class="keyword">Lemma</code> <a name="cos_PI6"></a>cos_PI6 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) = <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3 / 2.<br/>
253
<code class="keyword">Proof</code> with trivial.<br/>
254
apply <a href="Coq.Reals.R_sqr.html#Rsqr_inj">Rsqr_inj</a>...<br/>
255
apply <a href="Coq.Reals.Rtrigo.html#cos_ge_0">cos_ge_0</a>...<br/>
256
left; apply (<a href="Coq.Reals.Raxioms.html#Rlt_trans">Rlt_trans</a> (- (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)) 0 (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) <a href="Coq.Reals.Rtrigo.html#_PI2_RLT_0">_PI2_RLT_0</a> <a href="Coq.Reals.Rtrigo_calc.html#PI6_RGT_0">PI6_RGT_0</a>)...<br/>
257
left; apply <a href="Coq.Reals.Rtrigo_calc.html#PI6_RLT_PI2">PI6_RLT_PI2</a>...<br/>
258
left; apply (<a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a> (<a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3) (/ 2))...<br/>
259
apply <a href="Coq.Reals.Rtrigo_calc.html#Rlt_sqrt3_0">Rlt_sqrt3_0</a>...<br/>
260
apply <a href="Coq.Reals.RIneq.html#Rinv_0_lt_compat">Rinv_0_lt_compat</a>; prove_sup0...<br/>
261
assert (H : 2 <> 0); [ discrR | idtac ]...<br/>
262
assert (H1 : 4 <> 0); [ apply prod_neq_R0 | idtac ]...<br/>
263
rewrite <a href="Coq.Reals.R_sqr.html#Rsqr_div">Rsqr_div</a>...<br/>
264
rewrite <a href="Coq.Reals.Rtrigo.html#cos2">cos2</a>; unfold Rsqr in |- *; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI6">sin_PI6</a>; rewrite <a href="Coq.Reals.R_sqrt.html#sqrt_def">sqrt_def</a>...<br/>
265
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with 4...<br/>
266
rewrite <a href="Coq.Reals.RIneq.html#Rmult_minus_distr_l">Rmult_minus_distr_l</a>; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 3);<br/>
267
repeat rewrite <- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>...<br/>
268
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>...<br/>
269
rewrite <- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 2)); repeat rewrite <- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>...<br/>
270
rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
271
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>...<br/>
273
left; prove_sup0...<br/>
274
<code class="keyword">Qed</code>.<br/>
277
<code class="keyword">Lemma</code> <a name="tan_PI6"></a>tan_PI6 : <a href="Coq.Reals.Rtrigo.html#tan">tan</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 6) = 1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3.<br/>
278
unfold tan in |- *; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI6">sin_PI6</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI6">cos_PI6</a>; unfold Rdiv in |- *;<br/>
279
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite <a href="Coq.Reals.RIneq.html#Rinv_mult_distr">Rinv_mult_distr</a>.<br/>
280
rewrite <a href="Coq.Reals.RIneq.html#Rinv_involutive">Rinv_involutive</a>.<br/>
281
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 2)); rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>.<br/>
282
apply <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>.<br/>
285
red in |- *; intro; assert (H1:= <a href="Coq.Reals.Rtrigo_calc.html#Rlt_sqrt3_0">Rlt_sqrt3_0</a>); rewrite H in H1;<br/>
286
elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> 0 H1).<br/>
287
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; discrR.<br/>
288
<code class="keyword">Qed</code>.<br/>
291
<code class="keyword">Lemma</code> <a name="sin_PI3"></a>sin_PI3 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3) = <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3 / 2.<br/>
292
rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI3_cos_PI6">sin_PI3_cos_PI6</a>; apply <a href="Coq.Reals.Rtrigo_calc.html#cos_PI6">cos_PI6</a>.<br/>
293
<code class="keyword">Qed</code>.<br/>
296
<code class="keyword">Lemma</code> <a name="cos_PI3"></a>cos_PI3 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3) = 1 / 2.<br/>
297
rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI6_cos_PI3">sin_PI6_cos_PI3</a>; apply <a href="Coq.Reals.Rtrigo_calc.html#sin_PI6">sin_PI6</a>.<br/>
298
<code class="keyword">Qed</code>.<br/>
301
<code class="keyword">Lemma</code> <a name="tan_PI3"></a>tan_PI3 : <a href="Coq.Reals.Rtrigo.html#tan">tan</a> (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3) = <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3.<br/>
302
unfold tan in |- *; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI3">sin_PI3</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI3">cos_PI3</a>; unfold Rdiv in |- *;<br/>
303
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite <a href="Coq.Reals.RIneq.html#Rinv_involutive">Rinv_involutive</a>.<br/>
304
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>.<br/>
305
apply <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>.<br/>
308
<code class="keyword">Qed</code>.<br/>
311
<code class="keyword">Lemma</code> <a name="sin_2PI3"></a>sin_2PI3 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (2 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3)) = <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3 / 2.<br/>
312
rewrite <a href="Coq.Reals.RIneq.html#double">double</a>; rewrite <a href="Coq.Reals.Rtrigo.html#sin_plus">sin_plus</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI3">sin_PI3</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI3">cos_PI3</a>;<br/>
313
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 2));<br/>
314
repeat rewrite <- <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; <br/>
315
reflexivity.<br/>
316
<code class="keyword">Qed</code>.<br/>
319
<code class="keyword">Lemma</code> <a name="cos_2PI3"></a>cos_2PI3 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (2 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3)) = -1 / 2.<br/>
320
<code class="keyword">Proof</code> with trivial.<br/>
321
assert (H : 2 <> 0); [ discrR | idtac ]...<br/>
322
assert (H0 : 4 <> 0); [ apply prod_neq_R0 | idtac ]...<br/>
323
rewrite <a href="Coq.Reals.RIneq.html#double">double</a>; rewrite <a href="Coq.Reals.Cos_plus.html#cos_plus">cos_plus</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI3">sin_PI3</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI3">cos_PI3</a>;<br/>
324
unfold Rdiv in |- *; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>; apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with 4...<br/>
325
rewrite <a href="Coq.Reals.RIneq.html#Rmult_minus_distr_l">Rmult_minus_distr_l</a>; repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>;<br/>
326
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2)...<br/>
327
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
328
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>...<br/>
329
pattern 2 at 4 in |- *; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2); repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>;<br/>
330
rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
331
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_r_reverse">Ropp_mult_distr_r_reverse</a>; rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>...<br/>
332
rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2); repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
333
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> 2); rewrite (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (/ 2))...<br/>
334
repeat rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
335
rewrite <a href="Coq.Reals.RIneq.html#Rmult_1_r">Rmult_1_r</a>; rewrite <a href="Coq.Reals.R_sqrt.html#sqrt_def">sqrt_def</a>...<br/>
337
left; prove_sup...<br/>
338
<code class="keyword">Qed</code>.<br/>
341
<code class="keyword">Lemma</code> <a name="tan_2PI3"></a>tan_2PI3 : <a href="Coq.Reals.Rtrigo.html#tan">tan</a> (2 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 3)) = - <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 3.<br/>
342
<code class="keyword">Proof</code> with trivial.<br/>
343
assert (H : 2 <> 0); [ discrR | idtac ]...<br/>
344
unfold tan in |- *; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_2PI3">sin_2PI3</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_2PI3">cos_2PI3</a>; unfold Rdiv in |- *;<br/>
345
rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a>; rewrite <a href="Coq.Reals.Raxioms.html#Rmult_1_l">Rmult_1_l</a>;<br/>
346
rewrite <- <a href="Coq.Reals.RIneq.html#Ropp_inv_permute">Ropp_inv_permute</a>...<br/>
347
rewrite <a href="Coq.Reals.RIneq.html#Rinv_involutive">Rinv_involutive</a>...<br/>
348
rewrite <a href="Coq.Reals.Raxioms.html#Rmult_assoc">Rmult_assoc</a>; rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_r_reverse">Ropp_mult_distr_r_reverse</a>; rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_l_sym">Rinv_l_sym</a>...<br/>
350
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>...<br/>
351
<code class="keyword">Qed</code>.<br/>
354
<code class="keyword">Lemma</code> <a name="cos_5PI4"></a>cos_5PI4 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (5 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) = -1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
355
<code class="keyword">Proof</code> with trivial.<br/>
356
replace (5 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4 + <a href="Coq.Reals.AltSeries.html#PI">PI</a>)...<br/>
357
rewrite <a href="Coq.Reals.Rtrigo.html#neg_cos">neg_cos</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_PI4">cos_PI4</a>; unfold Rdiv in |- *;<br/>
358
rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a>...<br/>
359
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 in |- *; rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 3 in |- *;<br/>
360
rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; assert (H : 2 <> 0);<br/>
361
[ discrR | unfold Rdiv in |- *; repeat rewrite Rinv_mult_distr; try ring ]...<br/>
362
<code class="keyword">Qed</code>.<br/>
365
<code class="keyword">Lemma</code> <a name="sin_5PI4"></a>sin_5PI4 : <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (5 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) = -1 / <a href="Coq.Reals.R_sqrt.html#sqrt">sqrt</a> 2.<br/>
366
<code class="keyword">Proof</code> with trivial.<br/>
367
replace (5 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) with (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4 + <a href="Coq.Reals.AltSeries.html#PI">PI</a>)...<br/>
368
rewrite <a href="Coq.Reals.Rtrigo.html#neg_sin">neg_sin</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_PI4">sin_PI4</a>; unfold Rdiv in |- *;<br/>
369
rewrite <a href="Coq.Reals.RIneq.html#Ropp_mult_distr_l_reverse">Ropp_mult_distr_l_reverse</a>...<br/>
370
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 in |- *; rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 3 in |- *;<br/>
371
rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; assert (H : 2 <> 0);<br/>
372
[ discrR | unfold Rdiv in |- *; repeat rewrite Rinv_mult_distr; try ring ]...<br/>
373
<code class="keyword">Qed</code>.<br/>
376
<code class="keyword">Lemma</code> <a name="sin_cos5PI4"></a>sin_cos5PI4 : <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (5 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)) = <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (5 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 4)).<br/>
377
rewrite <a href="Coq.Reals.Rtrigo_calc.html#cos_5PI4">cos_5PI4</a>; rewrite <a href="Coq.Reals.Rtrigo_calc.html#sin_5PI4">sin_5PI4</a>; reflexivity.<br/>
378
<code class="keyword">Qed</code>.<br/>
381
<code class="keyword">Lemma</code> <a name="Rgt_3PI2_0"></a>Rgt_3PI2_0 : 0 < 3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2).<br/>
382
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>;<br/>
383
[ prove_sup0<br/>
384
| unfold Rdiv in |- *; apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>;<br/>
385
[ apply PI_RGT_0 | apply Rinv_0_lt_compat; prove_sup0 ] ].<br/>
386
<code class="keyword">Qed</code>.<br/>
389
<code class="keyword">Lemma</code> <a name="Rgt_2PI_0"></a>Rgt_2PI_0 : 0 < 2 * <a href="Coq.Reals.AltSeries.html#PI">PI</a>.<br/>
390
apply <a href="Coq.Reals.RIneq.html#Rmult_lt_0_compat">Rmult_lt_0_compat</a>; [ prove_sup0 | apply PI_RGT_0 ].<br/>
391
<code class="keyword">Qed</code>.<br/>
394
<code class="keyword">Lemma</code> <a name="Rlt_PI_3PI2"></a>Rlt_PI_3PI2 : <a href="Coq.Reals.AltSeries.html#PI">PI</a> < 3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2).<br/>
395
generalize <a href="Coq.Reals.Rtrigo.html#PI2_RGT_0">PI2_RGT_0</a>; intro H1;<br/>
396
generalize (<a href="Coq.Reals.Raxioms.html#Rplus_lt_compat_l">Rplus_lt_compat_l</a> <a href="Coq.Reals.AltSeries.html#PI">PI</a> 0 (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2) H1);<br/>
397
replace (<a href="Coq.Reals.AltSeries.html#PI">PI</a> + <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2) with (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)).<br/>
398
rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; intro H2; assumption.<br/>
399
pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 2 in |- *; rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; ring.<br/>
400
<code class="keyword">Qed</code>. <br/>
402
<code class="keyword">Lemma</code> <a name="Rlt_3PI2_2PI"></a>Rlt_3PI2_2PI : 3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2) < 2 * <a href="Coq.Reals.AltSeries.html#PI">PI</a>.<br/>
403
generalize <a href="Coq.Reals.Rtrigo.html#PI2_RGT_0">PI2_RGT_0</a>; intro H1;<br/>
404
generalize (<a href="Coq.Reals.Raxioms.html#Rplus_lt_compat_l">Rplus_lt_compat_l</a> (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2)) 0 (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2) H1);<br/>
405
replace (3 * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2) + <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2) with (2 * <a href="Coq.Reals.AltSeries.html#PI">PI</a>).<br/>
406
rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; intro H2; assumption.<br/>
407
rewrite <a href="Coq.Reals.RIneq.html#double">double</a>; pattern <a href="Coq.Reals.AltSeries.html#PI">PI</a> at 1 2 in |- *; rewrite <a href="Coq.Reals.RIneq.html#double_var">double_var</a>; ring.<br/>
408
<code class="keyword">Qed</code>.<br/>
411
<code class="keyword">Definition</code> <a name="plat"></a>plat : <a href="Coq.Reals.Rdefinitions.html#R">R</a> := 180.<br/>
412
<code class="keyword">Definition</code> <a name="toRad"></a>toRad (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : <a href="Coq.Reals.Rdefinitions.html#R">R</a> := x * <a href="Coq.Reals.AltSeries.html#PI">PI</a> * / <a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a>.<br/>
413
<code class="keyword">Definition</code> <a name="toDeg"></a>toDeg (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : <a href="Coq.Reals.Rdefinitions.html#R">R</a> := x * <a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a> * / <a href="Coq.Reals.AltSeries.html#PI">PI</a>.<br/>
416
<code class="keyword">Lemma</code> <a name="rad_deg"></a>rad_deg : forall x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, <a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> (<a href="Coq.Reals.Rtrigo_calc.html#toDeg">toDeg</a> x) = x.<br/>
417
intro; unfold toRad, toDeg in |- *;<br/>
418
replace (x * <a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a> * / <a href="Coq.Reals.AltSeries.html#PI">PI</a> * <a href="Coq.Reals.AltSeries.html#PI">PI</a> * / <a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a>) with<br/>
419
(x * (<a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a> * / <a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a>) * (<a href="Coq.Reals.AltSeries.html#PI">PI</a> * / <a href="Coq.Reals.AltSeries.html#PI">PI</a>)); [ idtac | ring ].<br/>
420
repeat rewrite <- <a href="Coq.Reals.RIneq.html#Rinv_r_sym">Rinv_r_sym</a>.<br/>
422
apply <a href="Coq.Reals.Rtrigo.html#PI_neq0">PI_neq0</a>.<br/>
423
unfold plat in |- *; discrR.<br/>
424
<code class="keyword">Qed</code>.<br/>
427
<code class="keyword">Lemma</code> <a name="toRad_inj"></a>toRad_inj : forall x y:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, <a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> x = <a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> y -> x = y.<br/>
428
intros; unfold toRad in H; apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with <a href="Coq.Reals.AltSeries.html#PI">PI</a>.<br/>
429
rewrite <- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> x); rewrite <- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> y).<br/>
430
apply <a href="Coq.Reals.RIneq.html#Rmult_eq_reg_l">Rmult_eq_reg_l</a> with (/ <a href="Coq.Reals.Rtrigo_calc.html#plat">plat</a>).<br/>
431
rewrite <- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (x * <a href="Coq.Reals.AltSeries.html#PI">PI</a>)); rewrite <- (<a href="Coq.Reals.Raxioms.html#Rmult_comm">Rmult_comm</a> (y * <a href="Coq.Reals.AltSeries.html#PI">PI</a>));<br/>
432
assumption.<br/>
433
apply <a href="Coq.Reals.RIneq.html#Rinv_neq_0_compat">Rinv_neq_0_compat</a>; unfold plat in |- *; discrR.<br/>
434
apply <a href="Coq.Reals.Rtrigo.html#PI_neq0">PI_neq0</a>.<br/>
435
<code class="keyword">Qed</code>.<br/>
438
<code class="keyword">Lemma</code> <a name="deg_rad"></a>deg_rad : forall x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, <a href="Coq.Reals.Rtrigo_calc.html#toDeg">toDeg</a> (<a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> x) = x.<br/>
439
intro x; apply <a href="Coq.Reals.Rtrigo_calc.html#toRad_inj">toRad_inj</a>; rewrite (<a href="Coq.Reals.Rtrigo_calc.html#rad_deg">rad_deg</a> (<a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> x)); reflexivity.<br/>
440
<code class="keyword">Qed</code>.<br/>
443
<code class="keyword">Definition</code> <a name="sind"></a>sind (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : <a href="Coq.Reals.Rdefinitions.html#R">R</a> := <a href="Coq.Reals.Rtrigo_def.html#sin">sin</a> (<a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> x).<br/>
444
<code class="keyword">Definition</code> <a name="cosd"></a>cosd (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : <a href="Coq.Reals.Rdefinitions.html#R">R</a> := <a href="Coq.Reals.Rtrigo_def.html#cos">cos</a> (<a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> x).<br/>
445
<code class="keyword">Definition</code> <a name="tand"></a>tand (x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>) : <a href="Coq.Reals.Rdefinitions.html#R">R</a> := <a href="Coq.Reals.Rtrigo.html#tan">tan</a> (<a href="Coq.Reals.Rtrigo_calc.html#toRad">toRad</a> x).<br/>
448
<code class="keyword">Lemma</code> <a name="Rsqr_sin_cos_d_one"></a>Rsqr_sin_cos_d_one : forall x:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (<a href="Coq.Reals.Rtrigo_calc.html#sind">sind</a> x) + <a href="Coq.Reals.RIneq.html#Rsqr">Rsqr</a> (<a href="Coq.Reals.Rtrigo_calc.html#cosd">cosd</a> x) = 1.<br/>
449
intro x; unfold sind in |- *; unfold cosd in |- *; apply <a href="Coq.Reals.Rtrigo.html#sin2_cos2">sin2_cos2</a>.<br/>
450
<code class="keyword">Qed</code>.<br/>
453
<code class="keyword">Lemma</code> <a name="sin_lb_ge_0"></a>sin_lb_ge_0 : forall a:<a href="Coq.Reals.Rdefinitions.html#R">R</a>, 0 <= a -> a <= <a href="Coq.Reals.AltSeries.html#PI">PI</a> / 2 -> 0 <= <a href="Coq.Reals.Rtrigo.html#sin_lb">sin_lb</a> a.<br/>
454
intros; case (<a href="Coq.Reals.RIneq.html#Rtotal_order">Rtotal_order</a> 0 a); intro.<br/>
455
left; apply <a href="Coq.Reals.Rtrigo.html#sin_lb_gt_0">sin_lb_gt_0</a>; assumption.<br/>
457
rewrite <- H2; unfold sin_lb in |- *; unfold sin_approx in |- *;<br/>
458
unfold sum_f_R0 in |- *; unfold sin_term in |- *; <br/>
459
repeat rewrite <a href="Coq.Reals.Rfunctions.html#pow_ne_zero">pow_ne_zero</a>.<br/>
460
unfold Rdiv in |- *; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_l">Rmult_0_l</a>; repeat rewrite <a href="Coq.Reals.RIneq.html#Rmult_0_r">Rmult_0_r</a>;<br/>
461
repeat rewrite <a href="Coq.Reals.RIneq.html#Rplus_0_r">Rplus_0_r</a>; right; reflexivity.<br/>
466
elim (<a href="Coq.Reals.RIneq.html#Rlt_irrefl">Rlt_irrefl</a> 0 (<a href="Coq.Reals.RIneq.html#Rle_lt_trans">Rle_lt_trans</a> 0 a 0 H H2)).<br/>
467
<code class="keyword">Qed</code>.</code>
468
<hr/><a href="index.html">Index</a><hr/><font size="-1">This page has been generated by <a href="http://www.lri.fr/~filliatr/coqdoc/">coqdoc</a></font>
b'\\ No newline at end of file'