关于Fp = TUp的LTL,是否真的需要重写F?

时间:2015-06-09 06:18:59

标签: logic model-checking

我想出了这个问题。正如“计算机科学逻辑”一书中所写,LTL的一个重要等价是: 计划生育= TUP。 T意味着没有约束。

然而,如果我用(而不是p)替换T,该怎么办? Fp =(不是p)Up hold?因为在这种情况下我实际上在公式中加入了一些约束(而不是p),但同时可能没有状态可以满足(不是p)和p。我尝试使用不同的LTL公式作为p,并且只要p是可满足的,那么对于每个具有p的路径,它必须满足Fp和(非p)Up。 这是否意味着我可以用这种方式重写F或者有一些反例?

1 个答案:

答案 0 :(得分:0)

答案简短:

是的,两个公式都是等效的,您也可以使用(¬p)Up重写pUq

和证明:

我们可以通过查看s ⊨ pUq的定义来研究这个问题(我认为它在Clarke,Grumberg,Peled的模型检查一书中以这种方式定义)。

路径s是公式的模型(写成s ⊨ pUq <=> ∃k: s^k ⊨ q ∧ ∀i: 0<=i<k => s^i ⊨ q ):

s^i

s是删除了第一个i步骤的s ⊨ (¬p)Up <=> ∃k: s^k ⊨ p ∧ ∀i: 0<=i<k => s^i ⊨ ¬p 路径。)

我们有(1):

s ⊨ TUp <=>   ∃k: s^k ⊨ p
            ∧ ∀i: 0<=i<k => s^i ⊨ true
        <=>   ∃k: s^k ⊨ p

和(2):

k1

我们想要显示(1)&lt; =&gt; (2)(我将k重命名为k2 ∃k1: s^k1 ⊨ p ∧ ∀i: 0<=i<k1 => s^i ⊨ ¬p <=> ∃k2: s^k2 ⊨ p 以避免混淆):

 ∃k2: s^k2 ⊨ p 

方向(1)=&gt; (2)是微不足道的。

For(2)=&gt; (1)我们必须从

中显示出来
 ∃k1: s^k1 ⊨ p ∧ ∀i: 0<=i<k1 => s^i ⊨ ¬p

如下

k1

我们知道k2(即s^k1 ⊨ p)存在k1成立的值。但是第二部分呢?我们现在可以使用s^i ⊨ p最小值,i成立。然后第二部分是正确的,因为如果s^i ⊨ not p不存在s^i |= p,我们知道i成立。但在这种情况下,我们会为k1选择i因为k1严格小于 StandardDialRange standarddialrange; StandardDialRange standarddialrange2; StandardDialRange standarddialrange3; if(isPercentageIV==true){ standarddialrange = new StandardDialRange(90D, 100D, Color.GREEN); standarddialrange2 = new StandardDialRange(60D, 90D, Color.orange); standarddialrange3 = new StandardDialRange(0D, 60D, Color.RED); } else{ standarddialrange = new StandardDialRange(.9*goal*dialScale, goal*dialScale, Color.GREEN); standarddialrange2 = new StandardDialRange(.6*goal*dialScale, .9*goal*dialScale, Color.orange); standarddialrange3 = new StandardDialRange(0, .6*goal*dialScale, Color.RED); } // Sets the scale/radius of all the indicators. standarddialrange.setScaleIndex(0); standarddialrange.setInnerRadius(0.58999999999999997D); standarddialrange.setOuterRadius(0.58999999999999997D); dialplot.addLayer(standarddialrange); standarddialrange2.setScaleIndex(0); standarddialrange2.setInnerRadius(0.58999999999999997D); standarddialrange2.setOuterRadius(0.58999999999999997D); dialplot.addLayer(standarddialrange2); standarddialrange3.setScaleIndex(0); standarddialrange3.setInnerRadius(0.58999999999999997D); standarddialrange3.setOuterRadius(0.58999999999999997D); dialplot.addLayer(standarddialrange3);

因此公式(1)和(2)都是等价的。