【问题标题】:Is division by zero included in QF_NRA?QF_NRA 中是否包含除以零?
【发布时间】:2016-10-21 17:40:16
【问题描述】:

QF_NRA 中是否包含被零除?

SMT-LIB 标准在这件事上令人困惑。 paper where the standard is defined 根本没有讨论这一点,实际上 NRA 和 QF_NRA 并没有出现在该文档的任何地方。在standard website 上提供了一些信息。实数的定义包括:

- all terms of the form (/ m n) or (/ (- m) n) where 
  - m is a numeral other than 0,
  - n is a numeral other than 0 and 1,
  - as integers, m and n have no common factors besides 1.

当涉及到常量值时,这会从分母中明确排除零。但是,后来,除法被定义为:

- / as a total function that coincides with the real division function 
  for all inputs x and y where y is non-zero,

接下来是一个注释:

Since in SMT-LIB logic all function symbols are interpreted as total
  functions, terms of the form (/ t 0) *are* meaningful in every 
  instance of Reals. However, the declaration imposes no constraints
  on their value. This means in particular that 
  - for every instance theory T and
  - for every closed terms t1 and t2 of sort Real, 
  there is a model of T that satisfies (= t1 (/ t2 0)). 

这似乎是矛盾的,因为第一个引用说 (/ m 0) 不是 QV_NRA 中的数字,但后一个引用说 / 是一个函数,使得 (= t1 (/ t2 0)) 可以满足任何 t1 和 @ 987654331@.

事实上,除以零似乎包含在 SMT-LIB 中,尽管声明 (/ m n) 仅在 n 非零时才为实数。这与我之前的一个问题有关:y=1/x, x=0 satisfiable in the reals?

【问题讨论】:

    标签: z3 smt theorem-proving cvc4


    【解决方案1】:

    第一句话说 (/m 0) 不是数字

    没有,但它没有说明它是什么数字。

    但后面的引用说 / 是一个函数,使得 (= t1 (/t2 0)) 对于任何 t1 和 t2 都可以满足

    这是正确的。

    您需要摆脱“不允许被零除!”的学校心态。它是未定义的。未定义意味着没有公理指定这是什么值。 (在学校也是如此。)

    f(1234) 是什么?它是未定义的,所以 Z3 可以选择任何数字。 a / 0f(a) 之间没有区别,其中 f 是一些未解释的函数。 Z3可以填写任何它喜欢的功能。

    因此,a / 0 == b 是可满足的,任何ab 都可以。但是(a / 0) == (a / 0) + 1 是假的。

    数学运算符只是函数。该标准部分指定了这些功能。

    【讨论】:

    • 我对除以零没有小学思维,我知道我们可以随意定义它。我认为该标准措辞不佳且令人困惑,如何 (/ m 0)在SMT-LIB中定义,特别是关于(/ m 0)是否是SMT中的Real-锂电池。除了关于我“需要”做什么的建议之外,这个答案是正确的。
    • 错误是我将第一句话误解为暗示(/ m 0) 不是真正的在 SMT-LIB 中。第一个引述来自于一个真实的定义,并没有说明什么不是真实。据我所知,他们本可以省略他们所说的“m 是 0 以外的数字”。
    • 许多人认为除以零是“禁区”,所以这个答案可能对未来的访问者有所帮助。似乎您在分享这种信念,但您的陈述是关于 m/0 根本不是真实的(我对此一无所知,但您的解释似乎是正确的)。 Z3 数据结构在架构上也要求为每个术语分配一个排序。 “根本没有任何数学对象”没有排序。此外,如果 m/0 不是实数,则排序将取决于模型值,通常不会被确定为特定排序。
    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多