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 circPermNConsOK {T:Type} {n:nat} : forall (cp : cartesianPower T (S n)) (t1 t2 : T), circPermNCP (S n) (consTailCP (consTailCP cp t1) t2) = consHeadCP t1 (consHeadCP t2 cp).