依赖类型是依赖于值的类型。很少有语言支持它们 - 例子包括Agda,ATS,Coq,Epigram,Scala(通过路径依赖类型,近似变体)和Idris,它们渴望生成系统级质量的本机代码。
作为一种学习经验,我正在尝试根据本文提出的一种,在AGDA中使用Continuation-passing样式实现经过验证的常规表达匹配器。 我有常规的类型
为了允许参数丢失,我可以更改配置类型
data 𝕀 : Set where ⊤ : 𝕀 ⊥ : 𝕀 -∞ : ℤ → 𝕀 _+∞ : ℤ → 𝕀 I : (l : ℤ) → (u : ℤ) → {l ≤ u} → 𝕀
我们有 数据nat = z | S nat 类型VEC :: NAT->类型 - >类型 数据vec n a where nil :: vec z a (:: :: :::: vec n a-> vec(s n)a Infixr 4 :::: 衍生实例可折叠(vec n ...
我非常熟悉在声明归纳类型时区分参数和索引的处理。我不确定的是把事情放在...之前是否有什么区别
在 Lean 4 中,此代码可以编译: 变量(α:类型) 变量 (f : {p : α → Prop} → (x : α) → p x) 变量 (g : {a b : Prop} → a → a ∨ b) #检查 g ∘ f 但这段代码没有: 变量(α:类型)(p...
为什么 `given ... with { ... }` 和 `given ... = new { ... }` 的工作方式不同?
这是一个让我摸不着头脑的例子: // 转换 A -> B 的特征 特征变压器[A,B] { def 变换(a: A): B } // 创建 Transformer 的特征,该 Transformer 会编码...
调用模板定义时尚未声明的依赖函数是否会导致程序成为 IFNDR?
假设使用最新的 C++ 标准,请考虑: 模板 void foo(T t){ fuu(); } 模板 无效 fuu(){} int main() { 富(5L); } 居住 这个程序是吗
所以我尝试编写一个扩展视图来增强 PolyFunction: 对象 PolyFnExtension { 类型 Base[O] = Function1[Any, Any] { def apply(x: 任意): O } 扩展名 [O](基数: 基数 [O]) { ...
Coq/Proof General 中类似 Agda 的编程?
与 Agda 不同,Coq 倾向于将证明与函数分开。 Coq 提供的策略非常适合编写证明,但我想知道是否有办法复制一些 Agda 模式功能。 具体...
这是一个最小的(非)工作示例。 中缀 4 _≡_ data _≡_ {a} {A : 设置 a} (x : A) : A → 设置 a 其中 参考:x == x {-# 内在平等 _≡_ #-} 数据类型₁:设置在哪里 id:类型₁ 非...
我正在尝试基于 CoqExtLib 中定义的有限映射来执行以下证明。但是,我遇到了一个问题,证明中显示的 RelDec 实例与实例不同......
在 Python 中,我经常编写函数来过滤集合以查找特定子类型的实例。 例如,我可能会在 DOM 中查找特定类型的节点,或者在......中查找特定类型的事件。
我尝试使用归纳数据类型的语法,但收到错误消息“互归纳类型必须编译为具有依赖性消除的基本归纳类型”。 以下是我的注意示例...
看起来依赖类型语言并不是图灵完备的。为什么我们不能允许每个函数都具有通用递归(这将使语言图灵完整)? 有什么东西
例如: Agda:https://en.wikipedia.org/wiki/Agda_(programming_language)#:~:text=Agda%20is%20a%20total%20语言,可能%20to%20证明%20任意%20语句 Coq:有什么实用的
例如Agda和Coq。 与 Idris2 和 Fstar 相比。 另外,诸如 Agda 之类的依赖类型编程语言不是图灵完备的,是否存在实际缺点,或者它是……