Z3(API)中解算器的设置逻辑 < >我注意到C++(和C)API允许你提供所使用的逻辑。

Z3(API)中解算器的设置逻辑 < >我注意到C++(和C)API允许你提供所使用的逻辑。,z3,smt,Z3,Smt,关于这一点,我有两个问题在网上无法回答: 这些应该是标准吗,即QF_LRA 这些信息何时值得提供,即Z3何时实际使用这些信息 我的环境主要是QF no BV,但其他一切可能的情况都是如此,我正在逐步使用SMT解算器,并且我总能在开始时确定我将使用什么逻辑。试试看 通常情况下,这确实会带来很大的不同。设置逻辑意味着解算器将使用专门的策略来解算公式,而不是通过通用循环。Z3还将尝试猜测逻辑,但通常最好只是预先提供它。Z3还将尝试找出逻辑是什么(使用默认选项运行时),但它没有针对所有理论组合的自定义策

关于这一点,我有两个问题在网上无法回答:

  • 这些应该是标准吗,即
    QF_LRA
  • 这些信息何时值得提供,即Z3何时实际使用这些信息
  • 我的环境主要是QF no BV,但其他一切可能的情况都是如此,我正在逐步使用SMT解算器,并且我总能在开始时确定我将使用什么逻辑。

    试试看


    通常情况下,这确实会带来很大的不同。设置逻辑意味着解算器将使用专门的策略来解算公式,而不是通过通用循环。Z3还将尝试猜测逻辑,但通常最好只是预先提供它。

    Z3还将尝试找出逻辑是什么(使用默认选项运行时),但它没有针对所有理论组合的自定义策略(请参阅和)。当您不确定Z3将决定做什么时,最好在最前面设置策略,这样,如果您尝试使用不符合逻辑的东西,就会出现错误。它还将使用这些信息来设置smt内核,例如,启用各种预处理器、各种解算器功能和选择启发式(参见示例)。

    相关:相关: