逻辑到底是什么?


36

道歉可能是要问有关前提条件的另一个问题,但是我对起点感到困惑。我遇到过各种术语,例如“模态逻辑”,“时间逻辑”,“一阶逻辑”,“二阶逻辑”和“高阶逻辑”。

在这种情况下,“逻辑”到底是什么意思?我们如何严格定义“逻辑”一词?

在浏览了几本书的开始部分之后,我可以粗略得出结论:“逻辑是一种从中决定内容的方法,这对设计编程语言非常重要,因为它指示并促进了程序的设计以自动推理和理解程序。我想要稍微详细地了解第二点。

现在来看这些逻辑。

所有这些逻辑(“时间逻辑”,“模态逻辑”,“一阶逻辑”,“高阶逻辑”)是否彼此独立,或者我们需要了解这些逻辑中的几个即可理解该组中的其他逻辑?简而言之,它们的先决条件是什么?(如果我也可以从一些材料中获得建议,那将是很棒的。)

PS:非常感谢您的好意


17
具有讽刺意味的是,这样的问题将由一个叫Kripke提出。:-)
David Richerby

1
我必须说你的反应并不奇怪。当我遇到“代数”的正式定义时,我感到非常惊讶。
离散蜥蜴

2
@Discretelizard的“代数”可能甚至更令人惊讶,因为它与高中他们称之为代数的东西完全无关。
David Richerby

@DavidRicherby我也做过,“线性代数”只是一个代数。
Niklas Rosencrantz

1
@MartinRosenau为什么您会认为这将使模糊逻辑适合一般逻辑概念会成为障碍?
Derek Elkins '18

Answers:


39

从根本上说,逻辑由两部分组成。

  • 语法是确定什么是公式的规则的集合。
  • 语义是一组规则,用于确定哪些公式为“ true”和什么为“ false”。对于模型理论家来说,这是通过将公式与它们所基于的数学结构相关联来表达的。对于证明理论家来说,真理对应于选择的一组公理和一组选择的证明规则(技术)的可证明性。

最简单地,不同逻辑之间的区别在于语法和语义的选择。大多数逻辑是命题逻辑一阶逻辑的扩展。从某种意义上讲,您可以将这些扩展视为对逻辑的“添加更多功能”。例如,时间逻辑处理可能随时间变化的真理。

通常,这些功能可以用更简单的逻辑表示,但必须写更长的公式。例如,时间概念“  是真的从这一点永恒”,可以在一阶的方式通过添加一个时间参数所有的命题,并说:“对于所有的时间表达  牛逼,如果牛逼  大于或等于当前时间,则 在时间tφ为真  。” 从某种意义上讲,您可以将这些逻辑视为将库添加到基本编程语言中,从而可以更轻松地说出内容。φttφt

由于几乎所有逻辑都基于命题和一阶逻辑,所以我建议先学习这些逻辑。


2
作为计算机科学家,我还发现考虑与类型理论的联系对于学习逻辑非常有用。通过Howard-Curry对应关系,可以将类型系统视为等效逻辑的替代表示。我建议皮尔斯的书开始。
Phs

1
逻辑中的语法不只是公式,还有更多的语义,而不仅仅是对真理的确定。
安德烈·鲍尔

一个正式的角度来看,大约相当于该答复中提到的观点,并没有尝试提供一个统一的定义(和被设计为在计算机科学中的地址的问题)是理论的机构
德里克·埃尔金斯


@phs哇...我不知道我怎么走到这一步,但这是我第一次想到咖喱函数可以引用除香料之外的任何东西的想法。
Cort Ammon

21

尽管计算机科学,数学和物理学等领域的组织相对较好,但逻辑学却有着混乱的历史。它的组织确实令人困惑,因此我认为阅读一些历史记录以了解该领域的密集结构非常重要。

您应该选择的路径取决于您的背景目标

逻辑是什么?

  1. 传统观点认为,逻辑是一种形式系统,具有形式语言(语法),语义(外部含义,想到程序的解释器)和一组规则,这些规则可从其他规则推论出(思考规则)。减少程序)。逻辑纯粹被视为纯粹的数学对象。

  2. 现代观点认为,通过著名的Curry-Howard同构,逻辑是一种连贯的类型系统(证明是程序,类型是公式)。更准确地说:推理规则享有割除定理和Church-Rosser定理/合流定理,表明底层的编程系统将表现良好。

  3. p,q

    • P,QP(x1,...,xn)Q(x1,...,xn)
    • 在二阶逻辑中,谓词变量变成一类具有一阶函数的函数。它们的行为类似于以一阶函数为参数的函数。例如,我们可以拥有谓词和对谓词的量化。
    • 三阶等的推理相同。高阶逻辑接受任何阶。考虑一下具有功能的HaskellOCaml,这些功能将功能等的功能作为参数。
  4. 通常,对于逻辑到底是什么没有达成共识。一些哲学家使用的系统没有一致的底层编程系统。实际上,我会说使用逻辑的每个领域都有其自己的逻辑概念。而且大多数数学家可能都不在乎逻辑是什么。

领域的结构

逻辑的历史太大了,所以我只给出领域的结构。形式逻辑领域分为:哲学,数学和计算用途。形式逻辑始于19-20世纪。

  • 您应该首先学习命题逻辑一阶逻辑。他们是最标准的。创建它们是为了对古希腊时代的旧逻辑进行形式/数学解释。

    • 模型理论(语义学),从逻辑的角度研究数学结构
    • 证明理论(语法)独立地将证明作为数学对象进行研究。
  • 二阶逻辑是一阶逻辑的扩展,一阶逻辑是命题逻辑的扩展。这是特别有趣的,因为算术以第二阶“活跃”(谓词在带归纳的谓词上)。同样,拓扑位于“三阶”(集合中的谓词本身可以看作谓词)。

  • 然后是LEJ Brouwer,他将逻辑分为两部分:

    • AA¬A
    • 直觉逻辑是一种拒绝被排除的中间定律和所有等效定律的逻辑(出于技术和哲学上的原因,我在这里不做解释)。
  • 在其他情况下,哲学家开始对形式逻辑感兴趣,并认为它可以回答哲学问题(分析哲学)。他们建立了自己独立的逻辑系统(超常逻辑,关联逻辑和模态逻辑,例如道义逻辑,时间逻辑,认知逻辑等)。模态逻辑不适用于真理,而适用于可能性,必要性,时间,知识等形式。它们都独立于以上逻辑。

  • λ

  • 计算机科学家想以一种正式的方式来验证和证明系统的稳定性,而且模态逻辑似乎是相关的。今天,他们使用时间逻辑和模态逻辑对系统进行推理(请参阅:形式方法,模型检查)。系统通过自动机理论建模(例如),并使用逻辑工具进行验证。它导致了线性时序逻辑(LTL)计算树逻辑(CTL)

  • 出于同样的动机,计算机科学家希望验证程序的健全性并证明其性能。因此,我们发明了用于命令式程序的Hoare逻辑,更笼统地说,是分离逻辑

  • 通过研究,Curry-Howard同构,出现了一个新的逻辑:线性逻辑,它限制了结构规则(弱化和收缩),被视为在证明和程序中进行的擦除和复制。事实的潜在无限是明确的。似乎该逻辑是对经典逻辑和直觉逻辑的概括,并基于计算和过程范式给出了全新的逻辑概念。它主要由计算机科学家研究。

  • 线性逻辑还来自我们称之为拒绝逻辑的结构规则的结构逻辑。相关逻辑和仿射逻辑就是此类系统的示例。

摘要和路径选择

  • 任何逻辑都可以是:命题逻辑,一阶,二阶,三阶,...,更高阶(每个都扩展前一个逻辑)。

  • 我们可以添加或删除规则以使现有系统变型:

    • 删除排除中间的:直觉逻辑
    • 添加模态:模态逻辑
    • 限制矛盾和弱化:线性逻辑
    • 消除收缩:仿射逻辑
    • 消除弱点:相关逻辑
    • 以不同的方式处理否定:超常逻辑
  • 首先学习命题和一阶逻辑,以及:

    • 模型理论,二阶,高阶(如果您对数学感兴趣)
    • 证明理论,直觉逻辑,二阶逻辑,线性逻辑(如果您对计算机科学的基础感兴趣)
    • 模态逻辑,Hoare逻辑,分离逻辑(如果您对系统和程序的验证感兴趣)
    • 模态逻辑,如果您对哲学感兴趣的话,通常是非经典逻辑

参考书(书籍)

我个人建议尽可能混合参考。

  • 数学逻辑(Chiswell&Hodges):非常简洁和简单的书。
  • 逻辑学(Hedman)的第一门课程:与上述课程有点类似,但是提供了更多细节并考虑了可计算性。
  • 实用逻辑和自动推理手册(哈里森):如果您想了解实践中如何实现一些与逻辑相关的概念。更面向自动推理。
  • 计算机科学中的逻辑(Huth和Ryan):非常清楚并且面向计算机科学家(程序和系统的验证,Hoare逻辑,模态逻辑的实际使用,时间逻辑,模型检查)。
  • 证明理论导论(公共汽车):证明理论导论。最好遵循一些通用逻辑来阅读此内容。

参考文献(维基百科)


好吧,这很...全面,我会说。感谢您抽出宝贵的时间写这篇文章!
离散蜥蜴

5
这看起来非常全面,但是我真的不会把Curry-Howard作为第二件事向您介绍,而这只是对刚刚了解逻辑的人。除非您真的在学习类型理论,否则Curry-Howard并不是“逻辑的现代定义”。这只是某些人对逻辑所做的事情。
David Richerby

2
@DavidRicherby好的。我了解,但我认为Curry-Howard对计算机科学家来说非常重要(也是因为我们身处cs.stackexchange)。它实际上不是逻辑的现代定义,但我认为这是对某些计算机科学家而言的。无论如何,逻辑的真实性可能是主观的。我知道将原始海报暴露于如此多的事物并不总是一个好主意,但我并不真正希望得到全面的了解,而是对逻辑分支的全面全景(CS有点偏颇),它可以充当参考以了解存在哪种逻辑以及在何处使用它。
鲍里斯(Boris E.)

我的印象是,Haskell中的高阶逻辑将是类型运算符,而不是可以将函数作为输入的函数。
马丁

@martin Hm ...这只是一个简单的类比,可以理解该机制的思想,但不应太在意。我想描述“高阶逻辑”的概念,而不是精确地描述“高阶逻辑”的概念(考虑原始海报的背景)。
Boris E.

0

所有这些逻辑都属于“ 数学逻辑”的范畴

数学逻辑通常分为集合论,模型论,递归论和证明论等领域。这些领域在逻辑(尤其是一阶逻辑)和可定义性方面共享基本结果。在计算机科学中(尤其是在ACM分类中),数学逻辑包含本文中未详细介绍的其他主题。参见计算机科学中的逻辑

此外,如果您想了解一般的逻辑,本文可能会有用。

逻辑原本意为“单词”或“说什么”,但后来意为“思想”或“原因”,是与最普遍的真理定律有关的主题,如今通常被认为由系统研究组成有效推断的形式。有效的推论是在推论的假设与其结论之间存在逻辑支持的特定关系的推论。


4
嗯,我不确定这是否对您有帮助。您会说大卫的职位使您的职位“被取代”吗?如果没有,为什么?尝试对此进行扩展。
离散蜥蜴

@OmG:您能推荐一些材料清单吗?
谢尔顿·克里普克
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.