PRISM 模型检测概念
引言
PRISM(Probabilistic Symbolic Model Checker)是一个用于分析概率系统的形式化验证工具。它能够自动验证系统是否满足特定的概率或时序属性, 例如"消息在5秒内传递的概率超过99%"。本章将介绍PRISM的核心概念,包括模型类型、属性规约语言和验证流程。
模型检测基础
模型检测是一种自动验证技术,通过穷举系统所有可能状态来检查给定属性是否成立。PRISM扩展了传统模型检测,支持以下三类概率模型:
- 离散时间马尔可夫链(DTMC):纯概率系统
- 连续时间马尔可夫链(CTMC):带时间延迟的概率系统
- 马尔可夫决策过程(MDP):结合概率和非确定性的系统
PRISM 模型结构
PRISM模型由模块和变量组成。以下是一个简单的DTMC示例,模拟硬币投掷:
// 硬币投掷模型
dtmc
module Coin
side : [0..1] init 0; // 0=正面, 1=反面
[] side=0 -> 0.5 : (side'=0) + 0.5 : (side'=1);
[] side=1 -> 0.5 : (side'=0) + 0.5 : (side'=1);
endmodule
关键组成部分:
dtmc
声明模型类型module
定义系统组件side
是状态变量[]
开头的行是状态转移规则
变量命名
PRISM变量名不能以数字开头,建议使用有意义的名称如packet_delivered
而非pd
属性规约
PRISM使用PCTL