Proof using.
induction xs; intros; simpl; intuition.
repeat break_match; subst; simpl; auto using f_equal.
Qed.

(* Specifications: *)
Lemma exported_execute_log' :
forall env_i env_o l es tr st,
(forall e, In e l -> env_i (eClient e, eId e) = Some (eInput e)) ->
(forall xs ys e tr' st' o o0 st'',
l = xs ++ e :: ys ->
execute_log' xs st tr = (tr', st') ->
handler (eInput e) st' = (o, st'') ->
env_o (eClient e, eId e) = Some o0 ->
o = o0) ->
execute_log es = (tr, st) ->
exported env_i env_o (log_to_IR env_o es) tr ->
exported env_i env_o (log_to_IR env_o (es ++ l)) (fst (execute_log' l st tr)).