Petri网是一种系统的数学模型,在该系统中,进程在被激活时消耗一些资源并产生另一些资源。它们可以用来对商业流程、化学反应、基因激活或并行计算等许多方面进行建模。定义Petri网的范畴模型有不同的方法,如Petri网是幺半群、有边界网、开Petri网等。
这是2020年应用范畴论的第一篇文章,介绍了Carolyn Brown和Doug Gurr在基于Valeria de Paiva的辩证范畴的论文“Petri网的范畴线性框架”(A Categical LinearFramework For Petri Nets)中提出的方法。这种方法的有趣之处在于,它结合了线性逻辑和范畴论来对组成Petri网的不同方式进行建模。
基本Petri网是范畴N𝒞\mathbf{N}\mathcal{C}的对象,其态射可以表示它们的模拟或求精。辩证法范畴G𝒞\Mathbf{G}\Mathcal{C}的线性逻辑联结词的解释可以提升到范畴N𝒞\Mathbf{N}\Mathcal{C},并用于定义复合网。每个联结词基于其含义不直观的线性逻辑,对相应的复合网给出不同的解释。
本文涉及的范围更广,它包括标记、任意Petri网范畴的定义以及不同于集合\𝒞{集合}的一些集合\数学{C}的N-𝒞\mathbf{N}\mathcal{C}的描述。我们将集中讨论用逻辑联结词组合Petri网的问题,给出每个逻辑联结词的具体实例,并试图对它们在Petri网上的相应结构进行解释。
我们首先介绍Petri网和基本Petri网,这将是本文的重点。
Petri网描述了这样的系统,在该系统中,当某些进程(称为事件)的所有前提条件都至少标有由每个箭头的权重指示的令牌量时,就可以触发这些进程。赛事鸣枪后,该赛事所有后置条件的分数将按每支箭的重量递增。我们将用矩形表示事件,用圆圈表示条件。下图表示事件e 1 e_1的激发。事件条件b 0 b_0和b 1 b_1由一个入射箭头和一个权重表示。类似地,它的后置条件b0b_0和b2b_2用一个向外箭头和一个权重表示。E1e_1的激发消耗来自b0b_0的atoken和来自b1b_1的两个令牌,并产生b0b_0中的一个令牌和b2b_2中的三个令牌。
一个Petri网𝒩=(E,B,PRE,POST)\数学{N}=(E,B,\Mathit{PRE},\Mathit{POST})由两个集合E,BE,B和两个多关系PRE,POST:E→m B\Mathit{PRE}给出,\mathit{𝒩}\冒号E\right tarrow_m B。集合E E表示网络中可能发生的事件\mathcal{N},而集合B B表示E E中事件周围的条件。类似地,多关系post\mathit{post}跟踪在激发事件后条件产生的“多少次”。
我们将写前(E)\mathit{pre}(E)和post(E)\mathit{post}(E)来表示事件e e的多个前置条件集和后置条件集。
在这篇文章中,我们将集中讨论Petri网,它们的前置数学{PRE}和后置数学{POST}多重关系是普通关系,因此对应于E×B E\Times B的子集。这些Petri网被称为初等Petrinets。
通常,每个条件的权重可以是整数。在基本Petri网的情况下,只考虑其箭头的权重为1的网(因此,省略了权重)。
在辩证范畴G𝒞\mathbf{G}\mathcal{C}的基础上,定义了基本Petri网范畴N𝒞\mathbf{N}\mathcal{C},N𝒞\mathbf{N}\mathcal{C}中的对象和态射是由G𝒞\mathbf{G}\mathcal{C}中的对象和态射定义的。
设𝒞\Mathcal{C}是有限极限范畴,则存在范畴N𝒞\Mathbf{N}\Mathcal{C},定义如下。
对象是一对𝒩=(PRE,POST)\Mathcal{N}=(\Mathit{PRE},\Mathit{POST}),其中PRE\Mathit{PRE}和POST\Mathit{POST}是G𝒞\Mathbf{G}\Mathcal{C}中的对象。
从𝒩=(PRE,POST)\Mathcal{N}=(\Mathit{PRE},\Mathit{POST})到𝒩‘=(PRE’,POST‘)\Mathcal{N}';=(\Mathit{PRE}';,\Mathit{POST}';)的态射。)是𝒞\Mathcal{C}中的一对态射(f,F)(f,F),使得(f,F)(f,F)是G𝒞\Mathbf{G}\Mathcal{C}中从Pre-Mathit{PRE}到Pre‘\Mathit{Pre}';以及从Post\Mathit{POST}到Post’\Mathit{POST}';的一个态射,使得(f,F)(f,F)(f,F)是从Pre-Mathit{Pre}到Pre‘\Mathit{Pre}';
Nset\mathbf{nset}的对象𝒩=(PRE,POST)\Mathcal{N}=(\Mathit{PRE},\Mathit{POST})表示一个基本的Petri网,其前置条件和后置条件关系由PRE\Mathit{PRE}和POST\Mathit{POST}给出。取𝒞=Set\Mathcal{C}=\mathbf{Set},明确了(f,F)(f,F)是Petri网的态射的条件。我们得到了这一点。
E Pre F(b‘)⇒f(E)Pre’b‘e POST F(b’)⇒f(E)POST‘b’\Begin{Alignment}e\\mathit{Pre}\F(b';)&;\Right tarrow f(E)\\Mathit{Pre}';\\e\\Mathit{POST}\F(b';)&;\right tarrow f(E)\\mathit{post}';\b';\end{对准}
这意味着网络𝒩\Mathcal{N}是𝒩\Mathcal{N}';的精化。直观地说,这意味着𝒩\Mathcal{N}消耗和产生的资源至少与𝒩‘\Mathcal{N}';一样多。
这不是定义Petri网态射的唯一方法。对于Petrinet的前数学成分{PRE}和后数学成分{POST}中的一个或两个,可以反转唯一态射k k的方向。在上述条件下,也可以考虑给出一个充要条件且仅当一个充要条件的态射。所有这些变体都有值得研究的解释。在最后一节中,我们将简要讨论这些变体背后的直觉。
简要给出了定义N𝒞\mathbf{N}\mathcal{C}所需的辩证法范畴的定义。已经熟悉这部作品的读者被邀请跳到下一节。
给定有限极限范畴𝒞\Mathcal{C},定义辩证范畴G𝒞\Mathbf{G}\Mathcal{C}。
对象是𝒞\Mathcal{C}的对象上的关系。它们由一元式α:a→E×B\Alpha\冒号A\to E\x B在𝒞\Mathcal{C}中给出。我们用α表示它们:E↚B\Alpha\冒号E\nleftarrow B。
两个对象α→α:EαB\α\冒号E\nLeftarrow B和↚‘:E’→B‘\α\冒号E&39;\nLeftarrow B&n之间的态射(f,F):↚’(f,F)\冒号\α\to\α&39;由一对态射f:E→E‘f\冒号E\right tarrow E&39;和F:B’→B F\冒号B&。𝒞\Mathcal{C}中的右目标B,使得存在(必然是唯一的且一元的)态射k k,使得下面的三角形可交换。
定理(Depaiva):如果𝒞\Mathcal{C}是具有有限不交余积的局部笛卡尔闭范畴,则G𝒞\Mathbf{G}\Mathcal{C}是直觉线性逻辑的模型。
解释线性逻辑联结词的G𝒞\mathbf{G}\mathcal{C}的结构可以提升到初等Petri网范畴,并依赖于线性逻辑联结词的直观性来定义Petri网的组合。
在本节中,我们定义如何在G𝒞\mathbf{G}\mathcal{C}以及N𝒞\mathbf{N}\mathcal{C}中解释线性逻辑的构造。我们在NSET\mathbf{NSET}中给出了具体的例子,试图解释这些结构在Petri网上的直观含义。
两个网𝒩\Mathcal{N}和𝒩‘\Mathcal{N}';的笛卡尔乘积是一个Petrinet,其中事件是成对的⟨e,e’⟩\lange,\rangle,它们既代表𝒩\Mathcal{N}中的事件e e,也代表𝒩‘\Mathcal{N}&39;中的事件e’e‘。乘积网中的条件是𝒩\Mathcal{N}或𝒩‘\Mathcal{N}';中的条件。
为了给出一个具体的例子,考虑两个代表基因间相互作用的Petri网(这个例子取自一篇使用开放Petri网的基因调控网络的论文)。第一个代表基因b0b_0,它本身失活,可以激活基因b1b_1或基因b2b_2;第二个代表基因b0‘b_0,它可以使基因b1’b_1失活。
它们的笛卡尔乘积表示b0b0同时激活b1b1或b2b2,b0‘b0同时使b1’b1失活。事实上,为了能够同时激活b1b_1和去激活b1‘b_1';,必须标记𝒩1\𝒩{N}_1中的e’e_1的所有前提条件和数学{N}_2中的e‘e';的所有前提条件。
更具体地说,Nset\mathbf{nset}中乘积𝒩&;𝒩‘\Mathcal{N}\\&;的前置条件和后置条件关系的条件是由组件网中的前置条件和后置条件的并集给出的。
前置&A;(⟨e,e‘⟩)=I B(前置(E))∪I B’(前置‘(e’))后置&A;(⟨e,e‘⟩)=I B(后置(E))∪I B’(后置‘(e’))\Begin{Alignment}\Mathit{前置}_{\&P;}(\lange,e';\rangle)&;=i_{B}(\mathit{Pre}(E))\Cup i_{B';}(\mathit{pre}';(e';))\\\mathit{post}_{\&;}(\langle e,e';\rangle)&;=i_{B}(\mathit{POST}(E))\Cup I_{B';}(\mathit{post}';(e';))\结束{对齐}。
这些条件来自于类别N𝒞\mathbf{N}\mathcal{C}中乘积的更一般定义。在范畴N𝒞\mathbf{N}\mathcal{C}中,两个网的连线积由分支乘积定义。𝒩&;𝒩‘=(PRE&;PRE’,POST&;POST‘)\Mathcal{N}\\&;\\Mathcal{N}';=(\Mathit{PRE}\\&;\\Mathit{PRE}';,\Mathit{POST}\\&;\\Mathit{POST}';),其中PRE&;Pre‘\mathit{pre}\\&;\\mathit{pre}&39;和post&;’\mathit{post}\\&;\\mathit{post}';表示G𝒞\mathbf{G}\mathcal{C}中的笛卡尔产品。
为了使读者更感兴趣,我们在辩证法范畴G𝒞\mathbf{G}\mathcal{C}中给出了Cartesianproduct的形式定义。Gα\↚bf{G}\Mathcal{C}中的两个对象α:E↚B\Alpha\冒号E\nLeftarrow B与𝒞‘:E’αB‘\Alpha';\冒号E';\nLeftarrow B';的乘积是关系α’:E×E‘↚B+B’\Alpha\\&;\\Alpha&&;\冒号E\Times E&39;α&;α‘=(α×𝟙E’)+(α‘×𝟙E)\α\\&;\\α=(\α\次\Mathbb{1}_{E;})+(\α\次\次\Mathbb{1}_E),其中×\次和++表示𝒞\Mathcal{C}类别中的产品和副产品。射影由态射(πE,IB)(\pi_{E},i_{B})和(πE‘,i_B’)(\pi_{E';},i_{B&39;})给出。
根据乘积的普适性,当𝒞=Set\Mathcal{C}=\mathbf{Set}时,我们得到了乘积关系的如下条件,它直接给出了上面给出的Petri网乘积的条件。
⟨e,e‘⟩(α&;α’)I B(B)⇔eαb⟨e,e‘⟩(α&;α’)I B‘(b’)⇔e‘α’b‘\Begin{Alignment}\lange,e';\Rangle(\alpha\\&;)i_{B}(B)&;\leftrihtarrow e\\alpha\b\langle e,e';\rangle(\alpha\&;\\alpha&39;)i_{B&39;}(b';)&;\Leftrihtarrowe';\\alpha';\b';\end{aligned}。
联积网络的行为是能够激发第一个网络中的事件或第二个网络中的事件。因此,联积网络中的事件是来自第一个网络或第二个网络的事件。条件分别是第一网和第二网中的条件对。当副产品中的条件⟨b,b‘⟩\r被标记时,它被解释为两个条件b b或b’b‘中的一个被标记。我们将通过一个具体的例子来说明这一点。考虑上面介绍的第一个Petri网。
它的行为是通过去激活b0b0来激活b1b1或b2b2。就像我们刚才描述的那样,这种行为似乎是一个联积网络。实际上,我们可以看到下面表示b1b_1激活的两个网𝒩1\mathcal{N}_1和表示b2b_2激活的𝒩2\mathcal{N}_2的余积被网𝒩\mathcal{N}精化。
实际上,𝒩1⊕𝒩2\Mathcal{N}_1\Oplus\Mathcal{N}_2由𝒩\Mathcal{N}精化为初等网(f,F)的态射:𝒩1⊕𝒩2→𝒩(f,F)\冒号\Mathcal{N}_1\Oplus\Mathcal{N}_2\to\Mathcal{N},式给出了(f,F)\冒号\Mathcal{N}_1\Oplus\Mathcal{N}_2\to\Mathcal{N}。
F:E1+E2→E F:b→B1×B2 e 1↦e 1 b 0↦⟨b 0,b 0⟩e 2↦e 2 b 1↦⟨b 1,b 2⟩b 2↦⟨b 1,b 2⟩\Begin{Alignment}f\冒号E_1+E_2&;\到E&;F\冒号B&;\至B_1\x B_2\\e_1&;\mapsto e_1&;b_0&;\mapsto\langle b_0,b_0\e_2&;\mapstto e_2&;b_1&;\mapsto\langle b_1,b_2\rangle\\&;&;b_2&;\mapsto\langle b_。
明确地给出了两个网𝒩⊕𝒩‘\Mathcal{N}\Oplus\Mathcal{N};在Nset\mathbf{nset}中余积的条件。
Pre⊕(I E(E))=πB−1(Pre(E))Pre⊕(I E‘(e’))=πB‘−1(Pre’(e‘))POST⊕(IE(E))=πB−1(POST(E))POST⊕(IE’(e‘))。))=POST B‘−1(POST’(e‘))POST&;=\pi_{B}^{-1}(\mathit{pre}(E))\mathit{pre}_{\oplus}(i_{E';}(e';))&;=\pi_{B';}^{-1}(\mathit{pre}';(e';))\mathit{post}_{\oplus}(i_{E}(。=\pi_{B}^{-1}(\mathit{post}(E))\mathit{post}_{\oplus}(i_{E';}(e';))&;=\pi_{B';}^{-1}(\mathit{post}';(e';))\end{alized}
两个网的余积由分量余积给出。𝒩⊕𝒩‘=(Pre⊕Pre’,POST⊕POST‘)\Mathcal{N}\OPLUS\Mathcal{N}';=(\Mathit{PRE}\OPLUS\Mathit{Pre}';,\Mathit{POST}\OPLUS\Mathit{POST}';)其中Pre⊕Pre’\Mathit{Pre}\OPLUS\Mathit{Pre}';和POST⊕POST‘\Mathit{POST}\。是G𝒞\mathbf{G}\mathcal{C}中的余积。
我们定义了两个对象α的余积:E↚B\Alpha\冒号E\nLeftarrow B和α‘:E’↚B‘\Alpha;\冒号E';\nLeftarrow B';在G𝒞\Mathbf{G}\Mathcal{C}中。关系α⊕α‘:E+E’↚B×B‘\Alpha\Oplus\Alpha';\冒号E+E&39;\nLeftarrow B\×B&39;由α⊕α’=(α×𝟙B‘)+(α’×𝟙B)\Alpha\Oplus\Alpha&39;=(\Alpha\Times\Mathbb{1}_{B';})+(\Alpha';\Times\mathbb{1}_B)其中×\Times和++表示类别𝒞\Mathcal{C}中的产品和副产品。包裹体是态射(I_E,πB)(I_{E},\π_{B})和(I_E‘,πB’)(I_{E';},\π_{B';})。
利用余积的泛性,当𝒞=Set\Mathcal{C}=\mathbf{Set}时,可以用分量关系来表示余积关系。这给出了上面写入的NSET\mathbf{NSET}中的条件。
I E(E)(α⊕α‘)⟨b,b’⟩⇔eαb i E‘(e’)(α⊕α‘)⟨b,b’⟩⇔e‘α’b‘\Begin{aligned}i_{E}(E)(\alpha\oplus\alpha';)\langle b,b;\rangle&;\leftrihtarrow e\\alpha\b\\i_{E';}(e';)(\alpha\oplus\alpha&39;)\langle b,b&39;\rangle&;\leftrihtarrow e';\\alpha';\b';\end{aligned}。
单极体乘积也表示两个网络中事件的并发激发,但与笛卡尔乘积相反,它跟踪一个网络中的事件与另一个网络中的条件之间必要的通信通道,以使并发事件发生。因此,𝒩⊗𝒩‘\Mathcal{N}\oTimes\Mathcal{N}';中的事件将再次成为成对的事件⟨e,e’⟩\lange,e‘Range,其中e是𝒩\Mathcal{N}中的事件,e’e‘是𝒩’\Mathcal{N}';中的事件。但是,条件将是函数对⟨f,f‘⟩\langf,\范围从一个网络中的事件到另一个网络中的条件,因此f表示从𝒩’\Mathcal{N};中的事件到𝒩\Mathcal{N}中的条件和f‘f';中的条件的通道。从𝒩\Mathcal{N}中的事件到𝒩’\Mathcal{N}中的条件的通道。考虑上面所示的𝒩\Mathcal{N}和𝒩‘\Mathcal{N}';
在右侧,我们用b i b_i表示从E‘E';到B B的函数,将e’e';发送到b i b_i。我们用𝟙,lnot,!0,!1\mathbb{1},\lnot,!_0,!_1表示从E到B‘B';发送e i e_i到b’i−1 b';的函数。_{i-1},e_1e_1至b‘1b;_1和e_2e_2至b’0b;_0,e i e_i至b 0 b_0,e i e_i至b 1b_1。
同步事件⟨e 1,e‘⟩\lange_1,e&rangle的前提条件是只要e’e_1可以激发就启用e‘e_1的前提条件的所有通道,以及每当e’e‘可以激发时启用e’e_1的前提条件的所有通道。这意味着⟨e 1,e‘⟩\lange_1,e&39;的前提条件是所有的通道都是启用e’e_1的前提条件。这意味着,当e‘e_1可以激发时,启用e’e‘e_1的前提条件都是启用e’e_1的前提条件。这意味着,只要e‘e_1可以激发,所有的通道都会启用e’e_1的前提条件。函数对⟨f,f‘⟩\langf,f';\r使得f(e’)=b0 f(e';)=b_0且f‘(E_1)=b_0’f';(E_1)=b_0';或f‘(E_1)=b1’f';(E_1)=b_1';或f‘(E_1)=b_1';类似地,在发射⟨e 1,e‘⟩\lange_1,e’\rangle之后,⟨f,f‘⟩\langf,f_1=b_1,f’(e‘)=b_1和f’(e‘)=b0’f&39;(E_1)=b_0。
⟨e,e‘⟩Pre⊗⟨f,f’⟩⇔e Pre f(e‘)和e’Pre‘f’(E)⟨e,e‘⟩Post⊗⟨f,f’⟩⇔e POST f(e‘)和e’Post‘f’(E)\Begin{Alignment}\lange,e';\rangle\\mathit{pre}_{\otime}\\langle f,f';\rangle&;\leftrihtarrow e\\mathit{pre}\f(e';\\mathit{pre}';\f';(E)\lange,e';\rangle\\mathit{post}_{\o次。\r角度&;\Leftrihtarrow e\\mathit{post}\f(e';)\\text{and}\e';\\mathit{post}';\f';(E)\end{alized}
更一般地,在N𝒞\mathbf{N}\mathcal{C}中,两个网的么半乘积由分量式的幺等积𝒩⊗𝒩‘=(Pre-⊗Pre’,Post⊗‘)\Mathcal{N}\oTimes\Mathcal{N}';=(\Mathit{Pre}\oTimes\Mathit{Pre}';,\Mathit{POST}\oTimes\Maththit{Post}';=(\Mathit{Pre}\oTimes\Mathit{Pre}';,\Mathit{POST}\oTimes\Maththit{POST}';)其中,Pre⊗Pre‘\Mathit{Pre}\oTimes\Mathit{Pre}';和POST⊗POST’\Mathit{POST}\OTimes\Mathit{POST}';是G𝒞\Mathbf{G}\Mathcal{C}中的单态产物。
关于这个定义的详细信息,我们需要定义两个对象α的单体乘积:E↚B\α\冒号E\nleftarrow B和α‘:E’↚B‘\α&39;\冒号E';\nleftarrowB';在G𝒞\mathbf{G}\mathcal{C}中。这是关系α⊗α‘:E×E’↚B E‘×B’E。
.