proposition: Lemma evalDet_steps_eof_inv_h : forall (A : Set)(x y : comp_state A), evalDet_steps x y -> forall (c : Comp A) s, x = (cs_more c s) -> y = (@cs_eof A) -> exists c'' s'', evalDet_steps (cs_more c s) (cs_more c'' s'') /\ evalDet_step c'' s'' = (@cs_eof A).
proof: Proof. induction 1; intuition; subst. discriminate. inversion H1; clear H1; subst. inversion H0; clear H0; subst. econstructor. econstructor. intuition. destruct (IHevalDet_steps c s); eauto. destruct H0; intuition. exists x. exists x0. intuition. econstructor. rewrite <- H. eauto. rewrite <- H. trivial. Qed.
imports: FCF.Comp FCF.Blist FCF.Fold Permutation micromega.Lia