一阶逻辑的通用和存在量词

时间:2013-04-04 20:57:03

标签: scala functional-programming logic

我正在参加Scala编程课程。有一次教练说:

  

函数 blah bladdy 是通用的和存在的   一阶逻辑的量词。

有人可以将“一阶逻辑的通用和存在量词”翻译成英语吗?

3 个答案:

答案 0 :(得分:42)

那句话充满了行话。您可以找到universalexistential逻辑量词here的说明。

  1. Universal Quantifier是一个适用于集合中所有元素的逻辑语句。
  2. Existential Quantifier是一个逻辑语句,适用于集合中的至少一个元素。
  3. 您还可以查看here以获得first-order逻辑的快速说明。该术语旨在将first-orderhigher-order逻辑分开:

    1. First-order逻辑陈述是通常的陈述;他们对一组成员采取行动。
    2. Higher-order逻辑语句作用于其他逻辑语句;将它们视为元逻辑。

答案 1 :(得分:17)

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

通用量词∀

  

用于表达我们用英语表达的普遍声明   量化的短语,如所有每件事所有事物任何

存在量词∃

  

用于表达存在性声明,即我们使用某些至少一件事 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语句只是要求此集合的任何元素符合条件。

答案 2 :(得分:3)

要完全理解这种说法,你可能需要研究一些逻辑。但这是基本要点:

“量词”是你如何在逻辑语句中赋予变量的意义。如果我说“{about about x}”,那本身并没有多大意义。你必须知道x是什么,这是真是假。但是,如果我量化变量x,则说“对所有x {{约为x}”或“存在x这样{about about x}“然后我正在制作一个真或假的单一陈述。

在“for all x”案例中,我说的是“{x}的内容”适用于您可以选择的任何 x ;这是普遍的量化。例如“for all xx是偶数”是一个错误的陈述。

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

它们是双重的,因为“对于所有x {{about about x}”的意思与“存在x并不是真的相同”的确如{x}“,以及”存在x,{x}之类的东西“意味着同样的事情”对所有人来说都不是真的{ {1}}关于x}“的事情是不正确的。希望如果你考虑它,这似乎是直觉上合理的。

如果你告诉我们函数xblah是什么,我们可以解释它们与通用和存在量词相对应的方式,这可能更有助于你理解教师的点。