Definition halt_match c m d tm :=
exists rv trv,
halted source c = Some rv
/\ halted target d = Some trv
/\ P rv m
/\ P trv tm.

Lemma corestep_ord':
forall cd j,
match_state cd j c m d tm ->
halt_match c m d tm
\/ (exists cd' j' c' m',
corestep_plus source geS c m c' m'
/\ ((match_state cd' j' c' m' d tm /\ halt_match c' m' d tm)
\/ (exists d' tm',
corestep_plus target geT d tm d' tm'
/\ match_state cd' j' c' m' d' tm'))).