如果我试图证明Nat和Bool在Agda中不相等: open import Data.Natopen import Data.Emptynoteq () 我得到了错误: Failed to solve the following constraints:
Is empty: ℕ ≡ Bool 我知道不可能对类型本身进行模式匹配,但令我惊讶的是,编译器没有看到Nat和Bool具有不同的(类型)构造函
有了以下相等的定义,我们就有了refl作为构造函数。data _≡_ {a} {A : Set a} (x : A) : A → Set a where并且我们可以证明函数在等式上是一致的。我认为我们是在隐藏参数上进行模式匹配:如果我们用另一个标识符替换第一次出现的情况,就会得到一个类型错误。在模式匹配之后,我认为m和n的定义是相同的。然后魔术发生了(应用了关系功
我正在尝试证明一个涉及使用解构let表达式的函数的定理,并尝试使用match goal策略来解构右侧,但由于某些原因,模式并不像我期望的那样匹配: match goal with
(* why doesn't如果你有来自Certified Programming with Dependent Types的Cpdt (我非常喜欢他的自动化风格),这里有一个应该可以运行的代码片段。我已经找