Probabilistic model checking computes probabilities and expected values related to designated behaviours of interest in Markov models. As a formal verification approach, it is applied to critical systems; thus we trust that probabilistic model checkers deliver correct results. To achieve scalability and performance, however, these tools use finite-precision floating-point numbers to represent and calculate probabilities and other values. As a consequence, their results are affected by rounding errors that may accumulate and interact in hard-to-predict ways. In this paper, we show how to implement fast and correct probabilistic model checking by exploiting the ability of current hardware to control the direction of rounding in floating-point calculations. We outline the complications in achieving correct rounding from higher-level programming languages, describe our implementation as part of the Modest Toolset's 'mcsta' model checker, and exemplify the tradeoffs between performance and correctness in an extensive experimental evaluation across different operating systems and CPU architectures.
翻译:概率模型检查计算了与Markov模型中指定感兴趣的行为相关的概率和预期值。 作为一种正式的核查方法,它适用于关键系统; 因此,我们相信概率模型检查器能够产生正确的结果。 然而,为了实现可缩放性和性,这些工具使用有限精度浮点数来表示和计算概率和其他值。 因此,它们的结果会受到可能以难以预测的方式累积和互动的四舍五入错误的影响。 在本文中,我们展示了如何通过利用当前硬件的能力来控制浮动点计算四舍五入方向来实施快速和正确的概率模型检查。 我们概述了从更高层次的编程语言中正确四舍五入的复杂情况,描述我们作为“ Modest Toolet” 的“mcsta” 模型检查器的一部分的执行情况,并举例说明在不同操作系统和CPU结构的广泛实验性评估中业绩与正确性之间的权衡。