У меня есть большая логическая формула для решения, из-за причины редактирования, я должен вставить изображение здесь:
![enter image description here](https://i.stack.imgur.com/fFpat.png)
Кроме того, у меня уже есть функция area
для измерения размера 4 целых чисел: area(c,d,e,f)=|c−d|×|e−f|
Я хотел бы сделать больше, чем просто выяснить, является ли формула выполнимой: я ищу оптимальный 6-кортеж (a,b,c,d,e,f)
, в котором большая формула TRUE
и area(c,d,e,f)
больше или равна измерению любого другого кортежа 6, который также удовлетворяет формуле.
Другими словами, найдите Max(area(c,d,e,f))
подстановку для большой формулы.
Мне интересно, может ли SMT-решатель помочь в решении этой проблемы. Я узнаю, что Z3
поддерживает quantifiers
, и могу сказать, является ли логическое выражение выполнимым или нет. Но вопрос в том, может ли Z3
помочь найти оптимальное решение для функции area
.
У кого-нибудь есть идеи? Будем благодарны за любые комментарии по поводу SMT solver, Z3 или других алгоритмов ...