Oh, I think I like P-systems.
Objects are “consumed by rules” (akin to anonymous lambda variables/functions) and membranes (akin to categories) can be dissolved as needed.
It’s MAXIMAL, not minimal. Yes I like this a lot.
At each step of a computation an object may only be used once, as they are consumed by rules when applied. The method of applying a rule within a membrane is as follows:
Assign symbols from a membrane’s content to the rule’s inputs
If all inputs are satisfied, remove all assigned symbols from membrane
Create output symbols and hold until all rule assignment, for all membranes, has taken place.
Add output symbols to targeted membranes.
Dissolve membranes as necessary
Outputs are not passed immediately into membranes because this would contravene the maximally parallel nature of rule application, instead they are distributed after all possible rules have been applied.