簡體   English   中英

如何從命令行調用why3來訪問帶有替代方法的證明者?

[英]How to call why3, from the command line, to access a prover with alternatives?

我的配置文件包括不同證明的替代條目。 當我用那個證明者執行why3證明時,why3的輸出是一條消息,通知我在配置文件中有給定名稱的多個證明者(這些證明者的列表)。

/home/xyz> why3 prove --prover Z3 afile.why
More than one prover in /home/xyz/.why3.conf correspond to "Z3":
Z3 (4.4.1), Z3 (4.4.1 noBV)

如果可能的話,我想知道如何在證明者的特定選擇上調用why3。

最終,我偷看了Why3的源代碼以獲得答案。 可以在why3 / src / driver / whyconf.mli和why3 / src / driver / whyconf.ml中找到它。

一種解決方案是使用Why3的配置文件中證明者條目的版本和替代字段。 例如,如果此文件包含Z3的以下兩個條目:

[prover]
alternative = "noBV"
command = "%l/why3-cpulimit %t %m -s z3 -smt2 sat.random_seed=42 nlsat.randomize=false smt.random_seed=42 %f"
command_steps = "%l/why3-cpulimit %U %m -s z3 -smt2 sat.random_seed=42 nlsat.randomize=false smt.random_seed=42 memory_max_alloc_count=%S %f"
driver = "/home/ddeharbe/.opam/system/share/why3/drivers/z3_432.drv"
editor = ""
in_place = false
interactive = false
name = "Z3"
version = "4.4.1"

[prover]
command = "%l/why3-cpulimit %t %m -s z3 -smt2 sat.random_seed=42 nlsat.randomize=false smt.random_seed=42 %f"
command_steps = "%l/why3-cpulimit %U %m -s z3 -smt2 sat.random_seed=42 nlsat.randomize=false smt.random_seed=42 memory_max_alloc_count=%S %f"
driver = "/home/ddeharbe/.opam/system/share/why3/drivers/z3_440.drv"
editor = ""
in_place = false
interactive = false
name = "Z3"
shortcut = "z3"
version = "4.4.1"

條目之間的“替代”字段有所不同。 因此,要調用第一個條目,命令是:

why3 prove afile.why --prover Z3,4.4.1, 

要調用第二個條目,命令是:

why3 prove afile.why --prover Z3,4.4.1,noBV

暫無
暫無

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

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