我正在学习 Scala 编程课程。有一次,导师说:
函数blah和bladdy是一阶逻辑的普遍和存在量词。
有人可以将“一阶逻辑的普遍和存在量词”翻译成英文吗?
我正在学习 Scala 编程课程。有一次,导师说:
函数blah和bladdy是一阶逻辑的普遍和存在量词。
有人可以将“一阶逻辑的普遍和存在量词”翻译成英文吗?
教科书Language Proof and Logic为 Odersky 教授提到的全称量词和存在量词提供了这些英语表达方式。
全称量词∀
用于表达普遍的主张,我们用英语表达的那些用量化的短语,比如everything 、everything、all things和anything。
存在量词 ∃
用于表达存在性主张,我们用英语表达的主张使用诸如某事、至少一件事、一个和一个这样的短语。
这些术语的提及可能与使用高阶函数的集合操作相关或导致操作。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
陈述只是询问这个集合的任何元素是否符合标准。
要完全理解该陈述,您可能必须研究一些逻辑。但这是基本要点:
“量词”是您在逻辑语句中赋予变量含义的方式。如果我说“{something about x
}”,它本身并没有太大的意义。你必须知道x
它是真话还是假话。但是,如果我通过说“对于所有{关于}的事情”或“存在一个这样的{关于}的事情”来量化变量,那么我正在做出一个对或错的单一陈述。x
x
x
x
x
在“所有人x
”的情况下,我是说“{something about x
}”对于您可以选择的任何内容都是正确的; x
这是普遍的量化。例如“对于所有x
,x
是偶数”是错误的陈述。
在“存在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 x
it is not true that {something about x
}”的含义相同。如果你仔细想想,希望这在直觉上是合理的。
如果您告诉我们函数blah
和bladdy
是什么,我们可以解释它们对应于全称和存在量词的方式,这可能对帮助您理解讲师的观点更有帮助。