proposition: Lemma eva_seval n s t : eva n s = Some t -> seval n s t.
proof: Proof. revert s t. induction n; intros s t H; destruct s; try now inv H; eauto using seval. destruct (eva n s1) eqn:Hs1; try now (simpl in H; rewrite Hs1 in H; inv H). destruct t0; try now (simpl in H; rewrite Hs1 in H; inv H). destruct (eva n s2) eqn:Hs2; try now (simpl in H; rewrite Hs1, Hs2 in H; inv H). destruct (eva_lam Hs2); subst t1. econstructor; eauto. eapply IHn. simpl in H. rewrite Hs1, Hs2 in H. eassumption. Qed.
imports: Coq.Logic.ConstructiveEpsilon