In this entry we formalise a framework for process composition based on actions that are specified by their input and output resources. We verify their correctness by translating compositions of process into deductions of intuitionistic linear logic. As part of the verification we derive simple conditions on the compositions which ensure well-formedness of the corresponding deduction.
We describe an earlier version of this formalisation in our article Linear Resources in Isabelle/HOL, which also includes a formalisation of manufacturing processes in the simulation game Factorio.
This is the development version of our Archive of Formal Proofs entry. It contains updates, work in progress and examples.
This formalisation consists of the following sessions:
ProcessCompositionis the base theory of linear resources and process compositions.ProcessComposition_ILLtranslates concepts from the base theory into intuitionistic linear logic to demonstrate linearity of valid process compositions.ProcessComposition_Factoriois a basic formalisation of manufacturing in the simulation game Factorio as an example use of process compositions.ProcessComposition_Markingdemonstrates resource and process refinement by formalising two views of course work marking.ProcessComposition_Assemblydemonstrates the recursive construction of process composition based on enterprise planning data, including verifying their validity in all cases.ProcessComposition_PortGraphconstructs port graphs from process compositions, emphasising the view of them as representing connections between actions and prove a graphical variant of linearity.ProcessComposition_Categoryuses process port graphs to formalise the (symmetric monoidal) category of resources and process compositions.
This formalisation is tested with Isabelle 2024, but should work with most modern versions.
Dependencies on sessions outside this repository and the Isabelle distribution are as follows:
- The
ProcessComposition_ILLsession relies on theILLentry, which is available either on the AFP or in its own development repository. - The
ProcessComposition_PortGraphsession relies on thePortGraphandPortGraph_Exportsessions, which are available in their own repository. - The
ProcessComposition_Categorysession relies on theSymmetricCategorysessions, which is available in its own repository and is itself an extension of theMonoidalCategoryentry available from the AFP.
To use this formalisation, add it as a component to your Isabelle installation:
isabelle components -u PATH/TO/REPO
If you have a local copy of the AFP as a component, disable the corresponding entry to avoid a clash.
You can do this by removing it from the AFP ROOTS file, or by renaming either entry if you want to use both versions.