PRISM 线性时序逻辑(LTL)
引言
线性时序逻辑(Linear Temporal Logic, LTL)是PRISM模型检测工具中用于描述系统随时间演化的性质的形式化语言。它允许我们表达诸如"最终会发生某事件"或"某条件始终成立"等时序约束。本章将详细介绍LTL的语法、语义及在PRISM中的实际应用。
LTL基础语法
LTL由原子命题和逻辑/时序运算符组成:
原子命题
- 表示系统状态的布尔表达式,如
x > 5
或process=active
逻辑运算符
运算符 | 含义 | 示例 |
---|---|---|
! | 非 | !error |
& | 与 | a & b |
| | 或 | a | b |
-> | 蕴含 | req -> resp |
时序运算符
运算符 | 含义 | 示例 |
---|---|---|
X | 下一状态 (Next) | X start |
F | 最终成立 (Finally) | F success |
G | 全局成立 (Globally) | G !error |
U | 直到 (Until) | req U resp |
R | 释放 (Release) | error R repair |
运算符优先级
- 一元运算符 (
!
,X
,F
,G
) 优先级最高 - 然后是
U
和R
- 最后是逻辑运算符 (
&
,\|
,->
)
PRISM 中的LTL示例
基本性质验证
// 系统永远不进入错误状态
P>=1 [ G !error ]
// 最终会达到成功状态的概率
P=? [ F success ]
响应性性质
// 每个请求最终都会得到响应
P>=0.99 [ G (req -> F resp) ]
语义解析
LTL公式的满足性是在无限路径