【发布时间】:2011-03-21 10:17:31
【问题描述】:
如果我想用一阶逻辑表示'集合中具有最小半径的元素的值为0',下面的说法对吗?
∀ e1 ∈ S. ∀ e2 ∈ S. 半径 e1 ≤ 半径 e2 ⇒ 值 e1 = 0?
变量的量化是否正确?
谢谢
【问题讨论】:
如果我想用一阶逻辑表示'集合中具有最小半径的元素的值为0',下面的说法对吗?
∀ e1 ∈ S. ∀ e2 ∈ S. 半径 e1 ≤ 半径 e2 ⇒ 值 e1 = 0?
变量的量化是否正确?
谢谢
【问题讨论】:
为了用括号澄清一下,你写的通常是指:
\forall e1 \in S. (\forall e2 \in S. (Radius e1 <= Radius e2 --> Value e1 = 0))
此语句断言每个元素的值都是 0。方法如下:选择任意 e1,现在选择 e2 = e1,我们有:Radius e1 <= Radius e1 --> Value e1 = 0。由于前件(--> 之前的事物)为真,所以我们有 Value e1 = 0。由于我们没有对e1 做出任何假设,所以我们有forall e \in S. Value e = 0。
问题是你的括号是关闭的。
\forall e1 \in S. (\forall e2 \in S. Radius e1 <= Radius e2) --> Value e1 = 0
为了使先行词现在为真,e1 的半径必须小于或等于 每个(而不是任何)其他半径,这似乎符合您的预期.
【讨论】:
我想你想要一个存在
\存在 e_1 。 (\forall e_2 radius(e_1)
我不确定公式中的优先级,但现在我想我理解了这个问题,也许你想要(其中 M 是最小条件radius(e_1) < radius(e_2))
\forall e_1 。 ((\forall e_2 . M) -> 值 e_1 = 0)
我认为您之前的公式可能是错误的,原因如下。假设您有半径为 { 0, 1, 2 } 且值等于半径的元素。然后,您将遇到 1
\forall e_1 。 \forall e_2 。 P(e_1, e_2)
那么这个反例提供了一个 P 为假的情况,因此整个公式都失败了(但这个例子应该是真的)。
【讨论】:
如果没有半径最小的元素,你写的也是正确的。如果这是需要的,那么您是正确的;如果没有,您需要添加一个子句:
(\forall e1 \in S. \forall e2 \in S. Radius e1 <= Radius e2 --> Value e1 = 0) \and (\exists e1 \in S. \forall e2 \in S. Radius e1 <= Radius e2)
【讨论】: