E
KER
、
M
ESEGUER
和
S
RIDHARANARAYANAN
模型检查器允许定义非常一般的属性是通过允许
在
SPred
(
STATE
,
State
)中
的
可判定
参数状态谓词的丰富子类中的状态谓词定义
3
Maude LTL模型
Maude 2.0
支持对有限重写理论
R
=
(
E
,
E
,
R
)的初始状态
[t]
进行动态
LTL
模型检查,例如排序
状态
,使得集合
[u] [1][2][3][4][5][6][7][8][9][10][11][12][13][14]
[15][16][17][18][19
重
写 理 论 应 该 满 足 已 经 提 到 的 要 求 , 即 所 有 这 样 的 可 达 状 态
[u]
也 有
sortState。此外,方程理论(E
,
E)应该是融合的和终止的(也许
模
一些
公理,如结合性,交换性或恒等式),规则R应该相对于方程E是
连贯的
[25]。注意,许多感兴趣的重写理论可能有
无限
多个状态,但从任何给定的
初始状态可到达的状态可能仍然是有限的。
满足上述假设的重写理论可以在
Maude
中由系统模块来指定,比如
M
。
然后,给定一个初始状态,比如
说
初始化
状态
M
,
我们可以从这个初始状
态开始,通过执行以下操作
来模型检查
•
定义一个新的模块,比如说MODELK-M,它包括模块M和
预定义的模块
MODEL-MODELKER作为子模块(
如果我们希望,例如为了引入辅助数据
类型和功能,我们也可以包括其它子模块
•
给出一个
子排序声明
,
子排序状态
M
<
状态
。 其中
State
是
模块
MODEL-
MODELKER
中的关键排序之一
(
如果
State
M
=
State,则
可以省略此声明
)
;
•
通过常数
和排序
Prop
的运算符来
定义
我们希望使用的
状态谓词
的
语法
,排
序公式的子排序(即,LTL
公式);我们可以将
无参数
状态
谓词定义为Prop排
序的
常数
,并通过
从其参数的排序到
Prop
排序的运算符来
定义参数化
•
通过涉及
算子的方程定义状态谓词
的
语义
操作
_|=_
:
状态属性
->
结果
[
特殊
. ]
中
。
在模型制造器中。排序
结果
是布尔值的超排序。我们定义每个状态谓词
的语义,比如一个参数化的状态谓词p,通过给出一组(可能是条件的)
方程的形式:
ceq exp1| = p
(
u11
,
...
,
un1
)
=
true
if
C1
.
...
CEQ Expk| = p(u1k,.,unk)
=
true
if
Ck
.
其中: