线性izability复杂度与递归程序验证中的反链方法
在计算机科学领域,线性izability的复杂度分析以及递归程序的安全验证是重要的研究方向。本文将深入探讨线性izability的复杂度问题,以及如何利用反链方法来验证递归程序的安全属性。
线性izability的复杂度分析
首先,我们来分析线性izability的复杂度。当一个系统相对于SN不是线性可化的时,它至少有一个已完成的MTick方法事件。若只有未完成的MTick事件或者根本没有MTick事件,可通过丢弃所有对MTick的未完成调用来实现线性化。而且,它不能有超过一个的MTick方法事件(已完成或未完成),因为SN接受所有包含多个MTick字母的单词,这样也能实现线性化。
对于每个$i \in {1, \ldots, l}$,系统恰好有一个已完成的$M_i$方法,且没有未完成的。$M_i$方法($i \in {1, \ldots, l}$)只能在共享变量的值为Begin时开始,并且只能在读取到值End后返回。由于这个值只能由单个MTick方法改变一次,这确保了$M_i$方法($i \in {1, \ldots, l}$)以及MTick本身都相互重叠,并且与其他已完成的方法也重叠。
这意味着已完成的方法$M_{\gamma}$,$\gamma \in \Gamma$只能出现在单个线程$t$中。我们定义$w \in \Gamma^*$为与执行中已完成的方法$M_{\gamma}$,$\gamma \in \Gamma$相对应的单词,按照它们在线程$t$中出现的顺序排列。
由于$r$不是线性可化的,我们无法将$M_i$($i \in {1, \ldots, l}$)插入到线程$t$
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



