0
我試圖實現String.Containts函數。 我寫了一些簡單的測試用例,但是下面的一個(應該返回UNSAT)返回SAT。實現一個模擬字符串的公式包含方法
試驗試圖通過comparig所有可能的子到子在字符串「ABCD」「BD」匹配字符串想(從Z3輸出取文本):
{(exists ((i Int))
(let ((a!1 (forall ((k Int))
(and (>= k i)
(<= k (+ i 1))
(= (select stringToScan k) (select substring (- k i)))
(= (select stringToScan 0) #x0061)
(= (select stringToScan 1) #x0062)
(= (select stringToScan 2) #x0063)
(= (select stringToScan 3) #x0064)
(= (select stringToSearch 0) #x0062)
(= (select stringToSearch 1) #x0064)))))
(and (>= i 0)
(< i 2)
a!1
(= (select substring 0) (select stringToSearch 0))
(= (select substring 1) (select stringToSearch 1)))))}
我曾嘗試過各種實施,但沒有任何成功。
感謝Nikolaj的回答。我應該如何在這個特定的情況下使用暗示?你能告訴我關於Z3序列的任何特定閱讀嗎? – 0mer