Podkładka jest poprawna, preprocesor qe
może być dość drogi. Co więcej, nie jest skuteczne we wzorach pochodzących z narzędzi sprawdzających oprogramowanie takie jak VCC, Poirot, Dafny, VeriFast, Why3 i ESCJava2. Nie jest to efektywne, ponieważ formuły tworzone przez te aplikacje zawierają również niezinterpretowane funkcje, tablice itp.
Jak sugeruje Pad, Z3 to zbiór silników. Udostępnia interfejsy API i polecenia, które pozwalają użytkownikom wybrać, który silnik (lub kombinacja silników) zostanie wykorzystany do rozwiązania problemu. Kiedy użytkownik po prostu mówi, że (check-sat)
próbuje odgadnąć, jaki jest najlepszy silnik do rozwiązania formuły wejściowej. Zgadywanie opiera się na strukturze wzoru wejściowego i adnotacjach dostarczonych przez użytkownika (przykład: komenda set-logic
). Ciągle rozszerzamy zbiór fragmentów, które są automatycznie wykrywane, oraz zestaw silników, które dostarczamy.
Jest to krępujące, że Z3 pominął fragment, taki jak LIA
i nie zastosował do niego automatycznie procedury . Dla formuł LIA
zwykle najlepsza jest opcja qe
. Alternatywy oparte na dopasowaniu E lub MBQI nie są skuteczne, ponieważ są przeznaczone dla zupełnie innych fragmentów.
Po prostu committed code, który wykrywa LIA
(nawet gdy nie jest używane set-logic
). Zmiana jest już dostępna w gałęzi unstable
(praca w toku). Będzie dostępna jutro w nocnych kompilacjach, aw następnym oficjalnym wydaniu.