Z3 QF_NRA中是否包含除零?

Z3 QF_NRA中是否包含除零?,z3,smt,theorem-proving,cvc4,Z3,Smt,Theorem Proving,Cvc4,QF_NRA中是否包含除零 SMT-LIB标准在这方面令人困惑。该文件根本没有讨论这一点,事实上,NRA和QF_NRA没有出现在该文件的任何地方。网站上提供了一些信息。Real的定义包括: - 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

QF_NRA中是否包含除零

SMT-LIB标准在这方面令人困惑。该文件根本没有讨论这一点,事实上,NRA和QF_NRA没有出现在该文件的任何地方。网站上提供了一些信息。Real的定义包括:

- 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)). 
这似乎是矛盾的,因为第一句话说
(/m0)
在QV\u NRA中不是一个数字,但后一句话说
/
是一个函数,使得
(=t1(/t20))
对于任何
t1
t2
都是可满足的

事实上,SMT-LIB中似乎包含了被零除的情况,尽管有这样一种说法,即
(/mn)
只有在
n
为非零时才是实数。这与我先前的一个问题有关:

第一句话说(/m0)不是一个数字

没有,但没有说是多少

但后一句话说,/是一个函数,使得(=t1(/t20))对于任何t1和t2都是可满足的

这是正确的

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

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

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

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

第一句话说(/m0)不是一个数字

没有,但没有说是多少

但后一句话说,/是一个函数,使得(=t1(/t20))对于任何t1和t2都是可满足的

这是正确的

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

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

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


数学运算符只是函数。标准部分地规定了这些函数。

我没有小学阶段关于零除的想法,我理解我们可以随意定义它。我认为该标准措词不当,难以理解SMT-LIB中如何定义
(/m 0)
,特别是关于
(/m 0)
在SMT-LIB中是否是真实的。除了关于我“需要”做什么的建议之外,这个答案是正确的。错误是我错误地将第一句话解释为暗示
(/m 0)
在SMT-LIB中不是真实的。第一段引语来自于什么是真实的定义,没有对什么是非真实做出任何陈述。据我所知,他们本可以省略“m是一个数字而不是0”的部分。许多人认为用零除法是“禁区”,所以这个答案可能对未来的游客有所帮助。你似乎也有同样的想法,但你的说法是m/0根本不是真的(我对此一无所知,但你的解释似乎是正确的)。Z3数据结构在体系结构上也要求为每个术语分配一个排序。对于“任何数学对象”都没有分类。此外,如果m/0不是实数,那么排序将取决于模型值,通常不会被确定为特定的排序。我在小学时没有被零除的想法,我知道我们可以根据自己的喜好定义它。我认为该标准措词不当,难以理解SMT-LIB中如何定义
(/m 0)
,特别是关于
(/m 0)
在SMT-LIB中是否是真实的。除了关于我“需要”做什么的建议之外,这个答案是正确的。错误是我错误地将第一句话解释为暗示
(/m 0)
在SMT-LIB中不是真实的。第一段引语来自于什么是真实的定义,没有对什么是非真实做出任何陈述。据我所知,他们本可以省略“m是一个数字而不是0”的部分。许多人认为用零除法是“禁区”,所以这个答案可能对未来的游客有所帮助。你似乎也有同样的想法,但你的说法是m/0根本不是真的(我对此一无所知,但你的解释似乎是正确的)。Z3数据结构在体系结构上也要求为每个术语分配一个排序。对于“任何数学对象”都没有分类。此外,如果m/0不是实数,则排序将取决于模型值,通常不确定为特定排序。