Questions tagged «logic»

与数学逻辑有关的问题及其在计算机科学中的用途

5
哥德尔不完备定理,停止问题和通用图灵机之间是否有具体关系?
我一直模糊地认为,对上述问题的回答在以下几方面是肯定的。哥德尔的不完备性定理和停止问题的不可判定性都是关于可判定性的负面结果,并由对角线论证(以及在1930年代)确立,因此它们在某种程度上必须是两种方式来审视同一件事。而且我以为图灵使用了通用的图灵机来表明停止问题是无法解决的。(另请参阅此math.SE问题。) 但是,现在(在学习可计算性课程方面)我更加仔细地研究了这些问题,我对发现的结果感到困惑。因此,我需要一些帮助以理顺我的想法。我意识到,一方面,哥德尔的对角线论点非常微妙:构建一个算术语句需要很多工作,该算术语句可以解释为说出它自己的可导性。另一方面,我在这里发现的停止问题的不确定性证明非常简单,甚至没有明确提到图灵机,更不用说通用图灵机了。 关于通用图灵机的一个实际问题是,通用图灵机的字母与它所模拟的图灵机的字母相同是否重要?我认为这是必要的,以便编造适当的对角线参数(让机器自己模拟),但是我在网上发现的关于通用机器的令人困惑的描述集中,并没有发现对此问题的任何关注。如果不是因为停顿问题,通用的图灵机在任何对角线论点中都有用吗? 最后,我对这进一步的部分感到困惑同一篇WP文章的另一篇文章说,哥德尔不完整的一种较弱形式来自于停顿问题:“无法实现所有关于自然数的陈述的完整,一致和合理的公理化”,其中“声音”应被削弱。我知道,如果一个理论不能得出矛盾,那么该理论是一致的,关于自然数的完整理论似乎意味着可以从中得出关于自然数的所有真实陈述。我知道哥德尔说这样的理论不存在,但是我看不到这样一个假设的野兽怎么可能听起来不对劲,即,也得出对自然数是错误的陈述:否定这样的陈述是正确的,因此从完整性上也可以导出,这会与一致性相矛盾。 我希望您能对其中之一进行澄清。

2
什么是共生?
我听说过(结构性)归纳法。它使您可以从较小的结构中构建有限的结构,并为证明这种结构的原理提供证明。这个想法很明确。 但是共生呢?它是如何工作的?怎么能说出无限结构的定论呢? 有(至少)两个角度需要解决,即共归作为一种定义事物的方式和一种证明技术。 关于共生作为证明技术,共生和双仿真之间是什么关系?

6
学习自动定理证明
我正在独自学习自动定理证明 / SMT求解器 / 证明助手,并从此处开始发布有关该过程的一系列问题。 请注意,如果没有(数学)逻辑的背景知识,就很难轻易消化这些主题。如果您对基本术语有疑问,请继续阅读,例如M. Huth和M. Ryan 撰写的《计算机科学中的逻辑》(特别是第一,第二和第四章),或者P撰写的《数学逻辑与类型理论导论》。安德鲁斯。 有关高阶逻辑(HOL)的简短介绍,请参见此处。 我看着考克(Coq),并阅读了伊莎贝尔(Isabelle)简介的第一章;自动定理证明的类型 我认识Prolog已有几十年了,现在正在学习F#,因此ML,O'Caml和LISP很有用。Haskell是另一种野兽。 我有以下书籍 艾伦·罗宾逊和安德烈·冯科夫编辑的《自动推理手册》 约翰·哈里森(John Harrison)的“实用逻辑和自动推理手册” Franz Baader和Tobias Nipkow撰写的“术语重写和所有内容” Coq和Isabelle有什么区别? 我应该学习Isabelle还是Coq,或者两者都学习? 首先学习Isabelle或Coq有优势吗? 在此处找到系列的下一个问题。

3
逻辑到底是什么?
道歉可能是要问有关前提条件的另一个问题,但是我对起点感到困惑。我遇到过各种术语,例如“模态逻辑”,“时间逻辑”,“一阶逻辑”,“二阶逻辑”和“高阶逻辑”。 在这种情况下,“逻辑”到底是什么意思?我们如何严格定义“逻辑”一词? 在浏览了几本书的开始部分之后,我可以粗略得出结论:“逻辑是一种从中决定内容的方法,这对设计编程语言非常重要,因为它指示并促进了程序的设计以自动推理和理解程序。我想要稍微详细地了解第二点。 现在来看这些逻辑。 所有这些逻辑(“时间逻辑”,“模态逻辑”,“一阶逻辑”,“高阶逻辑”)是否彼此独立,或者我们需要了解这些逻辑中的几个即可理解该组中的其他逻辑?简而言之,它们的先决条件是什么?(如果我也可以从一些材料中获得建议,那将是很棒的。) PS:非常感谢您的好意

3
Martin-Löf类型理论简介
什么是PerMartin-Löfs关于类型理论的最佳介绍?我看过俄勒冈PL暑期学校的一些讲座,但仍然对以下问题感到困惑: 什么是类型? 我知道集合是什么,因为您可以通过常规的ZF公理定义它们,并且它们具有非常直观的具体模型;试想一下装满东西的篮子。但是,我还没有看到类型的合理定义,并且我想知道是否有某些来源可以将这种想法提炼为假人。

2
Büchi自动机和线性微积分的等价性
众所周知,每个LTL公式都可以由Büchi -automaton表示。但是,很明显,Büchi自动机是一种功能更强大的表达模型。我在某处听说过Büchi自动机等效于线性时间 -calculus(即具有常规固定点且只有一个时间运算符 -calculus )。μ μ Xωω\omegaμμ\muμμ\muXX\mathbf{X} 是否存在这种相等性的算法(构造证明)?

2
具有联合类型的lambda项的特征
许多教科书都涵盖了lambda微积分中的交集类型。交集的键入规则可以定义如下(在带有子类型的简单键入的lambda演算的顶部): Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I)Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I) \dfrac{\Gamma \vdash M : T_1 \quad \Gamma \vdash M : T_2} {\Gamma \vdash M : T_1 \wedge T_2} (\wedge I) \qquad\qquad \dfrac{} {\Gamma \vdash M : \top} (\top I) 交叉点类型在归一化方面具有有趣的属性: 一个lambda长期不使用键入的⊤I⊤I\top I治当且仅当它是强烈正火。 一个lambda项接受一个不包含的类型,只要⊤⊤\top它具有正常形式。 如果不添加交集而是添加并集怎么办? Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2)Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2) \dfrac{\Gamma \vdash M : T_1} {\Gamma \vdash M : T_1 \vee T_2} (\vee …

2
为什么C的void类型不同于Empty / Bottom类型?
维基百科以及我发现的其他来源都将C的void类型列为单位类型,而不是空类型。我觉得这很混乱,因为在我看来,它void更适合于空/底类型的定义。 void据我所知,没有价值观存在。 返回类型为void的函数指定该函数不返回任何内容,因此只能执行某些副作用。 类型的指针void*是所有其他指针类型的子类型。同样,void*在C中进行来回转换是隐式的。 我不确定最后一点是否可以作为void空类型的参数,void*或多或少是与无关的特例void。 另一方面,void它本身不是所有其他类型的子类型,据我所知,这是将类型作为底部类型的要求。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

4
定点组合器(Y组合器)的清晰直观的推导?
(无类型)lambda演算()中的定点组合器FIX(aka Y组合器)定义为:λλ\lambda FIX≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))\triangleq \lambda f.(\lambda x. f~(\lambda y. x~x~y))~(\lambda x. f~(\lambda y. x~x~y)) 我了解它的目的,并且可以很好地跟踪其应用程序的执行。我想了解如何从第一原理中得出FIX。 这是我尝试自己导出时所得到的: FIX是一个函数:FIX ≜λ…≜λ…\triangleq \lambda_\ldots FIX使用另一个函数fff使其递归:FIX ≜λf.…≜λf.…\triangleq \lambda f._\ldots 函数f的第一个参数是函数fff的“名称”,用于打算递归应用程序的地方。因此,f的第一个参数的所有出现fff都应由一个函数替换,并且该函数应预期f的其余参数fff(假设f带有fff一个参数):FIX ≜λf.…f (λy.…y)≜λf.…f (λy.…y)\triangleq \lambda f._\ldots f~(\lambda y. _\ldots y) 这是我不知道如何在推理中“迈出一步”的地方。小椭圆表示我的FIX缺少了什么(尽管我只能通过将其与“真实” FIX进行比较来知道)。 我已经阅读了Types and …

6
从一组对中生成组合而无需重复元素
我有一对。每对都具有(x,y)的形式,使得x,y属于范围内的整数[0,n)。 因此,如果n为4,那么我有以下几对: (0,1) (0,2) (0,3) (1,2) (1,3) (2,3) 我已经有一对了。现在,我必须使用n/2对构建一个组合,这样就不会重复任何整数(换句话说,每个整数在最终组合中至少出现一次)。以下是正确和不正确组合以更好地理解的示例 1. (0,1)(1,2) [Invalid as 3 does not occur anywhere] 2. (0,2)(1,3) [Correct] 3. (1,3)(0,2) [Same as 2] 一旦我有了配对,有人可以建议我一种生成所有可能组合的方法。


7
如果A为假而B为假,为什么A暗示B为真?
在我看来,英语中的“隐含”与逻辑运算符“隐含”的含义不同,在大多数情况下,“或”一词在我们日常语言使用中的含义类似于“异或”。 让我们举两个例子: 如果今天是星期一,那么明天是星期二。 这是真的。 但是,如果我们说: 如果太阳是绿色的,那么草是绿色的。 这也被认为是正确的。为什么?这背后的自然英语“逻辑”是什么?这让我震惊。

4
建构主义逻辑中是否存在不确定的语言?
建构主义逻辑是一个排除公理的排除中间定律和双重否定的系统。它在Wikipedia的此处和此处进行了描述。特别是,该系统不允许矛盾证明。 我想知道,是否有人熟悉这如何影响有关Turing Machines和形式语言的结果?我注意到,几乎所有关于语言不确定性的证明都依赖于矛盾证明。对角化论证和归约概念都以这种方式工作。会否存在一种不确定语言存在的“建设性”证据?如果是,那它将是什么样? 编辑:很清楚,我对建构主义逻辑中的矛盾证明的理解是错误的,答案已经澄清了这一点。

5
带有反射的
我在寻找一个简单的演算,支持推理反射,即内省和正在运行的程序的操作。 是否存在未类型化的微积分扩展,从而使人们可以将λ-项转换为可以在语法上进行处理然后进行评估的形式?λλ\lambdaλλ\lambda 我认为微积分有两个主要附加术语: :取 v和产生的表示 v易于进行句法操纵。reflect vreflect v\mathtt{reflect}\ vvvvvvv :对一个术语进行句法表示并对其进行评估。eval veval v\mathtt{eval}\ v 为了支持反思,需要术语的句法表示。它看起来像: 将被表示为术语(大号阿中号 - [R (ë )),其中 [R (é )是的反射版本 ë,λx.eλx.e\lambda x.e(LAM R(e))(LAM R(e))(\mathsf{LAM}\ R(e))R(e)R(e)R(e)eee 将被表示为项(A P P R (e )R (e ')),并且e e′e e′e\ e'(APP R(e) R(e′))(APP R(e) R(e′))(\mathsf{APP}\ R(e)\ R(e')) 将被表示为(V A R x )。xxx(VAR x)(VAR …

11
为什么
我想知道是否有规则证明这一点。例如,如果我用分配律我将只得到。(甲∨ 甲)∧ (甲∨ ¬ 乙)(A∨A)∧(A∨¬B)(A \lor A) \land (A \lor \neg B)

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.