End EqAllPairs.
Section AllIff.
(* The Following Are Equivalent *)
(* We introduce a specific conjunction, used to chain the consecutive *)
(* items in a circular list of implications *)
Inductive all_iff_and (P Q : Prop) : Prop := AllIffConj of P & Q.
Definition all_iff (P0 : Prop) (Ps : seq Prop) : Prop :=
(fix aux (P : Prop) (Qs : seq Prop) : Prop :=
if Qs is Q :: Qs then all_iff_and (P -> Q) (aux Q Qs)
else P -> P0 : Prop) P0 Ps.

(* Specifications: *)
Lemma all_iffLR P0 Ps : all_iff P0 Ps ->
forall m n, nth P0 (P0 :: Ps) m -> nth P0 (P0 :: Ps) n.
Lemma all_iffP P0 Ps : all_iff P0 Ps ->
forall m n, nth P0 (P0 :: Ps) m <-> nth P0 (P0 :: Ps) n.