簡體   English   中英

Agda標准庫 - 為什么更多屬性沒有標記為抽象?

[英]Agda standard library - why are more properties not marked abstract?

在過去的幾個月里,我一直在Agda工作,我剛剛遇到了Agda中的abstract塊,這阻止了該塊范圍之外的術語的進一步規范化。

使用它來隱藏我的引理的工作方式大大減少了對我的程序進行類型檢查所需的時間。 透過Agda標准庫,然而幾乎沒有使用abstract 在我看來,幾乎所有Properties文件中的所有內容(例如Data.Nat.Properties )都可以在一個abstract塊中,因為我無法想到用於推理的用法,例如,如何證明加法是可交換的。

這是一個抽象的案例,是一個尚未進入標准庫的新功能嗎? 或者是否有一些微妙或缺點的標記證據abstract我錯過了?

abstract是用於抽象的東西,它會阻塞計算,所以如果你將樣張放在一個abstract塊中,你將無法在substrewrite時使用它們,同時仍然保留正規性:

module _ where

open import Function
open import Relation.Binary.PropositionalEquality
open import Data.Nat.Base
open import Data.Fin hiding (_+_)

abstract
  +0 : ∀ n -> n + 0 ≡ n
  +0  0      = refl
  +0 (suc n) = cong suc (+0 n)

zero′ : ∀ n -> Fin (suc n + 0)
zero′ n = subst (Fin ∘ suc) (sym (+0 n)) zero

fail : zero′ 2 ≡ zero
fail = refl

-- subst ((λ {.x} → Fin) ∘ suc) (sym (+0 2)) zero != zero of type Fin (suc 2 + 0)
-- when checking that the expression refl has type zero′ 2 ≡ zero

abstract塊與postulate塊具有相同的效果。

如果用module _ where替換abstract ,則文件將鍵入check。

Andreas Abel 寫道

我認為這個“抽象”特征很少被理解。 我們應該安排它去除,給予5年的寬限期。 如果直到2020年沒有人寫過關於它的技術論文,並且有適當的語義和對與metas的預期交互的描述,我們放棄它。

暫無
暫無

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

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