簡體   English   中英

Coq中相同庫的不同版本

[英]Diffent versions of same library in Coq

是否可以在Coq中安裝同一庫的多個版本? 如果是,如何選擇要使用的版本?

我在Windows中工作,因此不幸的是,任何使用OPAM的解決方案都不會對我有幫助。

最好的解決方案是使用coq_makefile的正確DESTDIR變量將庫實際安裝在單獨的目錄中,然后將COQPATH設置為包括正確的目錄。 這是Nix和OPAM風格的作品。

Makefile來自coq_makefile測試的示例:

$ ( cd lib-v1 && DESTDIR=~/coqlib/lib-v1 make install )
$ ( cd lib-v2 && DESTDIR=~/coqlib/lib-v2 make install )

$ export COQPATH=~/coqlib/lib-v1:$COQPATH
$ coqtop

您可以使用-R告訴coq某個目錄對應於某個名稱空間。 (請注意, -R需要兩個參數,即目錄和名稱空間!)

讓我們創建兩個目錄,並編譯兩個版本。 請注意,我們必須在編譯時已經告訴coqc該目錄中的文件應該在MyLib命名空間中,而不是在默認的名稱空間中。

D1=~/Desktop/libv1
D2=~/Desktop/libv2

mkdir $D1; echo "Definition a:=1." > $D1/MyLib.v
(cd $D1; coqc -R . MyLib MyLib.v)

mkdir $D2; echo "Definition a:=2." > $D2/MyLib.v
(cd $D2; coqc -R . MyLib MyLib.v)

現在為MyLib使用libv1

echo "Require Import MyLib. Print a." | \
coqtop -R $D1 MyLib

(將a := 1. )並將libv2用於MyLib

echo "Require Import MyLib. Print a." | \
coqtop -R $D2 MyLib

(將a := 2.

您還可以將-R標志及其參數放在_CoqProject文件中,這樣就不必_CoqProject將其放在命令行上。 一般證明也可以理解。


編輯:使用COQPATH變量而不是-R標志:

(cd $D1; coqc MyLib.v) # compile without -R
(cd $D2; coqc MyLib.v)

# specify the dir using COQPATH
echo "Require Import MyLib. Print a." | COQPATH=$D1 coqtop

# or add it to the LoadPath when you're in coqtop interactively
echo "Add LoadPath \"$D1\". Require Import MyLib. Print a." | coqtop

暫無
暫無

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

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