【发布时间】:2013-03-27 03:18:58
【问题描述】:
我正在学习 Scala 编程课程。有一次,教练说:
函数blah和bladdy是普遍存在的 一阶逻辑的量词。
有人可以将“一阶逻辑的普遍和存在量词”翻译成英文吗?
【问题讨论】:
标签: scala functional-programming logic
我正在学习 Scala 编程课程。有一次,教练说:
函数blah和bladdy是普遍存在的 一阶逻辑的量词。
有人可以将“一阶逻辑的普遍和存在量词”翻译成英文吗?
【问题讨论】:
标签: scala functional-programming logic
【讨论】:
要完全理解这句话,您可能需要研究一些逻辑。但这是基本要点:
“量词”是您在逻辑语句中赋予变量意义的方式。如果我说“{something about x}”,那它本身并没有太大的意义。你必须知道x 是说它是真是假。但是,如果我量化变量x 说“对于所有x {关于x}”或“存在一个x 这样{关于x}”那么我正在做一个对或错的单一陈述。
在“对于所有x”的情况下,我是说“{something about x}”对于任何 x 你可以选择;这是普遍的量化。例如“对于所有x,x 是偶数”是错误的陈述。
在“存在x 这样”的情况下,我是说x 有一个可能的选择,因此“{something about x}”是真的(我不是说什么那个选择是,只是有一个)。这是存在量化。例如“存在一个x 使得x 是偶数”是一个正确的陈述。
它们是对偶的,因为“对于所有 x {关于x} 的事情”的含义与“存在 x 是不正确的,因此 {关于 @ 的事情是不正确的” 987654341@}”,以及“存在一个x 使得{关于x} 的事情”的含义与“对于所有x 这不是真的{关于@987654345 的事情不是真的@}”。如果您考虑一下,希望这在直觉上是合理的。
如果您告诉我们函数blah 和bladdy 是什么,我们可以解释它们对应于全称量词和存在量词的方式,这可能对帮助您理解讲师的观点更有帮助。
【讨论】:
教科书Language Proof and Logic为奥德斯基教授提到的全称量词和存在量词提供了这些英语表达方式。
全称量词∀
用于表达普遍的主张,我们用英语表达的那些 everything、everything、all things 和 anything 等量化短语。
存在量词∃
用于表达存在的主张,我们用英语表达的主张使用诸如something、至少一件事、a和一个。
这些术语的提及可能与使用高阶函数的集合操作相关或导致操作。在 Scala 中,通过集合上的 forall 和 exists 操作,从逻辑到代码的转换非常自然。这些类似于上面给出的普遍和存在的定义。一些简单的例子有助于说明这一点:
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 语句只是询问此集合的任何元素是否符合条件。
【讨论】: