Start to think about proving new CFG unambiguous.
Some progress with unambiguity proof.
make a start on supporting modules in the compiler
get test harness building with new intlang/compiler

but the tests are failing
rework definition of compile_fake_exp, and get tests building

the mapping from identifiers to locations on the stack is (of course)
more complicated now that identifiers might be long. not sure if the
current definition will be nice to prove something about...
start updating intLangExtraTheory for new modules intLang

prove Cevaluate_vlabs
more work on intLangExtraTheory

up to Cevaluate_syneq
prove Cevaluate_syneq keeping the menv fixed

I'm not sure if this will be sufficiently strong. There's probably
another result available that allows you to substitute a syneq menv, but
I hope I don't need it since the proof will be harder...
finish updating intLangExtraTheory
update pmatchTheory for new intLang
start on updating toIntLangProofsTheory

up to exp_to_Cexp_thm1, have a possibly correct updated statement
work on updating exp_to_Cexp_thm1

proved up to end of App case
finish updating toIntLangProofsTheory

(again hoping that leaving the menv constant is sufficient)
start on updating toBytecodeProofsTheory for modules
updates for new Cenv_bs, rethinking its definition

need to include the module environment in the invariant saying the
semantic environment matches the machine environment.
however, closure bodies are compiled with respect to a "zero" sized
stack, since before they didn't ever look below the environment and
arguments... now might need another parameter indicating the size of the
real stack below, against which module variables should be looked up...

the implementation may need to change for this too...
add LoadRev bytecode instruction

for loading values indexed from the bottom of the stack. this should
make it possible to refer to previously declared (e.g. module) variables
from within closure bodies (where the size of the stack above the last
declaration is unknown).
make compiler use LoadRev for previously declared vars
move lookup_ct back to toBytecodeProofsScript.sml, and add case for CTDec
work on updating toBytecodeProofs

but probably need to statically ensure everything in the menv is a CTDec
(i.e. only store the number, not the whole ctbind) since Cenv_bs should
say that the menv is valid no matter what sz is.
make the compiler menv implicitly all CTDecs