我正在参加Scala编程课程。有一次教练说:
函数 blah 和 bladdy 是通用的和存在的 一阶逻辑的量词。
有人可以将“一阶逻辑的通用和存在量词”翻译成英语吗?
答案 0 :(得分:42)
那句话充满了行话。您可以找到universal
和existential
逻辑量词here的说明。
Universal Quantifier
是一个适用于集合中所有元素的逻辑语句。Existential Quantifier
是一个逻辑语句,适用于集合中的至少一个元素。您还可以查看here以获得first-order
逻辑的快速说明。该术语旨在将first-order
与higher-order
逻辑分开:
First-order
逻辑陈述是通常的陈述;他们对一组成员采取行动。Higher-order
逻辑语句作用于其他逻辑语句;将它们视为元逻辑。答案 1 :(得分:17)
教科书Language Proof and Logic为奥德斯基教授所提到的普遍和存在量词提供了这些英语表达。
通用量词∀
用于表达我们用英语表达的普遍声明 量化的短语,如所有,每件事,所有事物和任何。
存在量词∃
用于表达存在性声明,即我们使用某些,至少一件事, 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
语句只是要求此集合的任何元素符合条件。
答案 2 :(得分:3)
要完全理解这种说法,你可能需要研究一些逻辑。但这是基本要点:
“量词”是你如何在逻辑语句中赋予变量的意义。如果我说“{about about x
}”,那本身并没有多大意义。你必须知道x
是什么,这是真是假。但是,如果我量化变量x
,则说“对所有x
{{约为x
}”或“存在x
这样{about about x
}“然后我正在制作一个真或假的单一陈述。
在“for all x
”案例中,我说的是“{x
}的内容”适用于您可以选择的任何 x
;这是普遍的量化。例如“for all x
,x
是偶数”是一个错误的陈述。
在“存在x
这样的情况下,”我说x
可能有选择,以便“{x
}”为真(我不是说那个选择是什么,只是有一个)。这是存在量化。例如,“存在x
,x
是偶数”是一个真实的陈述。
它们是双重的,因为“对于所有x
{{about about x
}”的意思与“存在x
并不是真的相同”的确如{x
}“,以及”存在x
,{x
}之类的东西“意味着同样的事情”对所有人来说都不是真的{ {1}}关于x
}“的事情是不正确的。希望如果你考虑它,这似乎是直觉上合理的。
如果你告诉我们函数x
和blah
是什么,我们可以解释它们与通用和存在量词相对应的方式,这可能更有助于你理解教师的点。