Введение
CARINE (Computer Aided Reasoning Engine) — это автоматический доказатель теорем классической логики первого порядка. Изначально он был разработан для изучения влияния стратегий задержанного построения дизъюнктов (DCC) и последовательностей атрибутов (ATS) на эффективность алгоритма поиска в глубину. Основной алгоритм поиска в CARINE — полулинейное разрешение (SLR), основанное на итеративно углубляющемся поиске в глубину (также известном как глубинное итеративное углубление (DFID)) и используемое в доказателях теорем, таких как THEO. SLR применяет DCC для достижения высокой скорости вывода, а ATS — для сокращения пространства поиска.
Конструкция задержанных положений (DCC)
Отложенное построение дизъюнктов — это стратегия отсрочки, повышающая производительность автоматического доказывания теорем за счет сведения объема работы по построению дизъюнктов к минимуму. Вместо построения каждого вывода (дизъюнкта) применяемого правила вывода, информация, необходимая для построения такого дизъюнкта, временно сохраняется до тех пор, пока система доказательства не примет решение либо отбросить дизъюнкт, либо построить его. Если система доказательства решает сохранить дизъюнкт, он будет построен и сохранен в памяти, иначе информация для его построения удаляется. Хранение информации, из которой может быть построен выведенный дизъюнкт, требует почти никаких дополнительных вычислительных операций. Однако построение дизъюнкта может занимать значительное время. Некоторые системы доказательства тратят 30–40% общего времени выполнения на построение и удаление дизъюнктов. С помощью отложенного построения дизъюнктов это потерянное время можно вернуть. Отложенное построение дизъюнктов особенно полезно, когда за короткий промежуток времени строится и отбрасывается большое количество промежуточных дизъюнктов (особенно дизъюнктов первого порядка), поскольку избегаются операции, выполняемые для построения таких недолговечных дизъюнктов. Отложенное построение дизъюнктов может оказаться не очень эффективным для теорем, содержащих только пропозициональные дизъюнкты.
Как работает DCC?
После каждого применения правила вывода некоторые переменные могут быть подставлены терминами (например, x → f(a)), и таким образом формируется множество подстановок. Вместо построения результирующей клаузы и отбрасывания множества подстановок, система доказательства теорем просто сохраняет множество подстановок вместе с другой информацией, такой как клаузы, участвовавшие в правиле вывода, и примененное правило вывода, и продолжает вывод без построения результирующей клаузы правила вывода. Эта процедура продолжается в ходе вывода, пока система доказательства теорем не достигнет точки, где она, основываясь на определенных критериях и эвристиках, решает, следует ли построить финальную клаузу в выводе (и, возможно, некоторые другие клаузы на этом пути) или отбросить весь вывод, то есть удалить из памяти сохраненные множества подстановок и любую связанную с ними информацию.