簡體   English   中英

Why3中的“未知邏輯符號map.Map.const”消息

[英]'Unknown logical symbol map.Map.const' message in Why3

我正在按照他們的教程進行why3的實驗,但是我收到消息Unknown logical symbol map.Map.const用於多種證明。 以下是我要證明的理論內容:

theory List
  type list 'a = Nil | Cons 'a (list 'a)

  predicate mem(x: 'a) (l: list 'a) = match l with
    | Nil -> false
    | Cons y r -> x = y || mem x r
  end

  goal G1: mem 2 (Cons 1 (Cons 2 (Cons 3 Nil)))
end

以下是各種證明的結果:

z3:

▶ why3 prove -P z3 demo_logic.why
File "/usr/local/share/why3/drivers/z3_bare.drv", line 172, characters 36-41:
Unknown logical symbol map.Map.const

cvc4:

▶ why3 prove -P cvc4 demo_logic.why
File "/usr/local/share/why3/drivers/cvc4_bare.drv", line 180, characters 36-41:
Unknown logical symbol map.Map.const

pvs:

▶ why3 prove -P pvs demo_logic.why 
File "/usr/local/share/why3/drivers/pvs-common.gen", line 41, characters 18-23:
Unknown logical symbol map.Map.const

這是我的why3版本信息:

▶ why3 --version
Why3 platform, version -n 0.85+git (build date: Tue Mar 10 08:27:47 EDT 2015)

錯誤消息中提到的.drv文件上的時間戳與我的why3可執行文件上的時間戳匹配。

我的理論或裝置有問題嗎?

編輯添加:在教程本身中,它說使用why3 demo_logic.why來證明理論,但是當我嘗試這樣做時,我得到了以下結果:

▶ why3 demo_logic.why             
'demo_logic.why' is not a Why3 command.

如果相反,我只是why3 prove demo_logic.why ,那么結果(近似地)就是該理論的回應:

▶ why3 prove demo_logic.why                  
theory List
  (* use why3.BuiltIn.BuiltIn *)

  type list 'a =
    | Nil
    | Cons 'a (list 'a)

  predicate mem (x:'a) (l:list 'a) =
    match l with
    | Nil -> false
    | Cons y r -> x = y || mem x r
    end

  goal G1 : mem 2 (Cons 1 (Cons 2 (Cons 3 (Nil:list int))))
end

您是否安裝了Why3的先前版本? 證明執行中的問題通常是由於新的Why3使用舊的Why3的配置文件引起的。 而且我已經看到您的特定實例已通過以下方式修復:

rm ~/.why3.conf
why3 config --detect

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM