Definition OCP {n : nat} (cp : cartesianPower positive (S (S n))) : cartesianPower positive (S (S n)).

(* Specifications: *)
Lemma OCPSortedAux {n : nat} : forall (cp : cartesianPower positive (S (S n))), StronglySorted (fun x x0 : positive => is_true (x <=? x0)%positive) (CPToList (OCP cp)).
Lemma OCPPerm {n : nat} : forall (cp : cartesianPower positive (S (S n))), Permutation.Permutation (CPToList cp) (CPToList (OCP cp)).
Lemma CPLOCPTlOK {n : nat} : forall (cp : cartesianPower positive (S (S (S n)))), headCP cp = headCP (OCP cp) -> CPToList (OCP (tailCP cp)) = CPToList (tailCP (OCP cp)).
Lemma OCPTlOK {n : nat} : forall (cp : cartesianPower positive (S (S (S n)))), headCP cp = headCP (OCP cp) -> OCP (tailCP cp) = tailCP (OCP cp).
Lemma InCPOCP {n : nat} : forall p (cp : cartesianPower positive (S (S n))), InCP p cp <-> InCP p (OCP cp).