Section PRESERVATION.
Variable prog: Csyntax.program.
Variable tprog: Clight.program.
Hypothesis TRANSL: match_prog prog tprog.
Let ge := Csem.globalenv prog.
Let tge := Clight.globalenv tprog.
(** Invariance properties. *)
Proof (Genv.find_symbol_match (proj1 TRANSL)).
Proof (Genv.senv_match (proj1 TRANSL)).
(** Properties of smart constructors. *)
(** Translation of simple expressions. *)

Lemma tr_simple_nil:
(forall le dst r sl a tmps, tr_expr le dst r sl a tmps ->
dst = For_val \/ dst = For_effects -> simple r = true -> sl = nil)
/\(forall le rl sl al tmps, tr_exprlist le rl sl al tmps ->
simplelist rl = true -> sl = nil).