alt-ergo不会通过cygwin在Windows上运行

时间:2014-09-17 17:34:49

标签: frama-c alt-ergo why3

我正在尝试使用alt-ergo prover在frama-c上运行测试文件。但是,我收到了alt-ergo的跟随错误。所有其他的frama-c检查都没问题。我知道问题不在于测试文件。

------------------------------------------------------------
--- Alt-Ergo (stderr) :
------------------------------------------------------------
Fatal error: exception Sys_error("/tmp/wpf0dd65.dir/typed/test_post_2_Alt-Ergo.mlw: No such file or directory")
------------------------------------------------------------
[wp] [Alt-Ergo] Goal typed_test_post_2 : Failed
     Error: Alt-Ergo exits with status [2]

我在Windows机器上并以管理员模式通过cygwin执行所有安装 我得到了frama-C Neon并用./configure & make & make-install安装了它,安装成功了(所有的frama-c检查都在我的测试文件中传递)

我从http://alt-ergo.ocamlpro.com/download.php获得了以下版本的alt-ergo Linux x86_64二进制文件:alt-ergo-0.95.2-x86_64。我使用这个版本,因为frama-c文档要求版本0.95。

我使用以下说明安装alt-ergo(https://www.lri.fr/~marche/MPRI-2-36-1/install.html

安装Alt-ergo

最简单的方法是获取alt-ergo的二进制文件。下载名为" Linux x86_64二进制文件"然后:

   chmod +x alt-ergo-0.95.2-x86_64 
   sudo cp alt-ergo-0.95.2-x86_64 /usr/bin/alt-ergo

调用which但frama-c和alt-ergo有正确的路径

$ which frama-c
/usr/bin/frama-c

$ which alt-ergo
/usr/bin/alt-ergo

我也安装了why3并且它检测到了ergo prover

$ why3 config --detect-provers
Found prover Alt-Ergo version 0.95.2, Ok.
1 provers detected and 0 provers detected with unsupported version
Save config to /home/username/.why3.conf

修改

我使用在线示例

创建了以下test.mlw
type 'a set

logic add : 'a , 'a set -> 'a set
logic mem : 'a , 'a set -> prop

axiom mem_add:
    forall x, y : 'a. forall s : 'a set.
    mem(x, add(y, s)) <->
    (x = y or mem(x, s))

logic is1, is2 : int set
logic iss : int set set

goal g:
    is1 = is2 -> 
    mem (is1, add (is2, iss))

运行alt-ergo导致:

alt-ergo test.mlw
File "file.mlw", line 1, characters 1-26:Valid (0.0156) (0)

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

以下治疗症状: 使用带有Windows路径的-wp-out标志将解决问题

例如

frama-c -wp -wp-print -wp-out c:/Users/userName/Desktop/tmp2 ../../cygdrive/c/Users/userName/Desktop/swap.c

答案 1 :(得分:1)

您可以将以下示例放在&#34; file.mlw&#34;

goal hello_world: 1+1 = 2

然后,尝试通过提供&#34; file.mlw&#34;来执行Windows和/或Cygwin二进制文件。作为输入