Inductive individual_match ocd i:
meminj -> ctl -> mem -> ctl -> mem -> Prop:=
|individual_mtch_source:
(i > hb)%nat ->
forall j s1 m1 s2 m2,
match_thread_source j s1 m1 s2 m2 ->
individual_match ocd i j s1 m1 s2 m2
|individual_mtch_target:
(i < hb)%nat ->
forall j s1 m1 s2 m2,
match_thread_target j s1 m1 s2 m2 ->
individual_match ocd i j s1 m1 s2 m2
| individual_mtch_compiled:
(i = hb)%nat ->
forall cd j s1 m1 s2 m2,
ocd = Some cd ->
match_thread_compiled cd j s1 m1 s2 m2 ->
individual_match ocd i j s1 m1 s2 m2.

Lemma simulation_equivlanence:
forall s3 t s2 cd cd0,
(Smallstep.plus (Asm.step (Genv.globalenv Asm_program))
s3 t s2 \/
Smallstep.star (Asm.step (Genv.globalenv Asm_program))
s3 t s2 /\ Injorder compiler_sim cd cd0) ->
Smallstep.plus (Asm.step (Genv.globalenv Asm_program))
s3 t s2 \/
t = Events.E0 /\
s2 = s3 /\
Injorder compiler_sim cd cd0.