intros.
destruct (Compare_dec.le_ge_dec (length (posToPathAux y))
(length (posToPathAux x))).
+ apply (PosToPathPrefixFreeAux H l).
+ apply prefixFreeCommutative.
apply (@PosToPathPrefixFreeAux y x).
- unfold not in *; intros; exfalso; auto.
- auto.
Qed.
Function rangeNat (p : nat) : list nat :=
match p with
| O => []
| S n' => p :: (rangeNat n')
end.
Definition rangePos (p : positive) : list positive :=
map Pos.of_nat (rangeNat (Pos.to_nat p)).

(* Specifications: *)
Lemma ltInRange : forall m n, le n m -> n <> O -> In n (rangeNat m).
induction m; intros.