Module Import PosSort := Sort PosOrder.Definition OCPAux {n : nat} (cp : cartesianPower positive (S (S n))) := (PosSort.sort (CPToList cp)).

(* Specifications: *)
Lemma OCPALengthOK {n : nat} : forall (cp : cartesianPower positive (S (S n))), (length (OCPAux cp)) = (S (S n)).
Lemma OCPSortedTl : forall (l : list positive), StronglySorted (fun x x0 : positive => is_true (x <=? x0)%positive) l -> StronglySorted (fun x x0 : positive => is_true (x <=? x0)%positive) (tl l).
Lemma PermSorted : forall (l l' : list positive), Permutation.Permutation l l' -> StronglySorted (fun x x0 : positive => is_true (x <=? x0)%positive) l -> StronglySorted (fun x x0 : positive => is_true (x <=? x0)%positive) l' -> l = l'.