Arguments fpathP {T f x p}.
Arguments loopingP {T f x n}.
Arguments trajectP {T f x n y}.
Prenex Implicits traject.
Section UniqCycle.
Variables (n0 : nat) (T : eqType) (e : rel T) (p : seq T).
Hypothesis Up : uniq p.

(* Specifications: *)
Lemma prev_next : cancel (next p) (prev p).
Lemma next_prev : cancel (prev p) (next p).
Lemma cycle_next : fcycle (next p) p.
Lemma cycle_prev : cycle (fun x y => x == prev p y) p.
Lemma cycle_from_next : (forall x, x \in p -> e x (next p x)) -> cycle e p.
Lemma cycle_from_prev : (forall x, x \in p -> e (prev p x) x) -> cycle e p.
Lemma next_rot : next (rot n0 p) =1 next p.
Lemma prev_rot : prev (rot n0 p) =1 prev p.
End UniqCycle.