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
(*i $Id: Raxioms.v 10710 2008-03-23 09:24:09Z herbelin $ i*)
11
(*********************************************************)
12
(** Axiomatisation of the classical reals *)
13
(*********************************************************)
15
Require Export ZArith_base.
16
Require Export Rdefinitions.
17
Open Local Scope R_scope.
19
(*********************************************************)
21
(*********************************************************)
23
(*********************************************************)
25
(*********************************************************)
28
Axiom Rplus_comm : forall r1 r2:R, r1 + r2 = r2 + r1.
29
Hint Resolve Rplus_comm: real.
32
Axiom Rplus_assoc : forall r1 r2 r3:R, r1 + r2 + r3 = r1 + (r2 + r3).
33
Hint Resolve Rplus_assoc: real.
36
Axiom Rplus_opp_r : forall r:R, r + - r = 0.
37
Hint Resolve Rplus_opp_r: real v62.
40
Axiom Rplus_0_l : forall r:R, 0 + r = r.
41
Hint Resolve Rplus_0_l: real.
43
(***********************************************************)
44
(** ** Multiplication *)
45
(***********************************************************)
48
Axiom Rmult_comm : forall r1 r2:R, r1 * r2 = r2 * r1.
49
Hint Resolve Rmult_comm: real v62.
52
Axiom Rmult_assoc : forall r1 r2 r3:R, r1 * r2 * r3 = r1 * (r2 * r3).
53
Hint Resolve Rmult_assoc: real v62.
56
Axiom Rinv_l : forall r:R, r <> 0 -> / r * r = 1.
57
Hint Resolve Rinv_l: real.
60
Axiom Rmult_1_l : forall r:R, 1 * r = r.
61
Hint Resolve Rmult_1_l: real.
64
Axiom R1_neq_R0 : 1 <> 0.
65
Hint Resolve R1_neq_R0: real.
67
(*********************************************************)
68
(** ** Distributivity *)
69
(*********************************************************)
73
Rmult_plus_distr_l : forall r1 r2 r3:R, r1 * (r2 + r3) = r1 * r2 + r1 * r3.
74
Hint Resolve Rmult_plus_distr_l: real v62.
76
(*********************************************************)
78
(*********************************************************)
79
(*********************************************************)
81
(*********************************************************)
84
Axiom total_order_T : forall r1 r2:R, {r1 < r2} + {r1 = r2} + {r1 > r2}.
86
(*********************************************************)
88
(*********************************************************)
91
Axiom Rlt_asym : forall r1 r2:R, r1 < r2 -> ~ r2 < r1.
94
Axiom Rlt_trans : forall r1 r2 r3:R, r1 < r2 -> r2 < r3 -> r1 < r3.
97
Axiom Rplus_lt_compat_l : forall r r1 r2:R, r1 < r2 -> r + r1 < r + r2.
101
Rmult_lt_compat_l : forall r r1 r2:R, 0 < r -> r1 < r2 -> r * r1 < r * r2.
103
Hint Resolve Rlt_asym Rplus_lt_compat_l Rmult_lt_compat_l: real.
105
(**********************************************************)
106
(** * Injection from N to R *)
107
(**********************************************************)
110
Boxed Fixpoint INR (n:nat) : R :=
116
Arguments Scope INR [nat_scope].
119
(**********************************************************)
120
(** * Injection from [Z] to [R] *)
121
(**********************************************************)
124
Definition IZR (z:Z) : R :=
127
| Zpos n => INR (nat_of_P n)
128
| Zneg n => - INR (nat_of_P n)
130
Arguments Scope IZR [Z_scope].
132
(**********************************************************)
133
(** * [R] Archimedean *)
134
(**********************************************************)
137
Axiom archimed : forall r:R, IZR (up r) > r /\ IZR (up r) - r <= 1.
139
(**********************************************************)
140
(** * [R] Complete *)
141
(**********************************************************)
144
Definition is_upper_bound (E:R -> Prop) (m:R) := forall x:R, E x -> x <= m.
147
Definition bound (E:R -> Prop) := exists m : R, is_upper_bound E m.
150
Definition is_lub (E:R -> Prop) (m:R) :=
151
is_upper_bound E m /\ (forall b:R, is_upper_bound E b -> m <= b).
157
bound E -> (exists x : R, E x) -> { m:R | is_lub E m }.