我不想禁用在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