【问题标题】:Universal and Existential Quantifiers of First-Order Logic一阶逻辑的普遍存在量词
【发布时间】:2013-03-27 03:18:58
【问题描述】:

我正在学习 Scala 编程课程。有一次,教练说:

函数blahbladdy是普遍存在的 一阶逻辑的量词。

有人可以将“一阶逻辑的普遍和存在量词”翻译成英文吗?

【问题讨论】:

    标签: scala functional-programming logic


    【解决方案1】:

    那句话充满了行话。你可以找到universalexistential逻辑量词here的描述。

    1. Universal Quantifier 是适用于集合中所有元素的逻辑语句。
    2. Existential Quantifier 是适用于集合中至少一个元素的逻辑语句。

    您还可以查看here 以快速了解first-order 逻辑。该术语旨在将first-orderhigher-order 逻辑分开:

    1. First-order 逻辑语句是常用的;它们作用于集合的成员。
    2. Higher-order 逻辑语句作用于其他逻辑语句;将它们视为元逻辑。

    【讨论】:

    • 当然可以。我认为这些概念很简单,这只是逻辑类中的大量正式术语。
    • 您可能会对 Wiki 文章感到困惑,因为它不是量词的最佳来源。 +1 为您对量词的回答
    【解决方案2】:

    要完全理解这句话,您可能需要研究一些逻辑。但这是基本要点:

    “量词”是您在逻辑语句中赋予变量意义的方式。如果我说“{something about x}”,那它本身并没有太大的意义。你必须知道x 是说它是真是假。但是,如果我量化变量x 说“对于所有x {关于x}”或“存在一个x 这样{关于x}”那么我正在做一个对或错的单一陈述。

    在“对于所有x”的情况下,我是说“{something about x}”对于任何 x 你可以选择;这是普遍的量化。例如“对于所有xx 是偶数”是错误的陈述。

    在“存在x 这样”的情况下,我是说x 有一个可能的选择,因此“{something about x}”是真的(我不是说什么那个选择是,只是有一个)。这是存在量化。例如“存在一个x 使得x 是偶数”是一个正确的陈述。

    它们是对偶的,因为“对于所有 x {关于x} 的事情”的含义与“存在 x 是不正确的,因此 {关于 @ 的事情是不正确的” 987654341@}”,以及“存在一个x 使得{关于x} 的事情”的含义与“对于所有x 这不是真的{关于@987654345 的事情不是真的@}”。如果您考虑一下,希望这在直觉上是合理的。

    如果您告诉我们函数blahbladdy 是什么,我们可以解释它们对应于全称量词和存在量词的方式,这可能对帮助您理解讲师的观点更有帮助。

    【讨论】:

      【解决方案3】:

      教科书Language Proof and Logic为奥德斯基教授提到的全称量词和存在量词提供了这些英语表达方式。

      全称量词∀

      用于表达普遍的主张,我们用英语表达的那些 everythingeverythingall thingsanything 等量化短语。

      存在量词∃

      用于表达存在的主张,我们用英语表达的主张使用诸如something至少一件事a一个

      这些术语的提及可能与使用高阶函数的集合操作相关或导致操作。在 Scala 中,通过集合上的 forallexists 操作,从逻辑到代码的转换非常自然。这些类似于上面给出的普遍和存在的定义。一些简单的例子有助于说明这一点:

      scala> val l = 1 to 10
      l: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
      
      scala> l.forall(x => x > 0)
      res0: Boolean = true
      
      scala> l.forall(x => x > 1)
      res1: Boolean = false
      

      这两个forall 语句只是询问此集合的所有元素是否符合条件。

      scala> l.exists(x => x < 1)
      res2: Boolean = false
      
      scala> l.exists(x => x < 2)
      res3: Boolean = true
      

      这两个exists 语句只是询问此集合的任何元素是否符合条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-28
        • 2011-09-14
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        • 2019-07-04
        • 2011-03-21
        相关资源
        最近更新 更多