在Z3中将索引i设置为位

时间:2017-07-14 22:21:23

标签: z3

我试图在z3中的位向量中的特定索引处设置一个位。

目前,我使用逐位或完成此操作。我正在使用大位向量(超过1000位)并且相信这会导致求解器花费大量时间。我希望他们的方式比这更快,在位向量中设置一个任意位(类似于Arrays使用的存储)。

有没有更好的方法来做到这一点,或者我只是使用bit-wise或?

2 个答案:

答案 0 :(得分:2)

我不确定它是否会更快,但你总是可以做这样的断言:

(assert (= ((_ extract i i) bv) #b1))

告诉求解器i的{​​{1}}位高。当然,这是否可用于您的特定应用程序取决于这些新表达式的传递方式。如果这个技巧对你不起作用,我认为你仍然坚持使用bitwise-or。

答案 1 :(得分:2)

此外,对于位向量,可以使用提取和连接的组合来形成新的位向量。例如

add_action( 'woocommerce_single_product_summary', 'whatsappdirect1', 35 );

    function whatsappdirect1() {
        echo '<a class="btn btn-social-icon btn-whatsapp" href="javascript:window.location=waCurrentPage();"><img border="0" alt="W3Schools" src="http://sareechoice.com/wp-content/uploads/2017/07/whatsappicon.png" width="290" height="200"/></a>';
        echo '<script type="text/javascript">
    waCurrentPage = function() {
      return encodeURI("whatsapp://send?phone=+9199999999&text=please let me know the price of the product in the link : " + "http://" + window.location.hostname + window.location.pathname);
    }
    </script>';
    }

其中y是长度为1的位向量,应该具有形成一个等于x的位向量的效果,除了位置k,其中它由y定义。