Chcę, aby rozwiązanie wróciło z Z3 bez uproszczeń za pomocą instrukcji let
.Zapobieganie upraszczaniu rozwiązania
Na przykład jeśli dam następujące:
(declare-const x Int)
(elim-quantifiers (exists ((x.1 Int))
(and (or (and (= (- x.1 2) 0) (<= (- x.1 9) 0))
(and (or (= (- x.1 2) 0) (and (<= (- x.1 4) 0)
(and (<= (- 4 x.1) 0)
(<= (- x.1 11) 0)))) (<= (- x.1 9) 0))) (= (- (+ x.1 2) x) 0))))
wrócę rozwiązania jak:
(let ((a!1 (and (or (and (<= x 4) (>= x 4)) (and (<= x 6) (>= x 6) (<= x 13)))
(<= x 11))))
(or (and (<= x 4) (>= x 4) (<= x 11)) a!1))
Czy istnieje sposób, aby powiedzieć Z3 nie wyodrębnić kilka złożonych wyrażeń w oświadczeniu let ? Łatwiej będzie mi przeanalizować wynik, jeśli otrzymam odpowiedź bez deklaracji.
Dziękuję. To bardzo pomogło. – sriraj
Świetnie. Czy możesz zaakceptować odpowiedź? W ten sposób inni użytkownicy będą wiedzieć, że odpowiedź rozwiązuje problem zamieszczony w pytaniu. Dzięki –
Czy te opcje można ustawić za pomocą C API, a jeśli tak, to w jaki sposób? –