我是数学专业的研究生,具有扎实的逻辑背景。我参加了为期一年的逻辑研究生课程以及有限模型理论和强制和集合理论的研究生课程。大多数CS文本似乎只假设逻辑的背景非常温和,其中大部分涵盖命题逻辑和一阶逻辑的基础。
我想获得一些关于CS应用程序去向的指导,在CS应用程序中使用了来自逻辑的大量材料。我的兴趣之一是类型理论和形式方法。除了模型检查和编程语言入门书籍外,有人可以建议一些不错的阅读材料吗?
我是数学专业的研究生,具有扎实的逻辑背景。我参加了为期一年的逻辑研究生课程以及有限模型理论和强制和集合理论的研究生课程。大多数CS文本似乎只假设逻辑的背景非常温和,其中大部分涵盖命题逻辑和一阶逻辑的基础。
我想获得一些关于CS应用程序去向的指导,在CS应用程序中使用了来自逻辑的大量材料。我的兴趣之一是类型理论和形式方法。除了模型检查和编程语言入门书籍外,有人可以建议一些不错的阅读材料吗?
Answers:
我在这里简要回顾了一些领域,试图将重点放在吸引具有高级数学逻辑背景的人的想法上。
从计算机科学的角度来看,经典模型理论的最简单限制是研究有限宇宙上的结构。这些结构以关系数据库,图形和计算机科学中无处不在的其他组合对象的形式出现。第一个观察结果是,一阶模型理论的几个基本定理在局限于有限模型时会失效。这些包括紧致性定理,Godel完备性定理和超乘积构造。Trakhtenbrot表明,与经典的一阶逻辑不同,有限模型的可满足性是不确定的。
该区域的基本工具是Hanf本地,Gaifman本地以及Ehrenfeucht-Fraisse游戏的众多变体。研究的主题包括无限逻辑,带计数的逻辑,定点逻辑等,始终侧重于有限模型。有工作致力于一阶逻辑的有限变量片段中的表达性,这些逻辑通过卵石博弈来表征。探究的另一个方向是确定经典逻辑的属性,这些属性在受限于有限模型的情况下仍然可以幸免。Rossman在该方向上的最新结果表明,某些同态保存定理仍然适用于有限模型。
60年代后期的工作表明,程序的许多特性可以用命题逻辑的扩展表示,这些逻辑支持定点推理。所述modal- 演算是在此期间已经发现了广泛的自动化形式方法应用而开发的一个逻辑。许多形式化方法与时间逻辑或Hoare式逻辑相关,并且其中许多可以从μ演算的角度来看。事实上,我听到有人说,μ演算是时间逻辑的汇编语言。
Kozen 在介绍微积分的论文中给出了公理化,并且仅证明了它对于逻辑的有限片段是合理且完整的。在Walukiewicz给出证明(基于无限自动机)之前,完整性证明是逻辑计算机科学中的一大难题。μ演算的模型理论 有很多丰富的结果。类似于面包车本瑟姆定理为模态逻辑,亚宁和Walukiewicz证明了μ演算是意味深长相当于一元二阶逻辑的互模拟不变片段。该μ微积分的特征还在于无限树上的奇偶游戏和自动机。该逻辑的可满足性问题已完成EXPTIME,Emerson和Jutla表明该逻辑具有较小的模型属性。布拉德菲尔德表明的交替分层结构演算严格,而Berwanger表明变量层次也是严格。在这一领域中使用的重要经典工具是拉宾定理和马丁的确定性定理。
线性时间逻辑从哲学逻辑被引入计算机科学,以推理计算机程序的行为。它被认为是一种很好的逻辑,因为它可以表达不变性(无错误)和终止之类的属性。时间逻辑的证明理论是由Manna和Pnueli(以及其他人,后来)在他们的文章和书中开发的。LTL的模型检查和可满足性问题都可以通过在无限单词上的自动机来解决。
Pnueli在其原始论文中介绍了程序推理的逻辑,也证明了有关LTL的基本知识。Vardi和Wolper在Buchi自动机中将LTL公式简化了很多。与时间逻辑的联系导致人们对算法进行了深入的研究,这些算法可有效地从LTL导出自动机,以及确定和补充Buchi自动机。坎普的定理表明,LTL与自和,直到模态在表达上等效于具有阶数关系的单子一阶逻辑。正在进行的工作将这些结果扩展到密集线性阶次和时间间隔上的逻辑。Etessami和Wilke为LTL开发了Ehrenfeucht-Fraisse游戏的一种变体,并使用它们来证明直到等级严格。另一项工作是扩展LTL以表达任意的 regular属性。这导致线性时间μ演算,是模态μ演算的线性时间对应物。与模态对应物不同,线性时间交替层次在第2级崩溃。
有限结构上CTL的模型检查问题是在多项式时间内。CTL *的模型检查问题已完成EXPTIME。CTL *的公理化是一个具有挑战性的开放性问题,最终由Reynolds 2001解决。通过Hafer和Thomas的定理为CTL *给出了范本特姆模态逻辑定理和Kamp的LTL定理类似物,证明了CTL *对应于二叉树上的单子二阶逻辑的片段。Hirschfeld和Rabinovich后来的表征是,CTL *在表达上等同于具有路径量化功能的MSO的双模拟不变片段。
-话。此外,他们使用基本拓扑显示每个线性时间属性都可以表示为安全性和活动性的交集。该结果具有重大的实际后果,因为它意味着无需构建复杂的属性检查器,而足以构建安全性和活动性检查器。进一步的减少表明,构建一个不变性检查器和一个终止检查器就足够了。安全-寿命特性描述由Manolios和Trefler扩展到树木,最近又由Clarkson和Schneider在超特性框架中扩展到痕迹集。
在有语言的地方,计算机科学家将拥有自动机。输入关于无限词和无限树的自动机理论。令人非常遗憾的是,尽管无限词自动机在有限词自动机的两年内就出现了,但是基本计算机科学课程却很少涉及这一基本主题。无限单词和树上的自动机提供了一种非常强大的方法,可以证明对于非常丰富的逻辑族的可满足性的可判定性。
逻辑游戏和无限游戏是一个活跃的研究领域。游戏论的概念在计算机科学中无处不在,包括不确定性和并行性(交替),程序及其环境,通用和存在的量化,盒子和钻石形式等之间的对偶。研究上面列出的各种非经典逻辑的性质的好方法。
与自动机的接受标准一样,我们在游戏中拥有不同的获胜条件,许多可以证明是等效的。自从您询问经典结果以来,Borel确定性定理和Gale-Stewart游戏经常隐居于我们研究的几种游戏模型的背景中。我们这个时代的一个紧迫问题是解决奇偶游戏的复杂性。Jurdzinski给出了一种策略改进算法,并表明确定赢家是在UP和coUP复杂度类的交集中。Jurdzinski算法的精确复杂性一直持续到弗里德曼(Friedmann)在2009年为其设定指数时间下界之前。
数据库理论是一个广泛的领域,提供了许多逻辑应用程序。描述性复杂性和有限模型理论是紧密相关的领域。据我所知,这些领域都倾向于使用代数逻辑风格(紧随Birkhoff和Tarski的脚步),而不是证明理论。然而,一些工作的彼得·邦曼,列昂尼德·利金,文飞凡,苏珊·戴维森,Limsoon黄,淳大濠,和其他研究人员谁是在宾夕法尼亚大学在20世纪80年代- 90年代的工作,并寻求统一的编程语言理论和数据库。这似乎需要同时适应两种逻辑。James Cheney的最新作品也是如此和菲利普•瓦德勒(Philip Wadler)。
在特定参考方面,标准教科书可在线获得,以方便参考:
不幸的是,我不了解涵盖此快速发展领域的任何最新的通用教科书或调查。我发现两项较早的调查很有用。第一,
显示了如何将Tarski和特定子字段约束数据库之间的点连接起来。第二,
(1996-style)数据库理论向有限模型理论家推销,并且在此过程中突出了数据库中逻辑的许多有趣应用。对于最近的工作(例如XML理论,出处,流模型或图形数据库),阅读被高引用的研究论文是一种合理的方法。
Michael Huth和Mark Ryan:计算机科学逻辑,剑桥大学出版社,2004年。
我强烈推荐这本书,作为对逻辑在计算机科学中的作用的一般介绍。
CS中逻辑的关键用途是程序逻辑,也称为Hoare逻辑。
在模态逻辑的研究中也得到了类似的情况(再次使人困惑)不像一阶逻辑那样具有表现力,但是它们所能表达的却确实用较短的公式和证明来表达。
对于简单的编程语言来说,识别合适的ZFC片段并不困难,但是随着编程语言获得更多功能,识别挑战将变得越来越困难。在过去的几年中,这项工作取得了实质性进展。
T. Hoare 撰写的论文《计算机编程的公理基础》通常被认为是对程序逻辑的认真研究,它易于阅读,并且可能是开始涉足这一领域的好方法。@vb le提到的Winskel的“编程语言的形式语义学”一书中更详细地研究了相同的逻辑。
可以从相似的角度看待类型理论。类型理论的关键卖点是使用(纯功能的)程序对证明进行识别,从而极大地节省了概念,并带来了强大的自动化(以类型推断和交互式定理证明的形式)。类型理论作为组织证明的一种优雅方式的代价是,它似乎不能与并非纯粹功能的编程语言很好地配合。
Pierce等人的《Software Foundations》是一种以类型论理论方式介绍程序逻辑的近代文本。它会带您接近程序验证研究的最前沿,并且作为一本教科书,您可能会瞥见将来如何教授计算机科学和数学。
一旦为一种语言开发了程序逻辑,下一步就是自动化或部分自动化:为非平凡的程序构造证明很费力,我们希望机器尽可能多地做。当前有关形式化方法的大量研究都与这种自动化有关。
在计算机科学中,逻辑学有着很强的传统。我们研究的问题和计算逻辑社区的美学与数学逻辑社区的美学并不相同。完全正确的是,模型理论,一阶逻辑的元理论和集合论的重大发展在计算逻辑中并不常用。人们可以成功地研究计算逻辑,而无需查看或使用超滤器,非标准分析,强制,巴黎-哈灵顿定理以及许多其他在经典逻辑中被认为很重要的令人着迷的概念。
正如人们将数学思想应用于逻辑研究以及将逻辑思想用于数学研究一样,我们也将逻辑学应用于计算机科学,并将计算观点应用于逻辑学。这种不同的重点对我们而言很重要的结果类型具有相当大的后果。
这是约翰·贝兹(John Baez)关于逻辑和计算机科学的引文。我并不完全一样,因为我对高级数学逻辑不是很熟悉。
当我还是一个本科生的时候,我对逻辑和数学的基础很感兴趣-我一直在寻找我能理解的最令人振奋的概念,Goedel定理,Loewenheim-Skolem定理等等就我而言,就在那儿与量子力学和广义相对论有关。[...]我记得当时感觉到逻辑学已不像本世纪初那样具有革命性。在我看来,逻辑已经像其他任何数学一样成为数学的一个分支,研究了Zermelo-Fraenkel公理的模型的晦涩特性,而不是质疑那些公理中隐含的基本假设,并且敢于追求新的,不同的方法。[...]
无论如何,对我来说现在很清楚,我只是没有读正确的东西。我认为Rota已经说过,逻辑上真正有趣的工作现在被冠以 “计算机科学”的名称。
计算机科学中的逻辑是一个广阔且迅速发展的领域。我发现经典逻辑的每个观点都可以修改以得出关于计算逻辑的某些观点。维基百科上有关数学逻辑的条目将领域划分为集合论,模型论,证明论和递归论。您可以基本上采用这些区域,并向它们添加计算风格,并获得计算逻辑的子字段。
模型理论我们喜欢研究非古典逻辑的模型理论和古典逻辑的非古典模型。我的意思是说我们研究模态,时间和子结构逻辑,并且研究与树,词和有限模型相对的逻辑,这与诸如代数的经典模型相反。两个基本问题是可满足性和模型检查。两者都有巨大的实践和理论意义。相反,这些问题在古典逻辑中并不那么重要。
证明理论我们研究了在经典证明系统中生成证明的复杂性和效率,以及开发了对复杂性和效率考虑敏感的新的非经典证明系统。从广义上讲,自动演绎研究机器支持的证据生成。该过程可能涉及人机交互或完全自动化。为逻辑理论开发决策程序有很多工作。证明复杂度侧重于证明的大小和生成证明的计算复杂性。有一个引人入胜的工作线,将程序与证明相关联,并与线性逻辑相关的工作相结合,以开发出对资源敏感的证明系统,从而开发出语言。
递归理论我们的递归理论是复杂性理论。与其研究可计算的内容,不如研究可计算的效率。复杂度理论中有许多递归理论的类似物,但是递归理论的结果和分离并不总是适用于它们的复杂性理论类似物。代替可计算集和算术层次结构,我们拥有多项式时间,多项式时间层次结构和包围层次结构的多项式空间。代替算术层次结构中的有界量化,我们具有可满足性和量化的布尔公式以及布尔公式的有界量化。
调查文章
这是获得非常高级的计算逻辑视图的良好起点。我将列出计算机科学中几个面向逻辑的领域。我希望其他人可以编辑此答案并将其添加到此处的列表中,并可能在此页面上添加指向该答案的链接。
自动定理证明是逻辑和计算机科学之间强烈重叠的领域,例如[4]。例如,参考文献[1]是使用博耶-摩尔定理证明者来检验/验证戈德尔定理。另一个最近的主要/令人印象深刻的结果是Gonthier在Microsoft的研究中最近完成了对四色定理(以及其他诸如Odd Order和Feit-Thompson [3])的软件验证。[2]
[1] 元数学,机器和哥德尔证明( Shankar 撰写的《理论计算机科学》中的剑桥书目)
[2] 四色定理 Georges Gonthier的计算机检查证明
[3] Feit-Thompson定理形式化中有趣的算法?tcs.se
[4] 计算机在哪里以及如何帮助证明定理?tcs.se