Basic lemmas for the classical real numbers
This file provides several hundred basic lemmas about foundamental
operations on R:
- addition denoted by Rplus (notation: infix +),
opposite denoted by Ropp (notation: unary prefix -) and
subtraction denoted by Rminus (notation: infix -);
- multiplication denoted by Rmult (notation: infix *),
inverse denoted by Rinv (notation: prefix /),
division denoted by Rdiv (notation: infix /) and
square denoted by Rsqr (notation: suffix ²)
- orders <, >, <= and >=
- injective morphisms:
- INR : nat -> R
- IPR : positive -> R
- IZR : Z -> R
All those lemmas are proved using a set of 17 "primitive" lemmas in
Raxioms.v (plus the convenient choice that the inverse of 0 is 0 in
Rdefinitions.v). These "primitive" lemmas are:
- Rplus_comm, Rplus_assoc, Rplus_0_l, Rplus_opp_l
- Rmult_comm, Rmult_assoc, Rmult_1_l, Rinv_l
- Rmult_plus_distr_l, R1_neq_R0
- Rlt_trans, Rlt_asym, Rplus_lt_compat_l, Rmult_lt_compat_l
- total_order_T
- completeness, archimed
This makes this file independent of the actual construction of the real
numbers, since these 17 axioms characterize, up to isomorphism, the ordered
field of real numbers.
The three following lemmas map the default form of numerical
constants to their representation in terms of the axioms of
R. This can be a useful intermediate representation for reifying
to another axiomatics of the reals. It is however generally more
convenient to keep constants represented under an IZR z form when
working within R.
Notation prod_neq_R0 :=
Rmult_integral_contrapositive_currified (
only parsing).
Notation minus_Rgt :=
Rminus_gt (
only parsing).
Notation minus_Rge :=
Rminus_ge (
only parsing).
Notation plus_le_is_le :=
Rplus_le_reg_pos_r (
only parsing).
Notation plus_lt_is_lt :=
Rplus_lt_reg_pos_r (
only parsing).
Notation INR_lt_1 :=
lt_1_INR (
only parsing).
Notation lt_INR_0 :=
lt_0_INR (
only parsing).
Notation not_nm_INR :=
not_INR (
only parsing).
Notation INR_pos :=
pos_INR_nat_of_P (
only parsing).
Notation not_INR_O :=
INR_not_0 (
only parsing).
Notation not_O_INR :=
not_0_INR (
only parsing).
Notation not_O_IZR :=
not_0_IZR (
only parsing).
Notation le_O_IZR :=
le_0_IZR (
only parsing).
Notation lt_O_IZR :=
lt_0_IZR (
only parsing).
Notation tech_Rplus :=
Rplus_le_lt_0_neq_0 (
only parsing).
Notation tech_Rgt_minus :=
Rgt_minus_pos (
only parsing).
Notation le_epsilon :=
Rle_plus_epsilon (
only parsing).
Notation completeness_weak :=
upper_bound_thm (
only parsing).
Notation Req_EM_T :=
Req_dec_T (
only parsing).
Notation Rinv_r_simpl_r :=
Rmult_inv_m_id_r (
only parsing).
Notation Rinv_r_simpl_l :=
Rmult_inv_r_id_l (
only parsing).
Notation Rinv_r_simpl_m :=
Rmult_inv_r_id_m (
only parsing).
Notation Rplus_eq_R0 :=
Rplus_eq_0 (
only parsing).
Lemma Rinv_involutive_depr :
forall r,
r <> 0
-> / / r = r.
#[
deprecated(
since="8.16",
note="Use Rinv_inv.")]
Notation Rinv_involutive :=
Rinv_involutive_depr (
only parsing).
Lemma Rinv_mult_distr_depr :
forall r1 r2,
r1 <> 0
-> r2 <> 0
-> / (r1 * r2) = / r1 * / r2.
#[
deprecated(
since="8.16",
note="Use Rinv_mult.")]
Notation Rinv_mult_distr :=
Rinv_mult_distr_depr (
only parsing).
Lemma Ropp_inv_permute_depr :
forall r,
r <> 0
-> - / r = / - r.
#[
deprecated(
since="8.16",
note="Use Rinv_opp.")]
Notation Ropp_inv_permute :=
Ropp_inv_permute_depr (
only parsing).
Lemma Ropp_div_den_depr :
forall x y,
y <> 0
-> x / - y = - (x / y).
#[
deprecated(
since="8.16",
note="Use Rdiv_opp_r.")]
Notation Ropp_div_den :=
Ropp_div_den_depr (
only parsing).
Lemma inser_trans_R_depr :
forall r1 r2 r3 r4,
r1 <= r2 < r3 -> {r1 <= r2 < r4} + {r4 <= r2 < r3}.
#[
deprecated(
since="8.19")]
Notation inser_trans_R :=
inser_trans_R_depr (
only parsing).
Lemma Ropp_minus_distr'_depr :
forall r1 r2,
- (r2 - r1) = r1 - r2.
#[
deprecated(
since="8.19",
note="Use Ropp_minus_distr instead.")]
Notation Ropp_minus_distr' := (
fun r1 r2 => (
Ropp_minus_distr r2 r1)) (
only parsing).
#[
deprecated(
since="8.19",
note="Use Rminus_diag instead.")]
Notation Rminus_eq_0 := (
fun x =>
Rminus_diag x) (
only parsing).
Lemma sum_inequa_Rle_lt_depr :
forall a x b c y d:
R,
a <= x -> x < b -> c < y -> y <= d -> a + c < x + y < b + d.
#[
deprecated(
since="8.19")]
Notation sum_inequa_Rle_lt :=
sum_inequa_Rle_lt_depr (
only parsing).
Lemma Rle_Rinv_depr :
forall x y:
R, 0
< x -> 0
< y -> x <= y -> / y <= / x.
#[
deprecated(
since="8.19",
note="Use Rinv_le_contravar.")]
Notation Rle_Rinv :=
Rle_Rinv_depr (
only parsing).
#[
deprecated(
since="8.19",
note="Use the bidirectional version Rlt_0_minus instead.")]
Notation Rlt_Rminus := (
fun a b =>
proj2 (
Rlt_0_minus a b)) (
only parsing).
#[
deprecated(
since="8.19",
note="Use the bidirectional version Rlt_0_minus instead.")]
Notation Rminus_gt_0_lt := (
fun a b =>
proj1 (
Rlt_0_minus a b)) (
only parsing).
#[
deprecated(
since="8.19",
note="Use Rdiv_opp_l.")]
Notation Ropp_div := (
fun x y =>
Rdiv_opp_l x y) (
only parsing).
Lemma Rplus_sqr_eq_0_l_depr :
forall r1 r2,
Rsqr r1 + Rsqr r2 = 0
-> r1 = 0.
#[
deprecated(
since="8.19",
note="Use Rplus_sqr_eq_0.")]
Notation Rplus_sqr_eq_0_l :=
Rplus_sqr_eq_0_l_depr (
only parsing).
#[
deprecated(
since="8.19",
note="Use Rplus_diag.")]
Notation double := (
fun r1 =>
eq_sym (
Rplus_diag r1)) (
only parsing).
#[
deprecated(
since="8.19",
note="Use Rplus_half_diag.")]
Notation double_var := (
fun r1 =>
eq_sym (
Rplus_half_diag r1)) (
only parsing).
#[
deprecated(
since="8.19",
note="Use eq_IZR_contrapositive.")]
Notation IZR_neq := (
fun z1 z2 => (
eq_IZR_contrapositive z1 z2)) (
only parsing).
Lemma S_O_plus_INR_depr :
forall n,
INR (1
+ n)
= INR 1
+ INR n.
#[
deprecated(
since="8.19")]
Notation S_O_plus_INR :=
S_O_plus_INR_depr (
only parsing).
Lemma single_z_r_R1_depr :
forall r (
n m:
Z),
r < IZR n -> IZR n <= r + 1
-> r < IZR m -> IZR m <= r + 1
-> n = m.
#[
deprecated(
since="8.19")]
Notation single_z_r_R1 :=
single_z_r_R1_depr (
only parsing).
Lemma tech_single_z_r_R1_depr :
forall r (
n:
Z),
r < IZR n ->
IZR n <= r + 1
->
(exists s :
Z, s <> n /\ r < IZR s /\ IZR s <= r + 1
) -> False.
#[
deprecated(
since="8.19")]
Notation tech_single_z_r_R1 :=
tech_single_z_r_R1_depr (
only parsing).
Lemma Rinv_mult_simpl_depr :
forall r1 r2 r3,
r1 <> 0
-> r1 * / r2 * (r3 * / r1) = r3 * / r2.
#[
deprecated(
since="8.19")]
Notation Rinv_mult_simpl :=
Rinv_mult_simpl_depr.