我正在进行CTL练习,我正在尝试检查以下公式是否相同。但我不确定我做得对不对。
EF (p or q) = EF(p) or EF(q) ?
AF(p or q) = AF(p) or AF(q) ?
A(p U ( A(q U r) )) = A(A(p U q) U r) ?
公式:等价
第二个公式:等价
第三个公式:等效
是不是? 如果错了你能给我一个Kripke模型中可能的反例吗?
提前致谢。
答案 0 :(得分:0)
我会尝试使用此处定义的CTL的语义:Wikipedia about CTL。
(I)
证明EF (p or q) = EF(p) or EF(q)
:
(M, s1) |= EF (p or q)*
<=> (Def. of EF)
There is s1->s2->... such that there is an i >= 1 such that (M, s_i) |= (p or q)
<=> (Def. of or)
There is s1->s2->... such that is an i >= 1 such that ((M, s_i) |= p OR ((M, s_i) |= q)
<=> (Equivalence rules for predicate logic)
(There is s1->s2->... such that is an i >= 1 such that ((M, s_i) |= p)
OR
(There is s1->s2->... such that is an i >= 1 such that ((M, s_i) |= q)
<=> (Def. of EF)
EF(p) or EF(q)
所以等价是有效的。
(II)
AF(p or q) = AF(p) or AF(q)
假设具有三个状态S0,S1,S2的Kripke结构,让S0为初始状态。
在S0中,p nor q
都不成立,在S1中只有p
成立,在S2中只有q
成立。
过渡是:
S0 -> S1
S0 -> S2
S1 -> S1
S2 -> S2
S1形成SCC,S2形成SCC。 AF(p或q)适用于此Kripke结构,因为(p或q)适用于除S0之外的所有状态,并且每个序列都会达到S1或S2。 AF(p)或AF(q)怎么样? AF(p)不成立,因为存在序列S0 S2 S2 S2 ...其中没有p出现。 AF(q)不成立,因为存在序列S0 S1 S1 S1 ...其中没有出现q。
对于(III):有趣的证明,可能使用上面使用的技术:)