inFst
and inSnd
,
intended to provide
separation by types, have a very small role in the proof.
Eliminating them would simplify the model somewhat and not significantly
complicate the proof.
AllGoodAlgs
depends on the memory
allocation function always returning address zero, but it would be
easy to change the protected memory monad to implement relative
addressing, thus preserving the separation property even when
packets are store at arbitrary locations in memory. This would
make it possible to prove separation for a more realistic,
concurrent chip model.
AllGoodAlgs
and CondSeparation
have the same overall structure (bisimulation), so it should be possible
to simplify the proofs by factoring out some reusable parts.