CVC4: настройки для синтеза функций над логическими значениями с квантификаторами?

В настоящее время я использую CVC4 для решения формул следующего вида:

exists f1, ..., fn . P(f1, ..., fn) /\ forall (b1...bk) . Q(f1,...fn,b1,...bk)

Здесь f1...fn — это функции от некоторого числа от Bool до Bool, а b1...bk — логические значения.

Моя проблема прямо связана с фрагментом UF SMT: в нем есть квантификаторы, но нет сортировок, кроме функций и логических значений.

Когда я пробую свою проблему с настройками по умолчанию на CVC4, он сразу же возвращает Неизвестно, несмотря на то, что вся моя количественная оценка выполняется по конечным доменам.

Проблема в том, что CVC4 имеет чрезвычайно большое количество вариантов работы с квантификаторами: есть куча cegqi, куча fmf, есть mbqi и т. д. У меня такое впечатление, что большинство из них были добавлены из конкретных исследовательских проектов, и я бы предпочел не читать 20 различных статей только для того, чтобы найти свое решение.

Мой вопрос: есть ли рекомендуемый набор вариантов для решения подобных проблем?

Я знаю, что это возможно с CVC4, так как они конкурировали и показали хорошие результаты на UF Отслеживание конкурса SMT, но я не могу найти конкретные аргументы, используемые для этого конкурса.


person jmite    schedule 26.11.2017    source источник
comment
Мы сталкиваемся с той же проблемой, используя битовые векторы.   -  person Greensheep    schedule 08.01.2018


Ответы (1)


Вы можете попробовать "--finite-model-find", дополнительную информацию о котором можно найти здесь: Для каких именно квантификаторов подходит SMT?

Если это не сработает, попробуйте просмотреть конфигурацию, используемую в smt-comp: https://www.starexec.org/starexec/secure/details/configuration.jsp?id=220723. Сначала я нашел эту опцию, а затем указал на вопрос о переполнении стека. ко мне.

person Greensheep    schedule 08.01.2018