(************************************************************************)
(*         *   The Coq Proof Assistant / The Coq Development Team       *)
(*  v      *   INRIA, CNRS and contributors - Copyright 1999-2018       *)
(* <O___,, *       (see CREDITS file for the list of authors)           *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)
Local Open Scope R_scope.
(********************************)
(** * Definition of exponential *)
(********************************)
Definition exp_in (x l:R) : Prop :=
infinite_sum (fun i:nat => / INR (fact i) * x ^ i) l.
(*****************************************)
(** * Definition of hyperbolic functions *)
(*****************************************)
Definition cosh (x:R) : R := (exp x + exp (- x)) / 2.
Definition sinh (x:R) : R := (exp x - exp (- x)) / 2.
Definition tanh (x:R) : R := sinh x / cosh x.
Definition cos_n (n:nat) : R := (-1) ^ n / INR (fact (2 * n)).
(**********)
Definition cos_in (x l:R) : Prop :=
infinite_sum (fun i:nat => cos_n i * x ^ i) l.
(** Definition of cosinus *)
Definition cos (x:R) : R := let (a,_) := exist_cos (Rsqr x) in a.
Definition sin_n (n:nat) : R := (-1) ^ n / INR (fact (2 * n + 1)).
(**********)
Definition sin_in (x l:R) : Prop :=
infinite_sum (fun i:nat => sin_n i * x ^ i) l.

Lemma exist_cos0 : { l:R | cos_in 0 l }.