(** Safety of the FineConc Machine initiliazed with X86 semantics *)
From mathcomp.ssreflect Require Import ssreflect ssrbool ssrnat ssrfun eqtype seq fintype finfun.
Module X86FineSafe.
ValObsEq ValueWD MemoryWD
X86Inj X86Context event_semantics.
Section FineConcSafe.
Context {the_program : Asm.program}
{Hsafe: Asm_core.safe_genv (@the_ge the_program)}.
Instance X86Sem : Semantics := @X86Sem the_program Hsafe.
Instance X86Inj : CoreInjections.CoreInj := X86Inj the_program Hsafe.
(** The initial memory is well-defined*)
Context {init_mem : option Memory.mem}
{init_mem_wd: forall m, init_mem = Some m -> valid_mem m}.

(** The global env is well-defined *)
Lemma the_ge_wd:
forall m,
init_mem = Some m ->
ge_wd (id_ren m) the_ge.