The meaning and mathematical consequences of linearity (managing without a presumed ability to copy) are studied for a path-based model of processes which is also a model of affine-linear logic. This connection yields an affine-linear language for processes, automatically respecting open-map bisimulation, in which a range of process operations can be expressed. An operational semantics is provided for the tensor fragment of the language. Different ways to make assemblies of processes lead to different choices of exponential, some of which respect bisimulation.
Path-based models of processesIn distributed computation it can be hard or impossible for a process to copy a process, while it is generally easy for a process to ignore another process. For this reason an operation on processes associated with distributed computation often has the following property: a computation path of the process arising from the application of the operation to an input process has resulted from at most one computation path of the input process. As we will see, this property expresses that the operation is an affine linear map within a model of linear logic, a fact which carries many consequences.This article presents a model of processes based on computation paths and so can make precise the sense in which many process operations are associated with linear maps, investigates the consequences of linearity for the important equivalence of bisimulation, and delineates the boundaries of linearity with respect to one, fairly broad, mathematical model, in which processes are represented as presheaves. This data, what paths are present and how they restrict to smaller paths, is precisely that caught in a presheaf over a category in which the objects are path shapes and the maps express how one path shape can extend to another. In the category of all such presheaves we can view the tree as a colimit of its paths-another kind of "collection" of its paths.To illustrate the idea, suppose that actions are drawn from some alphabet L, and consider processes whose computation paths have the shape of strings of actions, so members of L * . The substring ordering ≤ makes L * a partial order, and so a category with an arrow from s to t precisely when s ≤ t. A presheaf over L * is a functor from the opposite category (L * ) op , where all the arrows are reversed, to the category of sets and functions Set. When thinking of a presheaf X as representing a process, for a string s, the set X(s) is the set of computation paths of shape s that the process can perform, and, when s ≤ t, the function X(s, t) : X(t) → X(s) tells how paths of shape t restrict to subpaths of shape s.Suppose that we replace the category of sets used in the definition of presheaves by the simple subcategory 2, consisting of the empty set, ∅, and the singleton set, 1, with the only non-identity map being ∅ ⊆ 1. A functor X from (L * ) op to 2 is the same as a monotonic function from the reverse order (L * ) op to the order 2, so that if s ≤ t then X(t) ≤ X(s). When thinking of...