Questions tagged «dependent-type»

类型理论和类型系统的重叠特征。

1
证明依赖类型检查是可判定的证明技术
我处于一种情况下,我需要证明对于我正在研究的依赖类型演算,类型检查是可以决定的。到目前为止,我已经能够证明该系统正在高度规范化,因此定义相等性是可判定的。 在我阅读的许多参考文献中,类型检查的可判定性被列为强规范化的必然结果,我相信在这种情况下会如此,但是我想知道如何才能真正显示出这一点。 特别是,我坚持以下几点: 仅仅因为类型良好的术语会高度归一化,并不意味着该算法不会在非类型良好的输入上永远循环 由于逻辑关系通常用于显示强规范化,因此在进行类型检查术语时,没有方便的递减度量。因此,即使我的类型规则是针对语法的,也无法保证应用规则最终会终止。 我想知道,有没有人能很好地证明依赖类型语言的类型检查可判定性证明?如果是小的核心演算,那很好。任何讨论证明可判定性的证明技术的东西都将是很棒的。

1
对于(0 = 1)表示false的事实的引用需要MLTT中的Universe
众所周知,从马丁·洛夫类型理论的不等式(例如)得出矛盾需要一个宇宙。(0 = 1 )→ ⊥(0=1)→⊥(0=1) \to \bot 证明也非常简单-在没有Universe的情况下,我们可以擦除任何依赖类型的依赖关系,以得到简单类型的形状,因此证明意味着我们可以证明以获取任意原子,这当然是不可能的。(0 = 1 )→ ⊥(0=1)→⊥(0=1) \to \botp → ⊥p→⊥p \to \botppp 但是,我找不到谁首先证明了这一点!有人参考吗?

2
将类型论中的有限集理论形式化
大多数证明助手都有“有限集”概念的形式化形式。但是,这些形式化有很大的不同(尽管人们希望它们在本质上都等同!)。在这一点上,我还不了解所涉及的设计空间,以及每种形式化的优缺点。 我特别想了解以下内容: 我可以在简单类型理论中公理化有限集(即由有限数量的居民居住的类型)吗?系统F?这样做的缺点是什么? 我知道可以在依赖类型的系统中“优雅地”完成。但是,从经典的角度来看,最终的定义似乎极为陌生。[我并不是说他们错了,远非如此!]。但是我也不明白为什么它们也是“正确的”。我了解他们选择了正确的概念,但是“以这种方式说”的更深层原因是我没有完全掌握。 基本上,我想对类型理论中“有限集”概念的形式化的设计空间进行合理的介绍。

1
将范畴理论的单性与骨架概念联系起来
假设我从事同伦类型理论研究,而我唯一的研究对象是常规类别。 等效项由函子和 ,它们提供了类别。存在自然同构和因此该仿函数和“反”仿函数转换为单位函子。F:d ⟶ ÇF:d⟶CF:{\bf D}\longrightarrow{\bf C}ģ :Ç ⟶ dG:C⟶dG:{\bf C}\longrightarrow{\bf D} Ç ≃ dC≃d{\bf C} \simeq {\bf D}α :Ñ 一吨(˚F摹,1个C)α:ñ一个Ť(FG,1个C)\alpha:\mathrm{nat}(FG,1_{\bf C})β:Ñ 一吨(ģ ˚F,1个d)β:ñ一个Ť(GF,1个d)\beta:\mathrm{nat}(GF,1_{\bf D}) 现在单叶涉及等价于身份类型我选择说说类别故意类型的理论。由于我仅处理类别,并且如果它们具有同构骨架,则它们是等效的,因此我想知道是否可以通过传递给类别的骨架来表达单调公理。C = DC=d{\bf C}={\bf D} 或者,否则,我是否可以定义身份类型,即语法表达式 ,其本质上说“存在骨架(或同构词),和都等效。”?C = D: = …C=d:=…{\bf C}={\bf D}:=\dotsCC{\bf C}dd{\bf D} (在上文中,我尝试用更容易定义的概念-范畴理论概念来解释类型理论。之所以这样考虑,是因为从道德上讲,在我看来,公理通过硬编码来“纠正”有意类型理论的等价的原则,这已经是类别理论陈述的制剂的一个自然部分,例如指定对象仅在术语通用属性。)


1
双色构造微积分的作用是什么?
因此,我正在阅读一些有关阐述的内容,特别是基于双色构造演算的算法,我有些困惑。我不明白该广告的确切目的是什么CCbiCCbiCC^{bi}是。似乎与CCCCCC函数的隐式参数和显式参数之间有区别。特别是,我看不到它如何允许您编写(id0)(id0)(id\; 0) 代替 (idN0)(idN0)(id\; \mathbb{N}\; 0)。如果我们假设一个用于全局定义的系统,那么, id:(ΠA|Type.(Πx:A.A))id:(ΠA|Type.(Πx:A.A))id : (\Pi A\; |\; \mathsf{Type}\; . (\Pi x : A\; . A)) 和 id=(λA|Type.(λx:A.x))id=(λA|Type.(λx:A.x))id = (\lambda A\; |\; \mathsf{Type}\; . (\lambda x : A . x))。 规则真的允许吗 (id0)(id0)(id\; 0)?当然语法可以,但是我在键入关系中看不到它。我想念什么吗?我是否了解角色CCbiCCb一世CC^{bi} 错误地? 另外,会合的财产不会丢失吗?我想我的问题是,我在阅读有关精心制作的文章时,并没有读太多关于CCbiCCbiCC^{bi}在这之前。介绍它的好论文是什么? 编辑:更具体地说,我问(id0)(id0)(id\; 0) 被接受代替 (idN0)(idN0)(id\; \mathbb{N}\; 0) 当明确和隐含的规则 ΠΠ\Pi应用程序是相同的模语法。我认为两者之间没有区别::: 和 ||| 两者的规则似乎相同。 编辑:我不是在谈论构造的隐式演算,这是一个不同的理论,对于显式有不同的规则ΠΠ\Pi的(应用程序与生成。) …

2
归纳类型的声明顺序重要吗?
我想知道归纳类型的声明顺序是否重要。 例如,在Coq中,您可以Nat通过以下方式之一进行定义: Inductive Nat := | O : Nat | S : Nat -> Nat. 要么 Inductive Nat := | S : Nat -> Nat | O : Nat. 这也许会改变自动生成的消除器中参数的顺序,但这没什么大不了的。 我想知道的是,是否可以编写像这样的声明 Inductive typewhereordermatters := | cons1 : type1 | cons2 : type2. 其中type2是一个依赖型,这取决于cons1?(在这种情况下,以其他顺序编写声明将没有任何意义,因为type2要引用的声明cons1尚不存在)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.