Ltac UseParsingLemmas :=
match goal with
| [ H: extract_moves nil _ = (_, _) |- _ ] =>
destruct (extract_moves_sound _ _ _ H); clear H; subst; UseParsingLemmas
| [ H: extract_moves_ext nil _ = (_, _) |- _ ] =>
destruct (extract_moves_ext_sound _ _ _ H); clear H; subst; UseParsingLemmas
| [ H: check_succ _ _ = true |- _ ] =>
try (discriminate H);
destruct (check_succ_sound _ _ H); clear H; subst; UseParsingLemmas
| _ => idtac
end.

Lemma matching_instr_block:
forall f1 f2 pc bsh i,
(pair_codes f1 f2)!pc = Some bsh ->
(RTL.fn_code f1)!pc = Some i ->
exists b, (LTL.fn_code f2)!pc = Some b /\ expand_block_shape bsh i b.