Module MyNat.
End MyNat.
Open Scope R_scope.
(** * Integers *)
(** Integer part in Z *)
Definition floor x := proj1_sig (floor_ex x).
Definition floor1 x := proj1_sig (floor1_ex x).
(** Interger part in nat *)
Definition nfloor x pr := proj1_sig (nfloor_ex x pr).
Definition nfloor1 x pr := proj1_sig (nfloor1_ex x pr).
(** More theorems about INR *)
Fixpoint pow2 (n : nat) : nat :=
match n with
| O => 1%nat
| S n => (2 * pow2 n)%nat
end.
(** * Rinv *)
(** * Rdiv *)
(** Rewritings *)
(** Order *)
(** * Rmult *)
(** * Rminus *)
(** Rewritings *)
(** Order *)
(** * Rplus *)
(** Sums *)
(** * Rmin and Rmax *)
(** Rewritings *)
intros x y z; unfold Rmin.
destruct (Rle_dec y z);
destruct (Rle_dec x y);
destruct (Rle_dec x z);
destruct (Rle_dec y z) ; try intuition.
contradict n.
apply Rle_trans with y ; auto.
contradict r.
apply Rlt_not_le, Rlt_trans with y ; apply Rnot_le_lt ; auto.
Qed.
intros x y z; unfold Rmax.
destruct (Rle_dec y z);
destruct (Rle_dec x y);
destruct (Rle_dec x z);
destruct (Rle_dec y z) ; try intuition.
contradict n.
apply Rle_trans with y ; auto.
contradict r.
apply Rlt_not_le, Rlt_trans with y ; apply Rnot_le_lt ; auto.
Qed.
(** Order *)
(** * Rabs *)
(** Rewritings *)
(** Order *)
(** * Req *)
(** * posreal *)
Definition pos_div_2 (eps : posreal) := mkposreal _ (is_pos_div_2 eps).
(** * The sign function *)
Definition sign (x : R) :=
match total_order_T 0 x with
| inleft (left _) => 1
| inleft (right _) => 0
| inright _ => -1
end.
(** * ssreflect.seq *)
(** Finite subdivision *)
Definition belast {T : Type} (s : seq T) :=
match s with
| [::] => [::]
| h :: s => belast h s
end.
(** * Operations on the Riemann integral *)
(** Extensionality *)
(** Constant function *)
(** Addition *)
(** Subtraction *)
(** Opposite *)
(** Multiplication by a scalar *)
(** * Natural logarithm *)
intro Hx ;
induction n as [ | n IH].
rewrite pow_O ln_1 ; simpl ; ring.
rewrite S_INR ; simpl ; rewrite ln_mult ; try intuition.
rewrite IH ; ring.
Qed.

Lemma ln_le x y : 0 < x -> x <= y -> ln x <= ln y.