Proof using.
Opaque sorted.
induction l1; intros.
- apply contiguous_nil.
- destruct l1; simpl in *; find_copy_apply_lem_hyp contiguous_index_adjacent; auto.
+ apply contiguous_singleton_sufficient. intuition.
+ intuition. eapply contiguous_adjacent_sufficient; auto.
eauto using contiguous_singleton_sufficient. eapply IHl1.
* eauto using sorted_subseq, subseq_skip, subseq_refl.
* eauto using cons_contiguous_sorted.
Transparent sorted.
Qed.

(* Specifications: *)
Lemma rev_exists :
forall A (l : list A) l',
(exists l'',
l = l'' ++ l') ->
exists l'',
rev l = rev l' ++ l''.