运行 Frama-c WP插件如何与Coq交互定理证明器?
How to run Frama-c WP plug-in with Coq interactive theorem prover?
这里是WP插件的swap实例教程;
/*@ requires \valid(a) && \valid(b);
@ ensures A: *a == \old(*b) ;
@ ensures B: *b == \old(*a) ;
@ assigns *a,*b ;
@*/
void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
return;
}
这是我用 coq 运行 frama-c 时的结果;
frama-c -wp -wp-rte -wp-proof coq swap.c
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing swap.c (with preprocessing)
[rte] annotating function swap
[wp] 9 goals scheduled
[wp] [Coq] Goal typed_swap_assert_rte_mem_access : Unknown
[wp] [Coq] Goal typed_swap_post_A : Unknown
[wp] [Coq] Goal typed_swap_assert_rte_mem_access_3 : Unknown
[wp] Proved goals: 6 / 9
Qed: 6 (0.13ms-0.71ms-2ms)
Coq: 0 (unknown: 3)
所以 Coq returns Unknown
剩下的所有三个证明义务。
正常吗?为什么?
我是否应该每年手动为他们证明证明?
谁能得到这个例子运行宁可以使用 coq 吗?
版本; Frama-c Magnesium-20151002、Coq 8.4.6、OCaml 4.02.3 运行在 MacOS 10.11.4
上运行
事实上,Coq 是一个交互式 定理证明器。这意味着您必须自己编写证明(可能会尝试一些默认策略,但通常您最终会手动完成)。您可以使用 coqide
而不是 coq
查看目标:frama-c -wp -wp-rte -wp-proof coqide swap.c
.
这里是WP插件的swap实例教程;
/*@ requires \valid(a) && \valid(b);
@ ensures A: *a == \old(*b) ;
@ ensures B: *b == \old(*a) ;
@ assigns *a,*b ;
@*/
void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
return;
}
这是我用 coq 运行 frama-c 时的结果;
frama-c -wp -wp-rte -wp-proof coq swap.c
[kernel] Parsing FRAMAC_SHARE/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing swap.c (with preprocessing)
[rte] annotating function swap
[wp] 9 goals scheduled
[wp] [Coq] Goal typed_swap_assert_rte_mem_access : Unknown
[wp] [Coq] Goal typed_swap_post_A : Unknown
[wp] [Coq] Goal typed_swap_assert_rte_mem_access_3 : Unknown
[wp] Proved goals: 6 / 9
Qed: 6 (0.13ms-0.71ms-2ms)
Coq: 0 (unknown: 3)
所以 Coq returns Unknown
剩下的所有三个证明义务。
正常吗?为什么?
我是否应该每年手动为他们证明证明?
谁能得到这个例子运行宁可以使用 coq 吗?
版本; Frama-c Magnesium-20151002、Coq 8.4.6、OCaml 4.02.3 运行在 MacOS 10.11.4
上运行事实上,Coq 是一个交互式 定理证明器。这意味着您必须自己编写证明(可能会尝试一些默认策略,但通常您最终会手动完成)。您可以使用 coqide
而不是 coq
查看目标:frama-c -wp -wp-rte -wp-proof coqide swap.c
.