Notation Forall := Forall.

(* Specifications: *)
Lemma Forall_inv : forall (a:A) l, Forall (a :: l) -> P a.
Theorem Forall_inv_tail : forall (a:A) l, Forall (a :: l) -> Forall l.
Lemma Forall_nil_iff : Forall [] <-> True.
Lemma Forall_cons_iff : forall (a:A) l, Forall (a :: l) <-> P a /\ Forall l.
Lemma Forall_forall (l:list A): Forall l <-> (forall x, In x l -> P x).
Lemma Forall_nth l : Forall l <-> forall i d, i < length l -> P (nth i l d).
Lemma Forall_app l1 l2 : Forall (l1 ++ l2) <-> Forall l1 /\ Forall l2.
Lemma Forall_elt a l1 l2 : Forall (l1 ++ a :: l2) -> P a.
Lemma Forall_rev l : Forall l -> Forall (rev l).
Lemma Forall_rect : forall (Q : list A -> Type), Q [] -> (forall b l, P b -> Q (b :: l)) -> forall l, Forall l -> Q l.
Lemma Forall_dec : (forall x:A, {P x} + { ~ P x }) -> forall l:list A, {Forall l} + {~ Forall l}.
Lemma Forall_fold_right l : Forall l <-> fold_right (fun x => and (P x)) True l.
Lemma incl_Forall l1 l2 : incl l2 l1 -> Forall l1 -> Forall l2.
Lemma map_ext_Forall B : forall (f g : A -> B) l, Forall (fun x => f x = g x) l -> map f l = map g l.
Theorem Exists_impl : forall (P Q : A -> Prop), (forall a : A, P a -> Q a) -> forall l, Exists P l -> Exists Q l.
Lemma Exists_or : forall (P Q : A -> Prop) l, Exists P l \/ Exists Q l -> Exists (fun x => P x \/ Q x) l.
Lemma Exists_or_inv : forall (P Q : A -> Prop) l, Exists (fun x => P x \/ Q x) l -> Exists P l \/ Exists Q l.
Lemma Forall_impl : forall (P Q : A -> Prop), (forall a, P a -> Q a) -> forall l, Forall P l -> Forall Q l.
Lemma Forall_and : forall (P Q : A -> Prop) l, Forall P l -> Forall Q l -> Forall (fun x => P x /\ Q x) l.
Lemma Forall_and_inv : forall (P Q : A -> Prop) l, Forall (fun x => P x /\ Q x) l -> Forall P l /\ Forall Q l.
Lemma Forall_Exists_neg (P:A->Prop)(l:list A) : Forall (fun x => ~ P x) l <-> ~(Exists P l).
Lemma Exists_Forall_neg (P:A->Prop)(l:list A) : (forall x, P x \/ ~P x) -> Exists (fun x => ~ P x) l <-> ~(Forall P l).
Lemma neg_Forall_Exists_neg (P:A->Prop) (l:list A) : (forall x:A, {P x} + { ~ P x }) -> ~ Forall P l -> Exists (fun x => ~ P x) l.
Lemma Forall_Exists_dec (P:A->Prop) : (forall x:A, {P x} + { ~ P x }) -> forall l:list A, {Forall P l} + {Exists (fun x => ~ P x) l}.
Lemma incl_Forall_in_iff l l' : incl l l' <-> Forall (fun x => In x l') l.