intro.
eapply (list_skipn_strong_ind s); intuition.
destruct (H0 nil).
destruct H1.
destruct H1.
destruct H.
intuition.
exists (cs_done x x0).
econstructor.
trivial.
assert (x1 = x).
eapply evalDet_steps_nil_eq; eauto.
subst.
trivial.
exists (@cs_eof A).
econstructor.
trivial.
destruct (H1 x).
destruct H2. destruct H2.
destruct H0; intuition.
destruct (evalDet_steps_skipn _ H2 H3); subst.
econstructor.
econstructor; eauto.
destruct H0; intuition; subst.
case_eq (P x0); intuition.
econstructor.
econstructor; eauto.
edestruct H; eauto.
econstructor.
eapply evalDet_repeat_steps_step.
eapply H2.
trivial.
eauto.
econstructor.
eapply evalDet_repeat_steps_eof; eauto.
Qed.

Lemma evalDet_repeat_steps_done_inv_h : forall (A : Set)(P : A -> bool) x y,
evalDet_repeat_steps P x y ->
forall c s,
x = (cs_more c s) ->
evalDet_steps (cs_more (Repeat c P) s) y.