进程代数CSP基础知识总结(Communicating sequencing process)
进程代数(Process Algebra)
Process Algebra 理论
| 提出者 | 理论名称 | 缩写 | 论文链接 | 简介 |
|---|---|---|---|---|
| C. A. R. Hoare/Tony Hoare | Communicating Sequencing Process | CSP | Communicating Sequential Processes | 1978年C. A.R.Hoare提出的通信顺序进程 CSP,是面向分布式系统的程序设计语言 |
| Robin Milner | Calculus of Communicating Systems | CCS | -- | 1973至1980年间发明了通信系统演算CCS,是用于描述通信并发系统的代数理论 |
| J.A. Bergstra, J.W. Klop | Algebra of Communicating Processes with Abstraction | ACP | [ACP]http://dspace.library.uu.nl/handle/1874/12719) | Bergstra等人1984年提出的 ACP理论针对反应式、并行式和分布式系统,描述了两个系统之间的交互行为 |
CSP基础知识
- 原版教材PDF获取,点我
注:目前已更新至2015版; - 中文版可参考周巢尘院士翻译的《通信顺序进程》。但是年代比较久远,是90年代的版本了。
第一章
1、对确定性进程,如何判断两个进程等价?
答: 确定性进程,需要判断两者alphabet(字母表)和traces(迹)是否相等。即:
①\(\alpha P=\alpha Q\)
②\(traces( P) =traces( Q )\)
2、\(traces(\mu X: A \cdot F(x)) = ?\)
答: \(traces(\mu X: A \cdot F(x)) = \{s|\exists n≥0,x \in A,s \le traces(F(x))^{n}\}\)
3、证明:
(下述两道证明题均是采用数学归纳法证明)
(1)\(traces(RUN_{A}) = A^{*}.\)
(注:\(A^{*}\) means the set of sequences with elements in A)

(2)\(traces(VMS) = \cup_{n≥0} \{s| s≤< coin,choc >^{n},n≥0\}.\)

第二章
1、Let \(\alpha P = \{a,c\},\quad and \quad P = (a → c → P), \quad \alpha Q = \{b,c\}\quad and \quad Q = (c → b → Q).\)
(1)\(P || Q = ?\)
答:
\]
\]
\]
\]
Also
\]
\]
\]
\]
\]
\]
Therefore
\]
(2)Please prove that \(P|| Q \quad sat\quad 0 ≤ tr↓ a-tr↓ b ≤ 2.\)
答:
1.若 \(tr\) 未运行到循环阶段,则 \(tr ↓ a = 1\) 或 \(0\), \(tr↓ b = 0\) 满足不等式;
2.若 \(tr\) 运行到循环并恰好完成若干次循环,则由于每次循环 \(a\) 的个数 \(=\quad b\) 的个数,所以\(tr ↓ a − tr ↓ b = 1\)。
3.若 \(tr\) 运行到某次循环中,由于本次循环前满足 \(tr ↓ a - tr ↓ b= 1\),
所以:
若运行 \(a → b → c → X\),则 \(tr↓ a − tr ↓ b =2\) 或 \(1\);
若运行 \(b → a → c → X\),则 \(tr ↓ a- tr ↓ b=0\) 或 \(1\);
综上,\(0 ≤ tr↓ a- tr ↓ b≤ 2\)。
2、If P and Q never stop and if \(\alpha P \cap \alpha Q\) contains at most one element, then\((P || Q)\) never stops.
(1)请直观解释此结论的正确性。
答: 因为P和Q的字母表交集最多含有1个元素,所以不会触发\((c → P)||(d → Q) = STOP \quad if c\ne d\)
(2)当 \(\alpha P \cap \alpha Q\) 含有 2 个或更多元素时,此结论不成立,举例说明。
如\(\alpha P = \alpha Q = \{a, b\},\)
\(P = a \rightarrow b \rightarrow P;\)
\(Q = b \rightarrow a \rightarrow Q;\)
\(P || Q = STOP.\)
第三章
1、
(1)\(traces(P\sqcap Q) = ?\)
答: \(traces(P\sqcap Q)=traces(P) ∪ traces(Q)\)
(2)\(traces(P \square Q) = ?\)
答: \(traces(P \square Q)= traces(P)∪ traces(Q)\)
(3)\(refusals(P \sqcap Q) = ?\)
答: \(refusals(P\sqcap Q) = refusals(P) ∪ refusals(Q)\)
(4)\(refusals(P\square Q) = ?\)
答: \(refusals(P\square Q)=refusals(P) ∩ refusals(Q)\)
(5)令\(\alpha P = \alpha Q = \alpha P_{1} = \alpha Q_{1}= \{a,b,c\},\)
\(P_{1} = (a → b → STOP)\)
\(P_{2}= (b → c → STOP)\)
\(P = P_{1} \sqcap P_{2}\)
\(Q = P_{1}\square P_{2}\)
问:
①\(refusals(P) = ?\)
②\(refusals(Q) = ?\)
答:
\(refusals(P_{1}) = \{\{\},{b},{c},{b,c}\}\)
\(refusals(P_{2}) =\{\{\},{a},{c},{a,c}\}\)
\(refusals(P) = \{\{\},{a},{b},{c},{b,c},{a,c}\}\)
\(refusals(Q) =\{\{\},{c}\}\)
(6)\(refusals(P|| Q) = ?\)
答: \(refusals(P||Q)=\{X ∪ Y | X \in refusals(P) \wedge Y \in refusals(Q)\}\)
(7)\(refusals(P|||Q) = ?\)
答:\(refusals(P|||Q) =refusals(P\square Q) =refusals(P) \cap refusals(Q)\)
2.
(1)\(divergences(Chaos) = ?\)
答: \(divergences(Chaos) = A^*\)
(2)\(divergences(X: B → P(X)) = ?\)
答: \(\{⟨x⟩\smallfrown s | x \in B \wedge s \in divergences(P(x))\}\)
(3)\(divergences(P \sqcap Q) = ?\)
答: \(divergences(P) ∪ divergences(Q)\)
(4)\(divergences(P\square Q) = ?\)
答: \(divergences(P) ∪ divergences(Q)\)
(5)\(divergences(P∥Q) = ?\)
答: \(\{s \smallfrown t|t \in (\alpha P ∪ \alpha Q) ^{*} \wedge
((s \upharpoonright\alpha P \in divergences( P )\wedge s \upharpoonright \alpha Q \in traces(Q)) ∨
(s \upharpoonright \alpha P \in traces(P) \wedge s\upharpoonright \alpha Q \in divergences(Q))\}\)
(6)\(divergences(P|||Q) = ?\)
答: \(\{u | \exists s, t • u \quad interleaves (s, t) \wedge ((s \in divergences(P) \wedge t \in traces(Q)) ∨ (s \in traces(P) \wedge t \in divergences(Q)))\}\)
3.
(1)\(failures(P) = ?\)
答: \(failures(P) =\{(s, X)| s \in traces(P) \wedge X \in refusals(P/s)\}\)
(2)P 与 Q 的定义如上述第三章的 1、(3)所定义:
问:\(failures(P) = ?\) \(failures(Q) = ?\)
(3)
①\(failures(P \sqcap Q) = ?\)
答: \(failures(P \sqcap Q) =failures(P)\cup failures(Q)\)
②\(failures(X: B → P(X)) = ?\)
答: \(\{(<>, X)| X \subseteq (\alpha P − B)\} ∪ \{(⟨x⟩ \smallfrown s, X)| x \in B \wedge (s, X) \in failures(P(x))\}\)
③\(failures(P ∥ Q) = ?\)
答: \(failures(P||Q) = \{(s, X \cup Y )|s \in (\alpha P ∪ \alpha Q) ^{*} \wedge (s \upharpoonright \alpha P, X) \in failures(P) \wedge (s\upharpoonright \alpha Q, Y ) \in failures(Q)\} \cup \{(s, X)|s \in divergences(P||Q)\}\)
④\(failures(P \square Q) = ?\)
答: \(\{(s, X)|(s, X) \in failures(P) ∩ failures(Q)) \vee (s \ne <>\wedge (s, X) \in failures(P) \cup failures(Q))\} \cup \{(s, X)| s \in divergences(P \square Q)\}\)
⑤\(failures(P|||Q) = ?\)
答: \(\{(s, X)| ∃t, u• (t, X) \in failures(P) \wedge (u, X) \in failures(Q) \} ∪ \{(s, X)| s \in divergences(P|||Q)\}\)
4.对非确定性进程,如何判断两个进程等价?
答:对非确定性进程而言,使用traces已经无法区分(如,第三章的 1、(3)所定义的两进程\(P\)和\(Q\):\(\alpha P=\alpha Q\),且\(traces(P)=traces(Q )\));进一步引入\(refusals\),但是用\(refusals\)来判断,具有局限性。最终,通过\(alphabet\)、\(divergences\)和\(failures\)综合判断。
即:
①\(\alpha P=\alpha Q\)
②\(divergences(P)=divergences(Q)\)
③\(failures(P)=failures(Q)\)
CSP: Operational Semantics
1、如何从 CSP 通讯的操作语义角度理解 CSP 并发定义中要求公共事件须同步?
答:
A和B之间存在通信的管道,可以发送某种类型的消息,B在接收到A的消息之前,并不清楚A发送的内容,只知道类型;
只有在A发送的同时,B同步接收,双方才可以通信,因此公共事件须同步。
2、从 CSP 的操作语义的角度定义:
(1)\(failures(P) = ?\)
答: \(failures(P) ={}_{df}\{s,X|\exists P_{1},P_{2}\cdot P\stackrel{s}{ \implies}P1\wedge P_{1}\xrightarrow {*}P_2\wedge stable(P_2)\wedge \forall c\in X\cdot \lnot (P_2\rightarrow)\}\)
(2)\(divergences(P) = ?\)
答: \(divergences(P) = {}_{df}\{s|\exists P_{1}\cdot P\stackrel{s}{ \implies}{s} P_{1}\wedge \uparrow P_{1}\}\)
CCS: Bisimulation
1.CCS 中 Strong Bisimulation 是如何定义的?
A binary relation \(S \subseteq P × P\) over agents is a strong bisimulation if \((P, Q) \in S\) implies, for all \(\alpha \in Act\),
(1) Whenever \(P \xrightarrow {\alpha }P'\) then, for some \(Q'\) , \(Q\xrightarrow {\alpha}Q'\) and \((P' ,Q' ) \in S\)
(2) Whenever \(Q \xrightarrow {\alpha } Q'\) then, for some \(P'\) , \(P \xrightarrow {\alpha }P'\) and \((P', Q') \in S\)
Denoted by \(P \sim Q\).
2.CCS 中 Weak Bisimulation 是如何定义的?
A binary relation \(S \subseteq P × P\) over agents is a weak bisimulation if \((P, Q) \in S\) implies, for all \(\alpha \in Act\),
(1) Whenever \(P \xrightarrow {\alpha } P'\) then, for some \(Q'\) , \(Q \stackrel{ \hat\alpha }{ \implies}Q'\) and \((P' ,Q' ) \in S\)
(2) Whenever \(Q \xrightarrow {\alpha } Q'\) then, for some \(P'\) , \(P \stackrel{ \hat\alpha }{ \implies} P'\) and \((P', Q') \in S\)
Denoted by \(P \approx Q\).
进程代数CSP基础知识总结(Communicating sequencing process)的更多相关文章
- Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android中进程间通信是比较难的一部分,同时又非常 ...
- Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现
Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现 一丶进程基础知识 什么是程序: 程序就是一堆文件 什么是进程: 进程就是一个正在 ...
- Java多线程原理+基础知识(超级超级详细)+(并发与并行)+(进程与线程)1
Java多线程 我们先来了解两个概念!!!! 1.什么是并发与并行 2.什么是进程与线程 1.什么是并发与并行 1.1并行:两个事情在同一时刻发生 1.2并发:两个事情在同一时间段内发生 并发与并行的 ...
- Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
随机推荐
- Linux 文件、目录与磁盘格式
文件属性 连接数 文件持有者 文件所属群组 文件容量 文件最后修改时间 文件名(就那个..) 第一栏其中文件属性有10,第一个属性代表这个文件是目录.文件或链接文件: [d]目录 [-]文 ...
- Let's Encrypt泛域名使用和Nginx配置拆分
上一期写了 使用Let's Encrypt实现网站https化 ,随着二级域名的增多,每个二级域名需要一张 SSL 证书,这可太不优雅了,泛域名表示我可以更优雅. 作者:IT王小二 博客:https: ...
- 精简ABP的模块依赖
ABP的模块非常方便我们扩展自己的或使用ABP提供的模块功能,对于ABP自身提供的模块间的依赖关系想一探究竟,并且试着把不必要的模块拆掉,找到那部分核心模块.本次使用的是AspNetBoilerpla ...
- ☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!
问题概括 静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定,所以Java针对某些情况制定了常量优化机制. 常量优化机制 给一个变量赋值,如果等于号的右边是常量的表达 ...
- L298N使用资料
L298N驱动连接arduino小车电机(代码和使用): https://www.cnblogs.com/fsong/p/12309911.htmlarduino UNO 连接L298N驱动两个电机转 ...
- 轻量级状态管理库Pinia试吃
最近连续看了几个GitHub上的开源项目,里面都用到了 Pinia 这个状态管理库,于是研究了一下,发现确实是个好东西!那么,Pinia 的特点: 轻量化 -- Pinia 体积约1KB,十分轻巧 ...
- mpu6050控制舵机云台
准备材料:2个舵机mg90,云台支架,1个arduino-uno,mpu6050 编程工具:VScode-platformio or ArduinoIDE 我使用的是VScode在编辑代码上会更方 ...
- 数据结构与算法-排序(十)桶排序(Bucket Sort)
摘要 桶排序和基数排序类似,相当于基数排序的另外一种逻辑.它是将取值范围当做创建桶的数量,桶的长度就是序列的大小.通过处理比较元素的数值,把元素放在桶的特定位置,然后遍历桶,就可以得到有序的序列. 逻 ...
- Vamware没有卸载干净,导致无法重装,无法删除VMware旧版本,请与技术小组联系
原因:注册表没有清理干净!!! 问题:把文件夹清理了n遍,却无法重装VMware,报错如标题. 原因:相关注册表没删完. 解决办法: - 1.创建一个.txt文本: - 2.将下面的内容复制到.txt ...
- 依赖注入@Autowired@Primary@Quelifier使用
@Autowired 注入声明的SpringBean对象,根据一定的规则首先按照注入的类型去查找,如果没有找到安装注入的名称去匹配你要注入的属性名称,如果都没有找到启动项目时抛出异常,@Autowir ...