proposition: Theorem ceval_deterministic: forall c st st1 st2, c / st \\ st1 -> c / st \\ st2 -> st1 = st2.
proof: Proof. intros c st st1 st2 E1 E2; generalize dependent st2; induction E1; intros st2 E2; inv E2. - reflexivity. - reflexivity. - assert (st' = st'0) as EQ1. { apply IHE1_1; assumption. } subst st'0. apply IHE1_2. assumption. - apply IHE1. assumption. - rewrite H in H5. inversion H5. - rewrite H in H5. inversion H5. - apply IHE1. assumption. - reflexivity. - rewrite H in H2. inversion H2. - rewrite H in H4. inversion H4. - assert (st' = st'0) as EQ1. { apply IHE1_1; assumption. } subst st'0. apply IHE1_2. assumption. Qed.
imports: Coq.omega.Omega Maps Imp