簡體   English   中英

Coq中的符號

[英]Notations in Coq

我想使用表示法來表示謂詞測試 ,如下所示:

Variable A B : Type.

Inductive test : A -> B -> A -> B -> Prop :=
| test1 : forall a1 a2 b1 b2,
    a1 \ b1 || a2 \ b2
where "c1 '\' st '||' c2 '\' st'" := (test c1 st c2 st')
.

但是,Coq有一個錯誤: 在此處輸入圖片說明

為什么Coq無法接受這種表示法?

表示法被接受,實際上是Coq在test1的定義中錯誤地解析了您對表示法的使用。 要正確解析此表示法,您需要調整其術語的解析級別。 您可以使用保留的符號來做到這一點,因為歸納法中用於符號的where子句不支持用於配置符號的語法:

Variable A B : Type.

Reserved Notation "c1 '\' st '||' c2 '\' st'" (at level 40, st at next level, c2 at next level, no associativity).

Inductive test : A -> B -> A -> B -> Prop :=
| test1 : forall a1 a2 b1 b2,
    a1 \ b1 || a2 \ b2
where "c1 '\' st '||' c2 '\' st'" := (test c1 st c2 st')
.

對於哪種解析級別效果很好,我沒有一個很好的直覺(上面40有點武斷),所以我能給出的最佳建議是嘗試一下,如果在某處解析不正確,則嘗試調整級別。

暫無
暫無

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

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