Kratos是一个用于顺序和(协作)线程C程序的软件模型检查器。奎托斯以程序断言的形式验证安全属性。

为了分析顺序程序,奎托斯实现了

  • 惰性谓词抽象 (Blast算法)和
  • 带插入式的惰性抽象 (McMillan/Impact算法)

为了分析线程程序,Kratos实现了

  • 显式调度程序/符号线程 (埃斯特)以及
  • 半符号调度程序/符号线程 (第三节)算法。

ESST结合了显式的状态模型检查技术来分析调度程序和基于延迟谓词抽象的符号技术来分析线程。也就是说,ESST显式地跟踪调度程序的状态,并通过直接执行调度程序来协调整个验证过程(即,调度程序是模型检查算法的一部分,而不是验证设计的一部分)。S3ST构建在ESST上,用于处理线程和调度程序之间的参数交互设计。S3ST将显式执行部分与一组符号化的调度程序状态集结合起来。

ESST和S3ST都专门用于系统C验证。从这个意义上说,ESST和S3ST实现了SystemC调度策略和(子集)SystemC同步功能。特别是,ESST还专门用于验证FairThreads。

奎托斯还可以执行从顺序程序到Promela或NuSMV模型的转换,以及从线程程序到Promela模型的转换。目前,奎托斯只处理C语言的一个子集。正在扩展Kratos来处理C结构的大部分子集。