使用多个自动证明器处理Atelier B中的证明义务
1. Why3概述
Why3是一个逻辑工具,其核心逻辑是具有递归定义、代数数据类型和归纳谓词的多态一阶逻辑。它的主要目的之一是从理论中提取目标,并将其转换为外部定理证明器的原生语言。这些证明器包括交互式证明助手(如Coq)、通用自动定理证明器(如Alt-Ergo、Z3、CVC3)以及专用定理证明器(如Gappa)。
下面是Why3的工作流程示意图:
graph LR
A[file.mlw] --> B[WhyML]
B --> C[VCgen]
C --> D[file.why]
D --> E[Why]
E --> F[transform & translate]
F --> G[print & run]
G --> H[Coq]
G --> I[Alt-Ergo]
G --> J[Z3]
G --> K[CVC3]
G --> L[etc.]
例如,有如下证明义务:
goal g: forall active:bool,
remaining_time remaining_time_1 initial_timer_value_ms cycle_duration : int.
cycle_duration = 100 ∧active = True ∧
(active = T
超级会员免费看
订阅专栏 解锁全文
18

被折叠的 条评论
为什么被折叠?



