Section EXPAND_INSTR.
Variable fe: funenv.
Hypothesis FE: fenv_agree fe.
Variable rec: forall fe', (size_fenv fe' < size_fenv fe)%nat -> context -> function -> mon unit.
Hypothesis rec_unchanged:
forall fe' (L: (size_fenv fe' < size_fenv fe)%nat) ctx f s x s' i pc,
rec fe' L ctx f s = R x s' i ->
Ple ctx.(dpc) s.(st_nextnode) ->
Plt pc ctx.(dpc) ->
s'.(st_code)!pc = s.(st_code)!pc.
Remark set_instr_other:
forall pc instr s x s' i pc',
set_instr pc instr s = R x s' i ->
pc' <> pc ->
s'.(st_code)!pc' = s.(st_code)!pc'.
Remark set_instr_same:
forall pc instr s x s' i c,
set_instr pc instr s = R x s' i ->
c!(pc) = s'.(st_code)!pc ->
c!(pc) = Some instr.

Lemma iter_expand_instr_unchanged:
forall ctx pc l s x s' i,
mlist_iter2 (expand_instr fe rec ctx) l s = R x s' i ->
Ple ctx.(dpc) s.(st_nextnode) ->
Plt pc s.(st_nextnode) ->
~In pc (List.map (spc ctx) (List.map (@fst _ _) l)) ->
list_norepet (List.map (@fst _ _) l) ->
s'.(st_code)!pc = s.(st_code)!pc.