Definition INR {R : ConstructiveReals} (n : nat) : CRcarrier R
:= CR_of_Q R (Z.of_nat n # 1).

(* Specifications: *)
Lemma sum_const : forall {R : ConstructiveReals} (a : CRcarrier R) (n : nat),
CRsum (fun _ => a) n == a * INR (S n).
Lemma multiTriangleIneg : forall {R : ConstructiveReals} (u : nat -> CRcarrier R) (n : nat),
CRabs R (CRsum u n) <= CRsum (fun k => CRabs R (u k)) n.
Lemma sum_assoc : forall {R : ConstructiveReals} (u : nat -> CRcarrier R) (n p : nat),
CRsum u (S n + p)
== CRsum u n + CRsum (fun k => u (S n + k)%nat) p.
Lemma sum_Rle : forall {R : ConstructiveReals} (un vn : nat -> CRcarrier R) (n : nat),
(forall k, le k n -> un k <= vn k)
-> CRsum un n <= CRsum vn n.
Lemma Abs_sum_maj : forall {R : ConstructiveReals} (un vn : nat -> CRcarrier R),
(forall n:nat, CRabs R (un n) <= (vn n))
-> forall n p:nat, (CRabs R (CRsum un n - CRsum un p) <=
CRsum vn (Init.Nat.max n p) - CRsum vn (Init.Nat.min n p)).
Lemma cond_pos_sum : forall {R : ConstructiveReals} (un : nat -> CRcarrier R) (n : nat),
(forall k, 0 <= un k)
-> 0 <= CRsum un n.
Lemma pos_sum_more : forall {R : ConstructiveReals} (u : nat -> CRcarrier R)
(n p : nat),
(forall k:nat, 0 <= u k)
-> le n p -> CRsum u n <= CRsum u p.
Lemma sum_opp : forall {R : ConstructiveReals} (un : nat -> CRcarrier R) (n : nat),
CRsum (fun k => - un k) n == - CRsum un n.
Lemma sum_scale : forall {R : ConstructiveReals} (u : nat -> CRcarrier R) (a : CRcarrier R) (n : nat),
CRsum (fun k : nat => u k * a) n == CRsum u n * a.
Lemma sum_plus : forall {R : ConstructiveReals} (u v : nat -> CRcarrier R) (n : nat),
CRsum (fun n0 : nat => u n0 + v n0) n == CRsum u n + CRsum v n.
Lemma decomp_sum :
forall {R : ConstructiveReals} (An:nat -> CRcarrier R) (N:nat),
(0 < N)%nat ->
CRsum An N == An 0%nat + CRsum (fun i:nat => An (S i)) (pred N).
Lemma reverse_sum : forall {R : ConstructiveReals} (u : nat -> CRcarrier R) (n : nat),
CRsum u n == CRsum (fun k => u (n-k)%nat) n.
Lemma Rplus_le_pos : forall {R : ConstructiveReals} (a b : CRcarrier R),
0 <= b -> a <= a + b.
Lemma selectOneInSum : forall {R : ConstructiveReals} (u : nat -> CRcarrier R) (n i : nat),
le i n
-> (forall k:nat, 0 <= u k)
-> u i <= CRsum u n.
Lemma splitSum : forall {R : ConstructiveReals} (un : nat -> CRcarrier R)
(filter : nat -> bool) (n : nat),
CRsum un n
== CRsum (fun i => if filter i then un i else 0) n
+ CRsum (fun i => if filter i then 0 else un i) n.