Definition ListToCP {T : Type} (l : list T) (Default : T) : cartesianPower T (length l).Fixpoint circPermNCP {T:Type} {m:nat} (n : nat) (cp : cartesianPower T (S (S m))) :=
  match n with
  | 0 => cp
  | S p => circPermNCP p (consTailCP (tailCP cp) (headCP cp))
  end.

Lemma ListToCPTl {T : Type} : forall (a a0 : T) l (Ha0l : (S (length l)) = length (a0 :: l)) Haa0l Default, tailCPbis (length (a :: a0 :: l)) (length (a :: l)) (ListToCP (a :: a0 :: l) Default) Haa0l Ha0l = ListToCP (a0 :: l) Default.