  The proposed framework provides a general model of concurrent imperative
programming. Programs are modeled as formal languages and concurrency as an
interleaving (or shuffle) operator. This yields a simple and elegant algebra of
programs. The framework supports the views program logic by Dinsdale-Young and
others, which generalizes various type systems and separation logic approaches
to program correctness. It also validates familiar operational calculi in
small-step and big-step flavours. The consistency of the program logic with
respect to the operational rules is established directly and does not use
induction on derivations. In fact the whole framework uses only straightforward
mathematics. Parametric in states, views and basic commands, it can be
instantiated to a variety of concrete languages and settings.
