(** Functions *)

Definition LimSup_seq (u : nat -> R) :=
  proj1_sig (ex_LimSup_seq u).Definition LimInf_seq (u : nat -> R) :=
  proj1_sig (ex_LimInf_seq u).

(* Specifications: *)
Lemma is_LimSup_seq_unique (u : nat -> R) (l : Rbar) : is_LimSup_seq u l -> LimSup_seq u = l.
Lemma is_LimInf_seq_unique (u : nat -> R) (l : Rbar) : is_LimInf_seq u l -> LimInf_seq u = l.
Lemma LimSup_InfSup_seq (u : nat -> R) : LimSup_seq u = Inf_seq (fun m => Sup_seq (fun n => u (n + m)%nat)).
Lemma LimInf_SupInf_seq (u : nat -> R) : LimInf_seq u = Sup_seq (fun m => Inf_seq (fun n => u (n + m)%nat)).
Lemma is_LimSup_LimInf_seq_le (u : nat -> R) (ls li : Rbar) : is_LimSup_seq u ls -> is_LimInf_seq u li -> Rbar_le li ls.
Lemma LimSup_LimInf_seq_le (u : nat -> R) : Rbar_le (LimInf_seq u) (LimSup_seq u).
Lemma is_LimSup_seq_const (a : R) : is_LimSup_seq (fun _ => a) a.
Lemma LimSup_seq_const (a : R) : LimSup_seq (fun _ => a) = a.
Lemma is_LimInf_seq_const (a : R) : is_LimInf_seq (fun _ => a) a.
Lemma LimInf_seq_const (a : R) : LimInf_seq (fun _ => a) = a.
Lemma LimSup_seq_opp (u : nat -> R) : LimSup_seq (fun n => - u n) = Rbar_opp (LimInf_seq u).
Lemma LimInf_seq_opp (u : nat -> R) : LimInf_seq (fun n => - u n) = Rbar_opp (LimSup_seq u).
Lemma LimSup_le (u v : nat -> R) : eventually (fun n => u n <= v n) -> Rbar_le (LimSup_seq u) (LimSup_seq v).
Lemma LimInf_le (u v : nat -> R) : eventually (fun n => u n <= v n) -> Rbar_le (LimInf_seq u) (LimInf_seq v).
Lemma is_LimSup_seq_scal_pos (a : R) (u : nat -> R) (l : Rbar) : (0 < a) -> is_LimSup_seq u l -> is_LimSup_seq (fun n => a * u n) (Rbar_mult a l).
Lemma is_LimInf_seq_scal_pos (a : R) (u : nat -> R) (l : Rbar) : (0 < a) -> is_LimInf_seq u l -> is_LimInf_seq (fun n => a * u n) (Rbar_mult a l).
Lemma is_LimSup_seq_ind_1 (u : nat -> R) (l : Rbar) : is_LimSup_seq u l <-> is_LimSup_seq (fun n => u (S n)) l.
Lemma is_LimInf_seq_ind_1 (u : nat -> R) (l : Rbar) : is_LimInf_seq u l <-> is_LimInf_seq (fun n => u (S n)) l.
Lemma is_LimSup_seq_ind_k (u : nat -> R) (k : nat) (l : Rbar) : is_LimSup_seq u l <-> is_LimSup_seq (fun n => u (n + k)%nat) l.
Lemma is_LimInf_seq_ind_k (u : nat -> R) (k : nat) (l : Rbar) : is_LimInf_seq u l <-> is_LimInf_seq (fun n => u (n + k)%nat) l.