我怎样才能简化这个类型?
liftM2 {A B R : Set} {m} {x : Monad m} (f : A -> B -> R) (ma : m A) (mb : m B) : (m R) 有什么技巧可以减少这种类型吗?我那里有一个多余的x。 M…
对目标类型的子项进行策略性抽象
作为一个粗略且未经训练的背景,在 HoTT 中,人们从归纳定义的类型中推断出 Inductive paths {X : Type } : X -> X -> Type := | idpath : forall x: …
Coq 在 Let 定义的隐式参数方面的行为不一致
我发现 Coq 在隐式参数方面存在某种不一致的行为。 Section foo. Let id1 {t : Set} (x : t) := x. Let id2 {t : Set} (x : t) : t. assumption. Qed.…
如何在 Coq 中证明 forall n:nat, ~n
我已经困惑了几个小时,不知道如何 forall n:nat, ~n
Coq 中 setoid_rewrite 的奇怪行为
我在使用 setoid_rewrite 策略重写时遇到问题。在下面的实例声明中,我希望 setoid_rewrite fmapComp 会将 fmap iso ∘ fmap inv 重写为 fmap (iso ∘…
控制从 Coq 提取的代码中构造函数的导出
我正在考虑在 Coq 中编写代码并提取此代码以在大型 Haskell 项目中使用。我想在 Coq 中构建单个模块,证明属性,然后使用 Haskell 的模块系统来防止违…
如何进行 Coq 证明?
我的 Coq 证明有问题,希望得到一些帮助和指导。我的部分定义如下: Inductive Architecture : Set := | Create_Architecture (Arch_Name: string)(My…
模式匹配不专门化类型
我正在 Coq 中玩耍,尝试创建一个排序列表。 我只是想要一个接受列表 [1,2,3,2,4] 并返回类似 Sorted [1,2,3,4] 的函数 -即去掉坏的部分,但实际上并…
在某些 Coq 理论中 (a:b) c 和 [a:b] c 意味着什么?它在哪里定义?
我看到了一个非常奇怪的语法:类型中的 (name:type1) type2 和表达式中的 [name:type] expr ,看起来像是 Pi 和 Lambda 的替代语法,但经过几个小时的…