Potrzebuję dowodu twierdzenia dla prostych prostych zagadnień arytmetycznych liniowych. Jednak nie mogę zmusić Z3 do pracy nawet przy prostych problemach. Jestem świadomy, że jest niekompletna, jednak powinien on być w stanie obsłużyć tego prostego przykładu:Obsługa kwantyfikatora Z3
(assert (forall ((t Int)) (= t 5)))
(check-sat)
Nie jestem pewien, czy jestem widokiem coś, ale to powinno być banalne obalić. Próbowałem nawet tego prostszego przykładu:
(assert (forall ((t Bool)) (= t true)))
(check-sat)
To powinno być możliwe do rozwiązania poprzez wyczerpujące wyszukiwanie, ponieważ boot zawiera tylko dwie wartości.
W obu przypadkach odpowiedzi z3 są nieznane. Chciałbym wiedzieć, czy robię coś złego tutaj, czy nie, jeśli możesz polecić dowódcę twierdzenia dla tego typu formuł.
To świetnie. To działa. Czy możesz mi powiedzieć, jak to określić za pomocą C Api? Powoduje, że funkcja Z3_check nie przyjmuje żadnych dalszych argumentów. – ThorstenT
Musisz stworzyć taktykę i przekształcić ją w solwera. Dodałem przykład używając API C/C++. –
To naprawdę niesamowite. Teraz Z3 działa tak, jakbym tego chciał :) – ThorstenT