32

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

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

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

4

3 回答 3

45

那句话充满了行话。您可以在此处universal找到对量词和existential逻辑量词的描述。

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

您还可以在此处first-order查看逻辑的快速描述。该术语旨在与first-order逻辑higher-order分开:

  1. First-order逻辑语句是通常的语句;它们作用于集合的成员。
  2. Higher-order逻辑语句作用于其他逻辑语句;将它们视为元逻辑。
于 2013-04-04T21:07:35.763 回答
17

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

全称量词∀

用于表达普遍的主张,我们用英语表达的那些用量化的短语,比如everything 、everything、all thingsanything

存在量词 ∃

用于表达存在性主张,我们用英语表达的主张使用诸如某事至少一件事一个一个这样的短语。

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

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陈述只是询问这个集合的任何元素是否符合标准。

于 2013-04-04T22:09:50.820 回答
3

要完全理解该陈述,您可能必须研究一些逻辑。但这是基本要点:

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

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

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

它们是对偶的,因为“对于所有x{something about x}”的含义与“存在一个x这样的事情是不真实的 {something about x}”和“存在一个x这样的事情 {something about x}”的意思与“it is NOT true that for all xit is not true that {something about x}”的含义相同。如果你仔细想想,希望这在直觉上是合理的。

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

于 2013-04-04T22:13:34.057 回答