(** Let asm_program be the result of linking the Asm units. *)
Let asm_program: Asm.program := proj1_sig compiled_linking_succeeds.
Let compiled_linking: link_list asm_units = Some asm_program := proj2_sig compiled_linking_succeeds.
(** Then, [asm_program] preserves the semantics and the specifications of [c_program], in the following sense. First, every behavior of [asm_program] improves upon one of the possible behaviors of [c_program]. *)

(* Specifications: *)
Theorem separate_transf_c_program_preservation:
forall beh,
program_behaves (Asm.semantics asm_program) beh ->
exists beh', program_behaves (Csem.semantics c_program) beh' /\ behavior_improves beh' beh.