agda相关内容

路径之间的平等

使用 cubical-demo 库,我想证明以下内容很简单: {-#OPTIONS --cubical#-} open import Cubical.PathPrelude foo:∀{ℓ} {A:设置ℓ} {xy:A}(p:x≡y)→反身反射p p foo p =? 可惜,它在定义上并不成立:尝试使用 refl 失败, primComp(λ_→ ..

在agda中进行反射:解释同余属性

在以下等式定义下,我们将refl作为构造函数 data_≡_{a} {A:Set a}(x:A):A→设置a其中 refl:x≡x 并且我们可以证明函数在相等性上是一致的 cong:∀{ab} {A:设置一个} {B:设置b} (f:A→B){mn}→m≡n→fm≡fn cong f refl = refl 我不确定我能否解析这里到底发 ..
发布时间:2020-10-30 05:55:57 其他开发

如何在Coq中明确使用归纳原理?

我试图用Coq中的归纳原理明确证明命题同一性的对称性,但是我不能像agda中那样用归纳原理做到这一点。我不知道如何在Coq中本地声明变量,也不知道如何展开定义,如下所示。如何获得类似于下面的agda的证明? 归纳ID(A:类型)(x:A): A->类型:= |反射:Id A x x。 (*归纳式*)* 定理symId {A} {x y}:Id A x y-> ID A y x。 ..
发布时间:2020-10-09 06:47:38 其他开发

可以为教会编码的Nat归纳吗?

我只是想知道是否有可能对Idris,Agda,Coq等类似物的教堂编码Nat类型进行归纳。请注意,这与在CoC上进行处理(这是不可能的)不同,因为我们在CoC上具有更高的表达能力(例如,我们可以提取Sigma的第二个元素)。 以下是有关Idris的一个不可靠的草图(有很多语法问题): CN:类型 CN =(t:类型)-> t-> (t-> t)-> t CS:CN-> CN ..
发布时间:2020-10-09 06:15:53 其他开发

关于正则表达式的证明

有人知道以下示例吗? 关于正则表达式(可能使用反向引用)(例如 Coq )。 以依赖类型的语言(例如 Agda >)有关正则表达式。 解决方案 使用从属类型的经过认证的编程有一节介绍如何创建经过验证的正则表达式匹配器。 Coq贡献者具有自动机贡献可能会有用。 Jan-Oliver Kaiser为其单身汉论文。 ..
发布时间:2020-10-09 06:13:32 其他开发

仅数学证明助手

大多数证明助手是具有依赖类型的功能编程语言.他们可以证明程序/算法.相反,我对最适合数学且仅适用于数学的证明助手感兴趣(例如微积分).你能推荐一个吗?我听说过Mizar,但我不喜欢关闭源代码,但是如果最适合数学,我会使用它.像Agda和Idris这样的新语言适合数学证明的程度如何? 解决方案 Coq 具有涵盖实际分析的广泛库.各种发展浮现在脑海: 标准库以及在其上构建的项目,例如现已 ..
发布时间:2020-07-23 19:02:29 其他开发

证明Agda中子集的可判定性

假设我在Agda中具有这个子集的定义 Subset : ∀ {α} → Set α → {ℓ : Level} → Set (α ⊔ suc ℓ) Subset A {ℓ} = A → Set ℓ 我有一套 data Q : Set where a : Q b : Q 是否有可能证明q的所有子集都是可判定的,为什么? Qs? : (qs : Subset Q {zer ..
发布时间:2020-07-21 18:39:23 其他开发

阿格达和伊德里斯之间的区别

我开始研究依赖类型的编程,并且发现Agda和Idris语言是最接近Haskell的语言,所以我从这里开始. 我的问题是:它们之间的主要区别是什么?两种类型的系统都同样富有表现力吗?进行全面的比较并讨论收益将是很棒的. 我已经发现了一些东西: Idris具有类型类àla Haskell,而Agda带有实例参数 Idris包含一元和适用的符号 它们两者似乎都具有某种可重新绑定的语 ..
发布时间:2020-07-12 05:36:11 其他开发

类型参数和索引之间的区别?

我对依赖类型是陌生的,并且对两者之间的区别感到困惑.似乎人们通常会说一种类型是由另一种类型参数化,而由某些值索引.但是,在依赖类型的语言中,类型和术语之间是否没有区别?参数和索引之间的区别是根本的吗?能否给我展示一些示例,这些示例在编程和定理证明中都表现出不同的含义? 解决方案 当您看到一系列类型时,您可能会想知道它具有的每个参数是 parameters 还是 indices . 参 ..
发布时间:2020-07-12 05:36:04 其他开发

unionWith的终止检查

我在终止检查方面遇到了问题,与在此问题中描述的问题非常相似以及 Agda错误报告/功能请求. 问题使编译器确信以下unionWith终止.通过对重复键使用组合功能,unionWith可以合并两个表示为按键排序的(键,值)对的列表的映射.有限映射的Key参数是映射中包含的键的(非紧)下限. (定义此数据类型的一个原因是提供一个语义域,我可以在其中解释AVL树,以证明有关它们的各种属性.) ..
发布时间:2020-07-10 23:20:24 其他开发

终止功能检查

我很难说服Agda终止检查下面的功能fmap和在Trie的结构上递归定义的类似功能. Trie是 trie ,其域为Type,由单元,乘积和不动点组成的对象级类型(为了使代码最少,我省略了乘积).问题似乎与我在Trie的定义中使用的类型级别替换有关. (表达式const (μₜ τ) * τ表示将替换const (μₜ τ)应用于类型τ.) module Temp where ope ..
发布时间:2020-07-10 23:20:07 其他开发

在Set₀建模系统F的参数多态性

在系统F中,多态类型的种类是*(因为无论如何这是系统F中唯一的种类...),例如对于以下封闭类型: [] ⊢ (forall α : *. α → α) : * 我想用Agda表示系统F,并且因为所有内容都在*中,所以我想将类型(如上)解释为Agda Set s;像这样 evalTy : RepresentationOfAWellKindedClosedType → Set 但 ..
发布时间:2020-07-02 18:34:03 其他开发

适当使用Universe多态性

我已经在一个Agda项目上工作了几周,尽我所能地轻而易举地忽略了水平多态性.不幸的是(或者幸运的是)我似乎已经到达需要开始理解它的地步. 直到现在,我仅在将级别变量用作Rel的第二个参数(或REL的第三个参数)时才使用级别变量.否则,我将省略它们,而直接使用Set即可.现在,我有一些客户端代码可以明确量化级别a,并尝试将某些类型的形式Set a传递给我的现有代码,而该代码现在是多态的.在下面 ..
发布时间:2020-07-02 18:33:59 其他开发

le的归纳原理

对于归纳类型nat,生成的归纳原理在其语句中使用构造函数O和S: Inductive nat : Set := O : nat | S : nat -> nat nat_ind : forall P : nat -> Prop, P 0 -> (forall n : nat, P n -> P (S n)) -> forall n : nat, P n 但是对于le,生 ..
发布时间:2020-06-26 18:50:25 其他开发

终止结构感应

我无法让Agda的终止检查器接受使用结构归纳定义的功能. 我创建了以下示例,它是展示此问题的最简单示例. 尽管size总是在严格较小的组件上重复出现,但以下定义却被拒绝. module Tree where open import Data.Nat open import Data.List data Tree : Set where leaf : Tree branch ..
发布时间:2020-06-26 18:50:12 其他开发

Data.AVL的函子实例

我想为Data.AVL.Indexed.Tree定义一个仿函数实例.这似乎很棘手,因为存储树的上下边界的索引的类型Key⁺“取决于"树中值的类型(或类型族). 我想做的是在下面实现fmap: open import Relation.Binary open import Relation.Binary.PropositionalEquality module Temp {k ℓ ..
发布时间:2020-05-24 23:02:49 其他开发

通过(monadic)join和fmap进行终止检查替换

我正在使用大小类型,并且具有用于替换类型项的替代函数,该终止项会检查是否直接给出定义,但如果通过(monadic)join和fmap进行分解则不会进行检查. {-# OPTIONS --sized-types #-} module Subst where open import Size 要显示此问题,具有单位和总和就足够了.我有Trie和Term的数据类型,并且在Term内使 ..
发布时间:2020-05-10 21:46:45 其他开发