Questions tagged «ct.category-theory»

范畴论中的问题

7
类别理论在TCS中的扎实应用?
我一直在学习一些类别理论。当然,这是另一种看待事物的方式。(对于未曾看过它的人,这是一个非常粗略的总结:类别理论提供了仅根据对象之间的功能关系来表达各种数学行为的方式。例如,两组的笛卡尔积之类的东西完全按照其他函数的行为方式,而不是集合中的元素是什么。) 我有些模糊的理解,范畴论在编程语言/逻辑(“理论B”)方面很有用,我想知道算法和复杂性(“理论A”)能从中受益。但是,如果我知道理论B中类别理论的某些可靠应用,那可能会帮助我起步。(我已经隐含地假设,到目前为止,理论A中没有发现任何应用,但是如果您有其中一些,那甚至对我来说更好!) 我所说的“可靠的申请”是: (1)应用程序非常依赖于类别理论,以至于不使用机器就很难实现。 (2)应用程序调用至少一个类别理论的非平凡定理(例如,Yoneda引理)。 (1)可能暗示(2),但是我想确保它们是“真实的”应用程序。 虽然我确实有一些“理论B”背景,但已经有一段时间了,因此,不加任何术语都将不胜感激。 (根据我得到的答案的种类,我可能会在以后将这个问题转换为社区Wiki。但是我确实希望有良好的应用程序,并且要有很好的解释,所以似乎不给某些答卷人奖励是可耻的。)

2
用分类术语解释应用函子-单向函子
我想Applicative从范畴论的角度理解。 该文档的Applicative说,这是一个强烈的宽松monoidal仿函数。 首先,维基百科有关单调子函子的页面说,单调子函子要么松懈要么强大。因此在我看来,其中一个来源是错误的,或者它们使用的术语不同。有人可以解释吗? 其次,哪些Applicative是单曲面函子的单曲面类别?我假设函子是标准Haskell类别(对象=类型,态射=功能)上的内函子,但我不知道该类别上的单曲面结构是什么。 感谢帮助。

12
理论计算机科学的面向代数的分支
我在代数方面有很强的基础,即 交换代数 同源代数 场论 范畴论 而且我目前正在学习代数几何。 我是一门数学专业,倾向于转向理论计算机科学。牢记上述领域,理论上哪个领域最适合切换到哪个领域?也就是说,通过追求上述领域而获得的理论和数学成熟度可以在哪个领域发挥自己的优势?


2
无限序列的有界输入双射
这是我没有解决的难题。我想知道这个问题是否已经知道,或者有一个简单的解决方案。 它可以定义一个双射使用bicartesian封闭类别的属性。安德烈·鲍尔(Andrej Bauer)在他的博客上以“ 建设性的宝石:杂耍指数 ”的形式发布了对此含义的解释。3ñ≅5ñ3N≅5N 3^\mathbb{N} \cong 5^\mathbb{N} 这个双射有一个有趣的特性:它是“有界输入”,意味着输出的每个组成部分仅取决于输入的有很多组成部分。然而,对于似乎这种结构只能说明ķ Ñ和升Ñ是同构的,如果ķ和升都是奇数或都是偶数。这留下了一个问题:ķ ,升≥ 2k,l≥2k,l\geq 2ķñkN k^\mathbb{N} 升ñlN l^\mathbb{N} ķkklll 是否有到3 N的有界输入双射?2N2N 2^\mathbb{N} 3N3N 3^\mathbb{N} 以下是简短描述问题的简短注释: 关于无限序列的有界输入双射的一个猜想。 定义: 函数是有界的输入,如果存在一个整数ķ 使得输出的每个分量˚F至多仅取决于ķ 输入的组件。更正式地,˚F是有界的输入,如果为每个索引Ĵ ∈ Ĵ 有索引我1,⋯ ,我ķ ∈ 我 和一个函数˚F 米:Xf:∏i∈IXi→∏j∈JYjf:∏i∈IXi→∏j∈JYjf : \prod_{i \in I} X_i \rightarrow \prod_{j\in J} Y_j kkkfffkkkfffj∈Jj∈Jj \in Ji1,⋯,ik∈Ii1,⋯,ik∈Ii_1,\dotsb,i_k \in I …


2
线性逻辑的民间模型是什么?
线性类型在PL中最常见的应用可能是使用它们来提供控制别名的语言(即,线性值或多或少都具有指向它的单个指针)。 但是这种用法和线性逻辑的典型称谓模型之间存在一些不匹配。IIRC的Benton表明,如果笛卡尔封闭类别具有很强的可交换单子,那么其代数类别将是对称单曲面封闭(即线性逻辑模型)。但是该定理不适用于别名控制用法,因为状态monad不是可交换的。确实,在过去的几年中,辛普森和他的同事们给出了一般强单子的计算,而线性单子不是术语计算。 所以我的问题是,带有状态的线性语言的指称语义是什么?是否存在一个非退化(即张量不是笛卡尔乘积)对称单项封闭类别,可以在其中建模分配,读取和线性更新?


1
笛卡尔封闭类别中的箭头和指数对象有什么区别?
在笛卡儿闭范畴(CCC),存在所谓的指数的对象,撰写。当CCC被视为简单类型λ演算的模型时,指数对象(如B A)表征了从A类型到B类型的函数空间。指数对象由称为c u r r y的箭头引入:(A × B → C )→ (A → C BBABAB^Aλλ\lambdaBAB一种B^AAAABBB和由箭头消除称为一个p p 升ÿ :Ç 乙 × 乙→ Ç(不幸的是称为 Ë v 一个升上类别理论在大多数文本)。我在这里的问题是:指数对象 C B与箭头 B → C有什么区别?curry:(A×B→C)→(A→CB)curry:(A×B→C)→(A→CB)curry : (A \times B \rightarrow C) \rightarrow (A \rightarrow C^B)apply:CB×B→Capply:CB×B→Capply : C^B \times B \rightarrow CevalevalevalCBCBC^BB→CB→CB \rightarrow C

3
从类别理论的角度看常规语言
我注意到字母表上的常规语言可以自然地看作是一个姿势,甚至是一个格子。此外,串联与空语言一起在此类别上定义了严格的单项式结构,该结构通过连接进行分配(我不确定是否满足)。这在常规语言的理论或实践中是否有用?是否有一些不错的附加条件,例如我们可以将Kleene星定义为一个吗?εΣΣ\Sigmaϵϵ\epsilon 这是在Coursera的“编译器”课程中提出的一个问题的副本:https ://class.coursera.org/compilers/forum/thread ? thread_id = 311

4
数据结构同构
免责声明:我不是CS理论家。 来自抽象代数,我习惯于处理等同于同构的事物,但是我很难将这个概念转换为数据结构。我首先以为,设置理论上的双射态射影就足够了,但是我很快遇到了麻烦-它们只是编码而不能捕捉数据结构的计算本质。 有没有更严格(但更有用)的定义?(或者,如果不是,为什么?)“构造数据结构”类别的规范定义吗?

1
柯尔莫哥洛夫复杂性的不可计算性是否源自劳维尔的不动点定理?
许多定理和“悖论”-康托尔的对角化,阴影的不确定性,柯尔莫哥洛夫复杂性的不确定性,哥德尔不完全性,柴廷不完整性,拉塞尔悖论等-都具有通过对角化的相同证明(请注意,这比他们可以说的更具体)所有这些都可以通过对角化来证明;相反,感觉所有这些定理实际上都使用相同的对角化;有关更多详细信息,请参见例如Yanofsky,或者更简短和不那么形式化地说明 我对这个问题的回答。 Sasho Nikolov在对上述问题的评论中指出,其中大多数是Lawvere不动点定理的特例。如果它们都是特例,那么这将是捕捉上述想法的一个好方法:确实会有一个带有一个证明(洛夫韦尔)的结果,所有上述结果都将作为直接推论。 现在,由于暂停问题及其朋友的哥德尔不完整和不确定性,众所周知,他们遵循Lawvere的不动点定理(例如,参见here,here或Yanofsky)。但是,尽管潜在的证据在某种程度上“是相同的”,但我并没有立即看到如何针对不确定的Kolmogorov复杂性来做到这一点。所以: 柯尔莫哥洛夫复杂性的不可确定性是否是劳维尔不动点定理的快速推论-不需要额外的对角线化?

1
子类型的分类语义是什么?
从Curry-Howard-Lambek开始,类型理论,逻辑和类别一直是三位一体。我很好奇,当您在类型理论中添加(强制性)子类型时,您会得到什么分类语义-似乎根本没有对此进行太多探讨。 通常,在类型理论中添加强制性子类型不会破坏其元理论属性(例如强规范化),因此,我认为其分类语义应该是实际感兴趣的内容!

3
在共母和函子之间是否存在类似共同应用函子的概念?
任何monad也是可应用的函子,任何可应用的函子都是函子。另外,任何comonad都是函子。在共模函子和函子之间是否有类似的概念,例如共应用函子,它的特性是什么? \begin{array}{c} \end{array} 函子↑适用函子↑单音函子↑???↑科莫纳兹函子函子↑↑适用函子???↑↑单音科莫纳兹\begin{array}{cc} \mbox{Functors} & & \mbox{Functors} \\ \uparrow & & \uparrow \\ \mbox{Applicative functors} & & ??? \\ \uparrow & & \uparrow \\ \mbox{Monads} & & \mbox{Comonads} \\ \end{array} 更新:我也对这种概念的可能用途感兴趣。

2
类别理论,计算复杂度和组合关系?
我一直在尝试阅读“ 函数算法设计的珍珠 ”,然后阅读“ 编程代数 ”,在递归(和多项式)定义的数据类型与组合对象之间有着明显的对应关系,它们具有相同的递归定义并随后处于领先地位如组合物种简介中所述(我读“ 物种,函子和类型,噢,我的天哪! ”)。 那么,对于第一个问题,是否有一种方法可以从幂级数中恢复生成(递归)方程?那是事后的想法。 我对初始代数和最终共代数的概念更感兴趣,因为它们是“定义数据结构的过程”。函数式编程中有一些实用规则,涉及组成,代数之间的映射乘积以及类似内容,例如本教程所述。在我看来,这可能是解决复杂性的非常有效的方法,例如,在这种情况下恢复Master定理看起来相当简单(我的意思是,您必须做相同的论点,因此在这种情况下收益不大),以及原始代数的独特变形,以及F多项式函子的A和FA之间的代数是同构的(我误会了吗?),这使我认为,这种方法在分析E的复杂度方面可以有很多好处。对数据结构的操作。 从实践的角度来看,看起来像融合规则(基本上是相互组合代数态,子代态和一般态的方式)是用于程序转换和重构的非常强大的优化技术。我认为对这些规则的充分利用可以产生最佳程序是正确的(没有不必要的中间数据结构或其他额外操作)。 我在这里上东西吗?从学习的角度来看,以这种方式看一下计算复杂性是否是受益者?我们可以拥有“漂亮的”初始代数的结构是否因某些问题而过于局限? 我主要是想寻找一种方法来根据搜索空间的结构以及“搜索空间”和“搜索算法”通过某些“不错的”对象(例如函子的初始代数和了解在查看更复杂的结构时尝试以这种方式查看内容是否有用。

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.