Definition the_ge := Globalenvs.Genv.globalenv the_program.Instance X86Sem: Semantics:=
      { semG:= Asm.genv;
         semC:= Asm.state;
         semSem:= Asm_EvSem the_ge Hsafe;
         the_ge := the_ge
      }.Definition AsmHybridMachine    := @dryCoarseMach X86Sem.Definition AsmConcurSem    := HybridMachineSig.HybridMachineSig.ConcurMachineSemantics
                                  (HybridMachine:= AsmHybridMachine).Definition AsmFineHybridMachine    := @dryFineMach X86Sem.Definition AsmFineConcurSem    := HybridMachineSig.HybridMachineSig.ConcurMachineSemantics
                                  (HybridMachine:= AsmFineHybridMachine).(** The initial state 
      There are three, but all should be equivalent. *)
  Definition Asm_initial_state := tpc_init(asmSem:=X86Sem).Definition Asm_initial_state_fine := tpf_init(asmSem:=X86Sem).Definition Asm_initial_state_bare := bare_init(asmSem:=X86Sem).Notation the_ge := (@the_ge the_program).Instance X86Sem: Semantics := @X86Sem the_program Hsafe.

(* Specifications: *)
Lemma corestep_det: corestep_fun semSem.
Lemma mem_step_decay: forall m m', mem_step m m' -> decay m m'.
Lemma exec_load_same_mem: forall ch m a rs rd rs' m', exec_load the_ge ch m a rs rd = Next rs' m' -> m=m'.
Lemma exec_store_obeys_cur_write: forall ch m a rs rs0 d rs' m', exec_store the_ge ch m a rs rs0 d = Next rs' m' -> forall b ofs, Memory.Mem.valid_block m b -> ~ Memory.Mem.perm m b ofs Memtype.Cur Memtype.Writable -> ZMap.get ofs (PMap.get b (Memory.Mem.mem_contents m)) = ZMap.get ofs (PMap.get b (Memory.Mem.mem_contents m')).
Lemma mem_step_obeys_cur_write: forall m b ofs m', Memory.Mem.valid_block m b -> ~ Memory.Mem.perm m b ofs Memtype.Cur Memtype.Writable -> mem_step m m' -> ZMap.get ofs (PMap.get b (Memory.Mem.mem_contents m)) = ZMap.get ofs (PMap.get b (Memory.Mem.mem_contents m')).
Lemma corestep_decay: forall c c' m m', corestep semSem c m c' m' -> decay m m'.
Lemma corestep_nextblock : forall c m c' m', corestep semSem c m c' m' -> (Memory.Mem.nextblock m <= Memory.Mem.nextblock m')%positive.
Lemma at_external_halted_excl: forall q m, semantics.at_external (@semSem X86Sem) q m = None \/ forall i, ~ halted semSem q i.
Lemma initial_core_det: forall i m v args c c' m' m'', initial_core semSem i m c m' v args -> initial_core semSem i m c' m'' v args -> c = c' /\ m' = m''.
Lemma initial_core_decay : forall (i : nat) (v : Values.val) (args : list Values.val) (c : semC) (m m' : mem), initial_core semSem i m c m' v args -> strong_decay m m'.
Lemma initial_core_nextblock : forall (i : nat) (v : Values.val) (args : list Values.val) (c : semC) (m m' : mem), initial_core semSem i m c m' v args -> (Mem.nextblock m <= Mem.nextblock m')%positive.