1
(************************************************************************)
2
(* v * The Coq Proof Assistant / The Coq Development Team *)
3
(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
4
(* \VV/ **************************************************************)
5
(* // * This file is distributed under the terms of the *)
6
(* * GNU Lesser General Public License Version 2.1 *)
7
(************************************************************************)
9
(* $Id: Fourier_util.v 10710 2008-03-23 09:24:09Z herbelin $ *)
12
Comments "Lemmas used by the tactic Fourier".
16
Lemma Rfourier_lt : forall x1 y1 a:R, x1 < y1 -> 0 < a -> a * x1 < a * y1.
17
intros; apply Rmult_lt_compat_l; assumption.
20
Lemma Rfourier_le : forall x1 y1 a:R, x1 <= y1 -> 0 < a -> a * x1 <= a * y1.
23
case H; auto with real.
26
Lemma Rfourier_lt_lt :
27
forall x1 y1 x2 y2 a:R,
28
x1 < y1 -> x2 < y2 -> 0 < a -> x1 + a * x2 < y1 + a * y2.
29
intros x1 y1 x2 y2 a H H0 H1; try assumption.
30
apply Rplus_lt_compat.
37
Lemma Rfourier_lt_le :
38
forall x1 y1 x2 y2 a:R,
39
x1 < y1 -> x2 <= y2 -> 0 < a -> x1 + a * x2 < y1 + a * y2.
40
intros x1 y1 x2 y2 a H H0 H1; try assumption.
42
apply Rplus_lt_compat.
44
apply Rfourier_lt; auto with real.
46
rewrite (Rplus_comm y1 (a * y2)).
47
rewrite (Rplus_comm x1 (a * y2)).
48
apply Rplus_lt_compat_l.
52
Lemma Rfourier_le_lt :
53
forall x1 y1 x2 y2 a:R,
54
x1 <= y1 -> x2 < y2 -> 0 < a -> x1 + a * x2 < y1 + a * y2.
55
intros x1 y1 x2 y2 a H H0 H1; try assumption.
57
apply Rfourier_lt_le; auto with real.
59
apply Rplus_lt_compat_l.
60
apply Rfourier_lt; auto with real.
63
Lemma Rfourier_le_le :
64
forall x1 y1 x2 y2 a:R,
65
x1 <= y1 -> x2 <= y2 -> 0 < a -> x1 + a * x2 <= y1 + a * y2.
66
intros x1 y1 x2 y2 a H H0 H1; try assumption.
70
apply Rfourier_le_lt; auto with real.
75
rewrite (Rplus_comm x1 (a * y2)).
76
rewrite (Rplus_comm y1 (a * y2)).
77
apply Rplus_lt_compat_l.
81
right; try assumption.
85
Lemma Rlt_zero_pos_plus1 : forall x:R, 0 < x -> 0 < 1 + x.
86
intros x H; try assumption.
88
apply Rle_lt_0_plus_1.
89
red in |- *; auto with real.
92
Lemma Rlt_mult_inv_pos : forall x y:R, 0 < x -> 0 < y -> 0 < x * / y.
93
intros x y H H0; try assumption.
94
replace 0 with (x * 0).
95
apply Rmult_lt_compat_l; auto with real.
99
Lemma Rlt_zero_1 : 0 < 1.
103
Lemma Rle_zero_pos_plus1 : forall x:R, 0 <= x -> 0 <= 1 + x.
104
intros x H; try assumption.
107
left; try assumption.
108
apply Rlt_zero_pos_plus1; auto with real.
110
replace (1 + 0) with 1.
116
Lemma Rle_mult_inv_pos : forall x y:R, 0 <= x -> 0 < y -> 0 <= x * / y.
117
intros x y H H0; try assumption.
120
apply Rlt_mult_inv_pos; auto with real.
122
red in |- *; right; ring.
125
Lemma Rle_zero_1 : 0 <= 1.
130
Lemma Rle_not_lt : forall n d:R, 0 <= n * / d -> ~ 0 < - n * / d.
131
intros n d H; red in |- *; intros H0; try exact H0.
132
generalize (Rgt_not_le 0 (n * / d)).
133
intros H1; elim H1; try assumption.
134
replace (n * / d) with (- - (n * / d)).
135
replace 0 with (- -0).
136
replace (- (n * / d)) with (- n * / d).
139
apply Ropp_gt_lt_contravar.
148
Lemma Rnot_lt0 : forall x:R, ~ 0 < 0 * x.
149
intros x; try assumption.
150
replace (0 * x) with 0.
155
Lemma Rlt_not_le_frac_opp : forall n d:R, 0 < n * / d -> ~ 0 <= - n * / d.
156
intros n d H; try assumption.
159
replace (- n * / d) with (- (n * / d)).
160
apply Ropp_lt_gt_contravar.
166
Lemma Rnot_lt_lt : forall x y:R, ~ 0 < y - x -> ~ x < y.
167
unfold not in |- *; intros.
169
apply Rplus_lt_reg_r with x.
170
replace (x + 0) with x.
171
replace (x + (y - x)) with y.
177
Lemma Rnot_le_le : forall x y:R, ~ 0 <= y - x -> ~ x <= y.
178
unfold not in |- *; intros.
182
apply Rplus_lt_reg_r with x.
183
replace (x + 0) with x.
184
replace (x + (y - x)) with y.
192
Lemma Rfourier_gt_to_lt : forall x y:R, y > x -> x < y.
193
unfold Rgt in |- *; intros; assumption.
196
Lemma Rfourier_ge_to_le : forall x y:R, y >= x -> x <= y.
197
intros x y; exact (Rge_le y x).
200
Lemma Rfourier_eqLR_to_le : forall x y:R, x = y -> x <= y.
204
Lemma Rfourier_eqRL_to_le : forall x y:R, y = x -> x <= y.
208
Lemma Rfourier_not_ge_lt : forall x y:R, (x >= y -> False) -> x < y.
212
Lemma Rfourier_not_gt_le : forall x y:R, (x > y -> False) -> x <= y.
216
Lemma Rfourier_not_le_gt : forall x y:R, (x <= y -> False) -> x > y.
220
Lemma Rfourier_not_lt_ge : forall x y:R, (x < y -> False) -> x >= y.