我不想禁用在Haskell中檢查伴隨綁定的函數。 我想這樣做的原因是能夠通過矛盾來實施證明。以下類型的簽名沒有任何約束力,不應該如此。 zeroDoesNotEqualOne :: Refl Z (S Z) -> Bottom
Refl Z (S Z)類型沒有居民,因此應該沒有約束力。 在上面的代碼中的類型意味着你可以預料到的,使得S Z是皮亞諾自然的1和Refl只有類型的單個居民Refl a
假設列表L的長度爲n在列表J中交織,長度爲n + 1。 我們想知道,對於J的每個元素,L中的哪個鄰居是更大的。 下面的函數需L作爲其輸入,併產生一個列表K,也長度的 n + 1個,使得K的我個元素是J的我 th元素的期望鄰居 aux [] prev acc = prev:acc
aux (hd:tl) prev acc = aux tl hd ((max hd prev):acc)
expa
我已經開始學習Coq的,而且我想證明的東西,似乎相當簡單:如果列表包含X,然後在列表x的實例的數量將是> 0。 我已經定義了包含與如下計數功能: Fixpoint contains (n: nat) (l: list nat) : Prop :=
match l with
| nil => False
| h :: t => if beq_nat h n then T