Научная статья на тему 'ВЕРИФИЦИРОВАННАЯ ТАКТИКА ISABELLE/HOL ДЛЯ ТЕОРИИ ОГРАНИЧЕННЫХ ЦЕЛЫХ НА ОСНОВЕ ИНСТАНЦИРОВАНИЯ И SMT'

ВЕРИФИЦИРОВАННАЯ ТАКТИКА ISABELLE/HOL ДЛЯ ТЕОРИИ ОГРАНИЧЕННЫХ ЦЕЛЫХ НА ОСНОВЕ ИНСТАНЦИРОВАНИЯ И SMT Текст научной статьи по специальности «Математика»

CC BY
87
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СТАТИЧЕСКАЯ ВЕРИФИКАЦИЯ / ЗАДАЧА ВЫПОЛНИМОСТИ ФОРМУЛ В ТЕОРИЯХ / АВТОМАТИЗИРОВАННЫЕ ПРОЦЕДУРЫ ПРИНЯТИЯ РЕШЕНИЙ / STATIC VERIFICATION / QUANTIFIER INSTANTIATION / SMT FORMULAS / SMT SOLVERS / AUTOMATED DECISION PROCEDURES / SOFTWARE VERIFICATION

Аннотация научной статьи по математике, автор научной работы — Садыков Р.Ф., Мандрыкин М.У.

При дедуктивной верификации Си-программ как с помощью различных платформ верификации (Why3, Frama-C/WP, F*), так и с помощью систем интерактивного доказательства теорем (Isabelle, HOL4, Coq) достаточно широко используются SMT-решатели. Их разрешающие алгоритмы полны для некоторых комбинаций логических теорий (логик), в частности для логики QF_UFLIA. В то же время при верификации Си-программ часто необходимо оперировать формулами в других разрешимых логиках, поддерживаемых не всеми SMT-решателями. Типичными примерами таких логик могут служить комбинации QF_UFLIA c теориями ограниченных целых как с переполнением (для беззнаковых целых в Си), так и без переполнения (для знаковых целых), а также теорией конечных интерпретируемых множеств (для поддержки рамочных условий) и др. Одним из возможных способов поддержки таких логик является их непосредственная реализация в SMT-решателях, однако этот способ часто является трудоемким, а также недостаточно гибким и универсальным. Другим способом является реализация пользовательских стратегий инстанцирования кванторов для сведения формул в неподдерживаемых логиках к формулам в широко распространенных разрешимых логиках, таких как QF_UFLIA. В данной статье представлена процедура инстанцирования лемм для трансляции формул в теории ограниченных целых без переполнения в логику QF_UFLIA. Для процедуры трансляции даны доказательства корректности и полноты, а также описана формализация этих доказательств в системе Isabelle/HOL. Аналогичный подход можно использовать для формулирования и доказательства полноты процедур трансляции формул в других теориях, таких как теория ограниченных целых с переполнением и теория ограниченной адресной арифметики.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

VERIFIED ISABELLE/HOL TACTIC FOR THE THEORY OF BOUNDED INTEGERS BASED ON QUANTIFIER INSTANTIATION AND SMT

SMT solvers are widely applied for deductive verification of C programs using various verification platforms (Why3, Frama-C/WP, F*) and interactive theorem proving systems (Isabelle, HOL4, Coq) as the decision procedures implemented in SMT solvers are complete for some combinations of logical theories (logics), in particular for the QF_UFLIA logic. At the same time, when verifying C programs, it is often necessary to discharge formulas in other logical theories and their combinations, that are also decidable but not supported by all SMT solvers. Theories of bounded integers both with overflow (for unsigned integers in C) and without overflow (for signed integers), and also theory of finite interpreted sets (needed to support frame conditions) are good examples of such theories. One of the possible ways to support such theories is to directly implement them in SMT-solvers, however, this method is often time-consuming, as well as insufficiently flexible and universal. Another way is to implement custom quantifier instantiation strategies to reduce formulas in unsupported theories to formulas in widespread decidable logics such as QF_UFLIA. In this paper, we present an instantiation procedure for translating formulas in the theory of bounded integers without overflow into the QF_UFLIA logic. We formally proved soundness and completeness of our instantiation procedure in Isabelle. The paper presents an informal description of this proof as well as some considerations on the efficiency of the proposed procedure. Our approach is sufficient to obtain efficient decision procedures implemented as Isabelle/HOL proof methods for several decidable logical theories used in C program verification by relying on the existing capabilities of well-known SMT solvers, such as Z3 and proof reconstruction capabilities of the Isabelle/HOL proof assistant.

Текст научной работы на тему «ВЕРИФИЦИРОВАННАЯ ТАКТИКА ISABELLE/HOL ДЛЯ ТЕОРИИ ОГРАНИЧЕННЫХ ЦЕЛЫХ НА ОСНОВЕ ИНСТАНЦИРОВАНИЯ И SMT»

DOI: 10.15514/ISPRAS-2020-32(2)-9

Верифицированная тактика Isabelle/HOL для теории ограниченных целых на основе инстанцирования и SMT

1Р.Ф. Садыков, ORCID: 0000-0002-2792-2465 <sadykov@ispras.ru> 2М.У. Мандрыкин, ORCID: 0000-0002-9306-7719 <mandrykm@ispms.ru>

1 Московский государственный университет имени М.В. Ломоносова,

119991, Россия, Москва, Ленинские горы, д. 1

2 Институт системного программирования им. В.П. Иванникова РАН,

109004, Россия, г. Москва, ул. А. Солженицына, д. 25

Аннотация. При дедуктивной верификации Си-программ как с помощью различных платформ верификации (Why3, Frama-C/WP, F*), так и с помощью систем интерактивного доказательства теорем (Isabelle, HOL4, Coq) достаточно широко используются SMT-решатели. Их разрешающие алгоритмы полны для некоторых комбинаций логических теорий (логик), в частности для логики QF_UFLIA. В то же время при верификации Си-программ часто необходимо оперировать формулами в других разрешимых логиках, поддерживаемых не всеми SMT-решателями. Типичными примерами таких логик могут служить комбинации QF_UFLIA c теориями ограниченных целых как с переполнением (для беззнаковых целых в Си), так и без переполнения (для знаковых целых), а также теорией конечных интерпретируемых множеств (для поддержки рамочных условий) и др. Одним из возможных способов поддержки таких логик является их непосредственная реализация в SMT-решателях, однако этот способ часто является трудоемким, а также недостаточно гибким и универсальным. Другим способом является реализация пользовательских стратегий инстанцирования кванторов для сведения формул в неподдерживаемых логиках к формулам в широко распространенных разрешимых логиках, таких как QF_UFLIA. В данной статье представлена процедура инстанцирования лемм для трансляции формул в теории ограниченных целых без переполнения в логику QF_UFLIA. Для процедуры трансляции даны доказательства корректности и полноты, а также описана формализация этих доказательств в системе Isabelle/HOL. Аналогичный подход можно использовать для формулирования и доказательства полноты процедур трансляции формул в других теориях, таких как теория ограниченных целых с переполнением и теория ограниченной адресной арифметики.

Ключевые слова: статическая верификация; задача выполнимости формул в теориях; автоматизированные процедуры принятия решений

Для цитирования: Садыков РФ., Мандрыкин М. У Верифицированная тактика Isabelle/HOL для теории ограниченных целых на основе инстанцирования и SMT. Труды ИСП РАН, том 32, вып. 2, 2020 г., стр. 107-124. DOI: 10.15514/ISPRAS-2020-32(2)-9

Благодарности. Исследование поддержано Министерством образования и науки РФ (проект №RFMEFI60719X0295).

Verified Isabelle/HOL tactic for the theory of bounded integers based on quantifier instantiation and SMT

1R. Sadykov ORCID: 0000-0002-2792-2465 <sadykov@ispras.ru> 2M. Mandrykin ORCID: 0000-0002-9306-7719 <mandrykin@ispras.ru> 1 Lomonosov Moscow State University, GSP-1, Leninskie Gory, Moscow, 119991, Russia 2 Ivannikov Institute for System Programming of the Russian Academy of Sciences, 25, Alexander Solzhenitsyn st., Moscow, 109004, Russia

Abstract. SMT solvers are widely applied for deductive verification of C programs using various verification platforms (Why3, Frama-C/WP, F*) and interactive theorem proving systems (Isabelle, HOL4, Coq) as the decision procedures implemented in SMT solvers are complete for some combinations of logical theories (logics), in particular for the QF_UFLIA logic. At the same time, when verifying C programs, it is often necessary to discharge formulas in other logical theories and their combinations, that are also decidable but not supported by all SMT solvers. Theories of bounded integers both with overflow (for unsigned integers in C) and without overflow (for signed integers), and also theory of finite interpreted sets (needed to support frame conditions) are good examples of such theories. One of the possible ways to support such theories is to directly implement them in SMT-solvers, however, this method is often time-consuming, as well as insufficiently flexible and universal. Another way is to implement custom quantifier instantiation strategies to reduce formulas in unsupported theories to formulas in widespread decidable logics such as QF_UFLIA. In this paper, we present an instantiation procedure for translating formulas in the theory of bounded integers without overflow into the QF_UFLIA logic. We formally proved soundness and completeness of our instantiation procedure in Isabelle. The paper presents an informal description of this proof as well as some considerations on the efficiency of the proposed procedure. Our approach is sufficient to obtain efficient decision procedures implemented as Isabelle/HOL proof methods for several decidable logical theories used in C program verification by relying on the existing capabilities of well-known SMT solvers, such as Z3 and proof reconstruction capabilities of the Isabelle/HOL proof assistant.

Keywords: static verification; quantifier instantiation; SMT formulas; SMT solvers; automated decision procedures; software verification

For citation: Sadykov R., Mandrykin M. Verified Isabelle/HOL tactic for the theory of bounded integers based on quantifier instantiation and SMT. Trudy ISP RAN/Proc. ISP RAS, vol. 32, issue 2, 2020. pp. 107-124 (in Russian). DOI: 10.15514/ISPRAS-2020-32(2)-9

Acknowledgement. The research was carried out with funding from the Ministry of Science and Higher Education of the Russian Federation (the project unique identifier is RFMEFI60719X0295).

1. Введение

В процессе разработки программного обеспечения на языке Си часто возникают ошибки, связанные с неправильным использованием арифметических операций, которые могут привести к переполнению, и, как следствие, непредвиденному поведению программ, несмотря на долгое и тщательное тестирование. Но благодаря формальным методам верификации программного кода возможно найти неочевидные, но в то же время многочисленные ошибки, связанные с операциями над целочисленными типами и их значениями. Многие методы и инструменты дедуктивной верификации используют решатели задачи выполнимости формул в теориях, называемые также SMT-решателями. Алгоритмы таких решателей полны для некоторых комбинаций логических теорий, в частности, для логики QF_UFLIA. Несмотря на применимость SMT-решателей к широкому классу задач, часто необходимо применять решающие процедуры к формулам в логических теориях, которые являются разрешимыми, но не всегда полностью поддерживаются SMT-решателями. К таким логическим теориям можно отнести ограниченные целые как с переполнением (для беззнаковых целых в Си), так и без переполнения (для знаковых целых), теории конечных интерпретируемых множеств (для поддержки рамочных условий) и др. В 108

данной работе с целью автоматизированного получения доказательств в системе интерактивного доказательства теорем Isabelle/HOL [1] мы сформулировали метод проверки выполнимости формул с ограниченными целочисленными значениями переменных, который основан на применении SMT-решателя в логике QF_UFLIA. Наш метод является решающей процедурой над формулами в теории ограниченных целых (BLIA), которая реализована в виде метода Isabelle/HOL и состоит из инстанцирования исходной формулы аксиомами теории ограниченных целых (являющихся леммами теории HOL-Word[2]), интерпретации полученной формулы в теории QF_UFLIA, применения решающей процедуры SMT-решателя и последующего восстановления доказательства средствами Isabelle. В свою очередь, доказательство полноты предложенного метода основывается на преобразовании полученной от SMT-решателя модели в логике QF_UFLIA в модель в теории ограниченных целых.

Несмотря на инстанцирование аксиом исходной теории, которое увеличивает длину анализируемой формулы, нам не требуется вносить существенные изменения в инструменты воспроизведения доказательств системы Isabelle и SMT-решатель, а благодаря оптимизации аксиом теории ограниченных целых мы получаем линейное по количеству вхождений функциональных символов увеличение длины исходной формулы, поэтому сложность метода не существенно увеличивается по сравнению с использованием решающих процедур, реализованных непосредственно внутри SMT-решателей. Основной целью нашей работы являлось доказательство полноты и корректности предложенной процедуры преобразования формул из теории ограниченных целых в логику QF_UFLIA.

Также мы рассмотрели некоторые статьи о модульной арифметике [3], [4], [5], где описаны ошибки с переполнениями переменных типа int и верификация программ, использующих ограниченные целые. В работе [3] сформулированы методы преобразования для формул в нелинейной модульной арифметике с ограниченными целыми, которые предполагают изменение внутренних алгоритмов SMT-решателя. Потенциально получаемые при этом доказательства (соответствующая дедуктивная система подробно не описана в статье), иногда сложно воспроизвести с использованием существующих возможностей систем автоматизированных доказательств. В статье [4] получена оценка сложности решающей процедуры для IDL. IDL - это логика разности над целыми числами. По определению, это булевы комбинации неравенств вида х — у < Ъ, где х и у - целочисленные переменные, а Ъ - целочисленная константа. Решающая процедура данной логики является NP-трудной; аналогичная логика QF_UFLIA, которая является расширением логики IDL операцией умножения на константу, - тоже NP-полная задача.

2. Предварительная информация

В стандарте SMT-LIB [8] QF_UFLIA - это логика бескванторных формул с неинтерпретируемыми символами и равенством в комбинации теорий линейной целочисленной арифметики и неинтерпретируемых функций. Логику QF_UFLIA можно рассматривать как комбинацию логик QF_LIA и QF_UF. QF_LIA обозначают замкнутые бескванторные формулы с равенством в теории линейной целочисленной арифметики (LIA). В сигнатуру этой теории входят следующие функциональные символы: {+, с х\ <}, где с -целочисленная константа. QF_UF обозначает замкнутые бескванторные формулы с равенством в теории неинтерпретируемых функций.

Общеизвестным методом решения задачи доказательства условий корректности с ограниченными целыми числами является представление целых чисел в виде битовых векторов. Но как написано в статье [11], логика QF_BV очень сложная в общем случае, на практике различие во времени разрешения формул в QF_BV и QF_LIA часто выглядит как экспоненциальное. Кроме того, сложность решения в QF_BV зависит от размера ограниченного целого, поэтому для больших ограниченных целых, например, 256 бит,

различие эффективности между QF_BV и QF_LIA может быть очень большим. Для QF_LIA размер никак не влияет на время решения. Для QF_BV нет поддержки воспроизведения доказательств в Isabelle. И доказательства обычно больше по сравнению с LIA, так как основаны на переборе большого числа вариантов и не переиспользуют встроенную процедуру для линейной арифметики в Isabelle. Но есть фрагменты логики QF_BV, которые можно решать существенно более эффективно, но в решателях реализованы не эти алгоритмы, а общий случай. Эффективную решающую процедуру для линейного фрагмента со сдвигами и побитовыми операциями можно тоже сделать на основе процедуры конечного инстанцирования, аналогично как в этой работе.

Теорию линейной арифметики с ограниченными целыми мы будем задавать аксиоматически как расширение теории линейной целочисленной арифметики. В ее сигнатуру помимо символов теории LIA включим следующие функциональные символы: {•+b^,cxb^ , v(-), (Ob, <f), где с - неограниченная целочисленная константа. Термы в этой теории могут быть двух различных типов - ограниченные и неограниченные целые. Ограниченные целые принимают целочисленные значения из некоторого диапазона [L.. U]. Эти значения являются неограниченными целыми и могут быть получены с помощью применения функции v(). Будем использовать а, Ъ и d в качестве переменных, относящихся к сорту ограниченных целых. Для сорта неограниченных целых будем использовать переменные х, у и с, при этом с всегда будет обозначать интерпретируемую целочисленную константу. Таким образом, для любого ограниченного целого a будет выполнено соотношение L < v(a) < U. Семантика операций • +ь • и •xb• такова, что их результаты совпадают с результатами соответствующих целочисленных операций, примененных к значениям ограниченных аргументов, если эти результаты могут быть представлены в виде ограниченных целых. В противном случае эти результаты не определены, то есть их модель не фиксирована и может быть выбрана произвольно для каждой конкретной формулы. Операция •b возвращает ограниченное целое с заданным значением, если это значение лежит в диапазоне [L..U] и имеет неопределенный результат в противном случае. Операция •<ь• сравнивает значения ограниченных целых и по сути является сокращенным обозначением для выражения вида v() < v(-). В качестве примеров формул в теории ограниченных целых рассмотрим следующие:

v(a) <5 л 5 < v(a) л (5)b xb a+b(l)b Ф (26)ь и (1)

a <b (5)ь л (5)ь <ьал (5х v(a) + 1- 26)b Ф (0)b. (2)

Будем считать L = 0 и U = 25. В этих предположениях формула (1) будет являться выполнимой, например, если взять в качестве значения v(a) ограниченной переменной а число 5 (v(a) = 5 , (5)b xba= (25)b, но (5)b xb a+b(1)b и (26)b не определено, так как 25 + 1 = 26 > 25 и может быть выбрано равным, например, (0)ь). Формула (2) же является не выполнимой, так как из a <b (5)ь л (5)b <b а следует, что v(a) = 5 , а значит 5 x v(a) + 1-26 = 0 и (0)b = (0)b.

Для решения задачи о выполнимости формул в теории ограниченных целых будем использовать процедуру трансляции в логику QF_UFLIA. Процедура преобразования формулы F состоит из последовательного инстанцирования аксиом теории ограниченных целых. Инстанцированием аксиомы для некоторой формулы F будем называть взятие конъюнкции от аксиомы с некоторой подстановкой и формулы F. Операция инстанцирования аксиомы довольна проста, мы применяем инстанцирование, когда можем найти подходящий терм в формуле F согласно правилам процедуры преобразования. Такое преобразование создает некоторую формулу F*, которую мы интерпретируем в теории QF_UFLIA, и запускаем решающую процедуру SMT-решателя, получая доказательство, которое затем воспроизводится (сертифицируется) средствами Isabelle [6], [7]. Для доказательства полноты процедуры преобразования рассматриваем случай, когда мы получили некоторую модель R преобразованной формулы F* в логике QF_UFLIA. Далее будем называть модель R реализацией формулы F. В данной статье мы показываем, как из

реализации Д может быть восстановлена модель М исходной формулы F в теории ограниченных целых. В следующих разделах рассмотрены основные обозначения и определения, описывающие данную процедуру, пример работы алгоритма, формулировка и доказательство соответствующей теоремы о полноте.

3. Постановка задачи

Пусть Ъ - множество целых чисел, Ъй-множество ограниченных целых и £ = (+й,х&, <&] -сигнатура теории Т линейной арифметики с ограниченными целыми (BLIA). ,Р - формула в BLIA, в которой переменные принимают значения из множества Ъь.

Множество аксиом теории ограниченных целых состоит из аксиом линейной целочисленной арифметики и 5 формул (см. рис. 1). Обозначим это множество за Т0, где Ь и и являются ограничениями на целые, символ +ь обозначает операцию суммирования в Ъь, х& -умножение в Ъ&, функция V отображает из множества Ъь в Ъ. В практической реализации нашего инструмента в Isabelle/HOL мы рассматриваем эти 5 формул как леммы теории «HOLWord» [2]. Так как аксиома А 6 в теории Т0 зависит от двух переменных а и Ъ, мы вводим расширение теории Т0 - теорию 7\, чтобы избежать квадратичного увеличения размера формулы с инстанцированными аксиомами. Поэтому наш алгоритм реализует процедуру инстанцирования аксиомами из теории Т±.

Теория 7\ отличается от Т0 аксиомой А6 (см. аксиому А6' на рис. 1). Покажем эквивалентность теорий Т0 и 7\.

Теорема 1. Каждая формула ,Р без свободных переменных в сигнатуре £ выполнима в теории Т0 тогда и только тогда, когда она выполнима в теории Т±.

Доказательство. Покажем, что для любой формулы ,Р, имеющей модель М в теории Т0, существует та же модель М в теории Т± и наоборот.

Пусть формула F имеет модель М в теории Т0. Тогда все аксиомы, кроме (46'), содержатся в М. Возьмем произвольное ограниченное целое а. Поскольку (А4) сохраняется, мы имеем

I < ум(а) < и.

Обозначим Vм (а) как с. Тогда Ь < с = Vм (а) < и, и поскольку (А5) сохраняется, имеем

Vм (да = с.

Получим, что Vм ((с)™) = с = Vм (а) и по аксиоме (А6) имеем

(с)% = а.

Теперь из Vм (а) = с согласно равенству имеем

Ум((ум(а))>а) = ум((с)£),

и согласно (А 6),

(Vм (а))% = да

Следовательно, (Vм (а))™ = (с)™ = а и получаем (А6') для произвольного а.

)ь - ■

)ь = (^)ь

Теперь предположим, что Р имеет модель М в 7\. Тогда все аксиомы, кроме (А 6) содержатся в М. Следовательно, для любых а и Ь таких, что Vм (а) = Vм (Ь), по аксиоме (46') имеем

(Vм (а))^ = а и (Vм (Ъ))^ = Ъ.

Из Vм (а) = Vм (Ь) получим (Vм (а))™ = (Vм (Ь))™ согласно приведенному выше равенству. Таким образом, и (А 6) сохраняется для любых а и Ъ. □

4. Процедура инстанцирования

Зададим процедуру трансляции формулы Р в теории BLIA в эквивалентную формулу F* в теории QF_UFLIA для того, чтобы проверить выполнимость формулы F.

Эта процедура использует аксиомы теории Т1 для составления правил инстанцирования по формуле F следующим образом:

• (А1) инстанцирована с а и Ъ для любого терма а+ьЪ в формуле F.

• (А2) инстанцирована с с и а для любого терма с хь а в формуле F.

• (Л3) инстанцирована с а и Ъ для любого терма а <ЬЪ в формуле F.

• (А4) инстанцирована с а для любого терма типа Ъь в формуле F.

• (Л5) инстанцирована с с для любого терма вида (с)ь в формуле F.

• (А6') инстанцирована с а для любого терма типа Ъь в формуле F.

Обозначим за ¥* формулу F после выполнения алгоритма инстанцирования аксиом. Обозначим за Р+ множество формул, полученных инстанцированием аксиомы (А1) для любого терма а+ьЪ в формуле F.

Аналогично определим множества Рх для (А2), Р~ для (.43), Ре для (А4), Рс для (Л5), Рт для (А6').

После всех трансляций, символы умножения и суммирования воспринимаются как неинтерпретируемые символы. И символом ЛЛ обозначим операцию взятия конъюнкции всех формул из множества.

Тогда полученная формула равна следующему

р* = РЛ (ЛЛР+) Л (ЛЛРХ) Л (ЛЛР-) Л (ЛЛРе) Л (ЛЛРС) Л (ЛЛ Рт). Формула Р* решается в теории QF_UFLIA с помощью ЗМТ--решателя. В этом подходе мы пользуемся тем, что нам не требуется разрабатывать инструмент для решения нашей задачи, вместо этого мы можем без изменения ЗМТ--решателей, которые предназначены для широкого класса задач, произвести проверку выражений и осуществить решающую процедуру, описывающую некоторые операции и типы языка программирования Си.

£= [+b,xb,<b},a,b Е Zb,v(a) Е Ъ,сЕ Ъ, с—константа Va, ЪЕЪЬ. L< v(a) + v(b) <U ^ v(a+bb) = v(a) + v(b), (Al)

Va Е Ъь.(с xba) = cx v(a), (A2)

Va,b ЕЪЬ a<bb^ v(a) < v(b), (Л3)

Va ЕЪЬ. L < v(a) < U, (A4)

УсЕЪ .L<c<U^>v((c)b) = c (A5)

Va, b Е 1b. (a) + v(b) ^ a = b (A6)

Va Е Ъь. ((v(a))b = a (A6')

Рис. 1. Аксиомы, определяющие теорию ограниченных целых Fig. 1. Axioms defining the theory of bounded integes

2.1 Пример процедуры трансляции

Пример. Пусть

F = (25)b <baA—1 xb a+b(25)b Ф (0)b. И ограничения равны следующим значениям: L = —25, U = 25. Шаги инстанцирования:

1.Используя аксиому (Al):

—1xba+b(25)b Е F ^

—25 < v(—1 xb а) + v((25)b) <25^

v(—1 хь a+b(25)b) = v(—1 хь а) + v((25)b),

2.Используя аксиому (A2): —1 xbaEF^

—25 < —1 х v(a) <25 ^ v(—1 xb а) = —1 х v(a),

3. Используя аксиому (A3):

(25) ь <baeF^ (25) & <b а ^ v((25)b)) < v(a),

4. Используя аксиому (A4): ае F ^ —25 < v(a) < 25,

5. Используя аксиому (A5):

(25)й е F ^ —25 < 25 < 25 ^ v((25)b) = 25,

6. Используя аксиому (A6'):

—1 хь a+b(25)b eF^ (v(—1 хь a+b(25)b))b = —1 хь a+b(25)b.

Тогда формула F* равна F Л (—25 < v(—1 хь а) + v((25)b) < 25 ^ •••) Л ... . Стоит заметить, что правила A4 и А6' выглядят одинаково, но в примере были применены для разных термов, данная запись была сделана для наглядности, в программной реализации в Isabelle/HOL такие правила инстанцировния применяются для одинаковых термов. Покажем, что формула F невыполнима в логике BLIA. Утверждение 1. Формула F невыполнима в логике BLIA.

Доказательство. Воспользуемся полученными формулами после применения процедуры инстанцирования. Из инстанцирования (A5) получим v((25)b) = 25. Тогда из инстанцирования аксиомы (A3) получим 25 = v((25)b)) < v(a) и из инстанцирования аксиомы (A4) имеем v(a) <25. Таким образом, v(a) = 25.

Теперь из инстанцирования (A2) получим v(—1 хь а) = —1 х v(a) = —25, тогда из (A1)

v(—1 хь a+b(25)b) = v(—1 хь а) + v((25)b) = —25 + 25 = 0.

Из аксиомы (A6') получим —1 хь a+b(25)b = (v(—1 хь a+b(25)b))b = (0)&.

Отсюда получаем следующее противоречие со вторым конъюнктом формулы F

—1хьа+ь(25)ь Ф (0)ь

Следовательно, формула F невыполнима. □

Нам нужно доказать полноту и корректность процедуры инстанцирования для теории ограниченных целых.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Корректность очевидно следует из того, что если формула F выполнима в BLIA, то формула F* также выполнима в QF_UFLIA, так как состоит из результата инстанцирования аксиом BLIA и формулы F.

3. Доказательство полноты

Здесь мы рассмотрим произвольную формулу без свободных переменных F в теории BLIA, её трансляцию F*, полученную через процедуру инстанцирования аксиом, и модель R, полученную из трансляции F* в QF_UFLIA, которую мы называем реализацией. Термы и предикаты формул F и F* будем обозначать как v(u) + v(t), а их соответствующие выражения в реализации как vR (uR)+RvR (tR).

Свободные термы ограниченных целых будем обозначать буквами t и и, свободные термы целых чисел обозначим через к и п, а произвольные выбранные ограниченные целые как a и b, соответствующие неограниченные целые через х, у или с.

Доказательство осуществляется с помощью восстановления модели M исходной формулы F в теории BLIA из реализации R.

Для начала докажем несколько вспомогательных лемм.

Лемма 1. Терм вида v(t) принадлежит формуле F* тогда и только тогда, когда ограниченный целый терм t принадлежит F.

Доказательство. Пусть терм t содержится в F. Тогда согласно правилу инстанцирования аксиомы (A4) терм v(t) содержится в F*.

Теперь предположим, что v(t) принадлежит множеству термов F*. Покажем, что этот терм возникает только благодаря процедуре инстанцирования с термом t, который принадлежит множеству термов F.

Доказательство перечислением правил инстанцирования. Рассмотрим правило (A1). Оно содержит 3 случая применения функции v, обозначаемые v(t+bu) , v(t) и v(u). Аксиома (A1) применяется только тогда, когда термы t+bu содержатся F. Следовательно, термы t, и и t+bu уже содержатся в F.

Доказательство относительно других правил аналогично. Случай когда v(t) принадлежит множеству термов F очевиден.^

Лемма 2. Терм вида (v(t))b принадлежит формуле F* тогда и только тогда, когда ограниченный целый терм t принадлежит F.

Доказательство. Пусть терм t содержится в F. Тогда согласно правилу инстанцирования аксиомы (A6') терм (v(t))b содержится в F*.

Теперь предположим, что (v(t))b принадлежит множеству термов F*. Аксиома (A6') применяется только тогда, когда терм t содержится в F. Случай (v(t))b принадлежит множеству термов F очевиден.^

Лемма 3. Терм вида (п)ь принадлежит формуле F* тогда и только тогда, когда он уже принадлежит F, либо п равен v(t), где t принадлежит F.

Доказательство. Пусть терм t содержится в F. Тогда согласно лемме 2 терм (v(t))b содержится в F*. Таким образом, (п)ь принадлежит формуле F*, где п = v(t). Теперь предположим, что терм (п)ь содержится в F* и не содержится в F. В таком случае нам нужно показать, что либо (п)ь содержится в F, либо п вида v(t), где t содержится в F. Докажем это перечислением правил инстанцирования. Только аксиомы (A5) и (A6') содержат символ (-)ь. Согласно правилу (A5) (п)ь содержится в F, в случае (A6') п имеет требуемый вид. □

Далее дадим несколько дополнительных обозначений, которые мы будем применять в доказательствах.

Определим образ подмножества X на множестве А с помощью следующей функции f-.A^B как f[X]. Введем следующее обозначение:

[f(x) \ Р(х)} = f[[x \ Р(х)}], где [х \ Р(х)} - множество термов х, удовлетворяющих предикату Р(х).

Далее определим следующие множества: BR = [tR \ v(t) Е F'},

CR = [nR \ (n) b Е F*}, где, как мы определили в начале разд. 3, tR и nR обозначают означивание определенных термов t и п в реализации R. Реализация R содержит частичные модели функций v(-) и (-)ь на соответствующих множества, определяемых термами в F*. Рассмотрим функции vR(-) и () (которые будем считать реализациями соответствующих функций v(-) и (-)ь), определенные на множествах BR и CR соответственно. Далее докажем некоторые свойства функций v(-) и (-)ь. Лемма 4. vR[BR] £ CR.

Доказательство.

V*[Вк] = (Vй(а) \аеВк}

= (уй(а) \ ае(с8 \ у(ь) е Р*}} = (Vя (Iя) \ v(t)еF,} = (уй(£:й) \ tеF} (по лемме 1) = (Vй (£й) \ (К0)ь е F*} (по лемме 2) = ((К0)й \ №))ь е F*} = (пй \ (п)ь еР'ЛЗЬ.П = v(t)} С (п \ (п)ь е F*} = сй.^

Лемма 5. Vй [£й] с [ь,и].

Доказательство. По определению Вк для любого целого с такого, что с е Vя [5й] имеем с = Vй (£й), где v(t) е F^ Из леммы 1 следует С е Р. Это, в свою очередь, означает, что аксиома (А4) была инстанцирована с термом £, то есть Ь < у(Ь) < и - подтерм без свободных переменных в F^ Поскольку Д является моделью F*, Ь < Vй (£й) < и и, следовательно, Ь < с < и для любого с е Вя .□ Лемма 6. Vя [Вя] £С8п [Ь,и]. Доказательство. Следует напрямую из лемм 4 и 5. □ Лемма 7. Vйинъективна на множестве определения Вя.

Доказательство. Возьмем произвольные значения ограниченно целых х и у из множества Вк. Тогда имеем х = £й, у = ия, у(Ь) еР* и р(и) е F^ Тогда по лемме 1 tеF и и е F и, таким образом, аксиома (А6') была инстанцирована с этими термами, сохраняющие предикаты (у(ь))ь = £ и (у(и))ь = £ являются подтермами без свободных переменных в F^ Так как Д модель F*, мы имеем (vй(tй))й = £йи (ия(ия))я = ия и поскольку Д является моделью в теории QF_UFLIA, которая включает в себя сравнение неинтерпретированных функций (таких как (-)ь) имеем Vй (£й) = Vя (ия) ^ (vй(tй))й = (ия(ия))я или, что то же самое, что Vй (£й) = Vя (ия) ^ £й = ия, то есть Vй (х) = Vй (у) ^ х = у для любых х и у из множества Вял

Лемма 8. Vй сюръективна на множестве значений Сй П [Ъ, и]. Доказательство.

Сй = (пй \ (п)& е F*} (по определению Сй)

= (пй \ (п)ь е?)и ((К0)й \ t е F} (по лемме 3) = (пй \ (п)ь е?)и ((К0)й \ КО е F*} (по лемме 1) = (пй \ (п)& е?)и (уй(£й) \ е F*} = (пй \ (п)& е?)и у[(£й \ е F*}] = (пй \ (п)& е?)и р[Вя] (по определениюВй). Таким образом, чтобы доказать Сй п [¿, и] С Vя [Вя] мы должны показать, что (пй \ (п)ь е F} п [¿, и] с [5й]. Рассмотрим любой терм п такой, что (п)ь е F.

Поскольку (п)ь е F, (А5) была инстанцирована с п и, следовательно, Ь < п < и ^ и((п)ь) = п является подтермом без свободных переменных в F* и, Д является моделью для F*, Ь < пя < и ^ ^й((пй)й) = пй. Так что, если пй е [Ь.Щ, то пй = уя((пя)я) е &я((пя)я) \ (п)& е F}. Следовательно, (пй \ (П)ь е F}n [¿,У] С (Уй((пй)й) \ (п)ь е F}

= (^й(((п)ь)й)\(")ье^} = (уй(£й) \ t е F л зп. t = (п)&} С (уй(£й) \ t е F}

= [vR(tR) \ v(t) Е F*} (по лемме 1) = vR[[tR \ у(1)ЕР*}] = vR[BR].a

Лемма 9. vR биективна на множествах Bru Cr П [L, U] и функция Q)R является обратной к ней.

Доказательство. Утверждение о том, что vR является биекцией между BR и CR П [L, U] следует непосредственно из лемм 7 и 8. Таким образом, vR имеет обратную биективную функцию. Эта обратная функция может быть однозначно охарактеризована уравнением (vR)-1(vR(a)) = а для любого аЕВк. Но для каждого а Е BR, значение а можно представить как tR, где v(t) Е F*. По лемме 1 терм t Е F и, следовательно, аксиома (A6') была инстанцирована с термом t. Таким образом, (vR(tR))R = tR и, следовательно, (vR(a))R = а для любого а Е BR. Таким образом, обратная биективная функция совпадает с функцией (• )Rb .□

Лемма 10. (-)£[СЙ] £ BR.

Доказательство.

(ОьРЧ = (0№й \ (п)ь Е F*}] (по определению CR)

= (•)*[&* \ (п)ь ЕР}и {(v(t))R \t ЕР}] (по лемме 3) = (0№й \ (п)ь Е F}] U (0Ш(р(О)й \ tЕF}] (по определению) = i(nR)Rb \ (п)ь ЕР}и {((v(t))R)R \1ЕР} = i((n)b)R \ (п)ь Е F} U {(vR(tR))R \ t Е F}. i((n)b)R \ (п)ь Е F} = [tR \1ЕР A3n.t= (п)„} £ {tR \ t Е F}

= {tR \ v(t) Е F*} (по лемме 1) = BR (по определению BR).

Для каждого Ь Е F (А6') был инстанцирован с t, поэтому (у(ьУ)ъ = Ь является подтермом без

)Яь

свободных переменных в формуле F*, и поскольку R является моделью F*, (vR(tR))Rh = t".

Таким образом, по определению соответствующего множества,

№*&*))* ИЕР} = [1Я\1ЕР]

= \ у(Ь) Е Р*} = Вя (по лемме 1 и определению 5й).

Используя приведенное выше представление (0й[Сй] мы наконец имеем требуемое выражение (0й[Сй] £ Вял

Получим ситуацию, изображенную на рис. 2, где Vя является биекцией между Вя и Ся П [Ъ, и]. () является её обратной функцией на Вя и определена на множестве Ся. Без ограничения общности, рассмотрим случай, когда [Ъ, и]\Ся Ф 0.

Если множества Сйи [Ъ, и ] совпадают, следующее доказательство по-прежнему правильно (некоторые аргументы не принимают никаких значений и их можно не рассматривать). Соответственно, также предположим Ь < 0 < и.

Теперь рассмотрим множество [Ь,и]\Ся, мощность которого не превышает и — Ь + 1. Поэтому мы произвольно выбираем несколько | [Ъ, и] \ Ся | различных элементов из любой области, которая не пересекается с Вя, и устанавливаем биекцию у'(•) между этими неявными элементами и множеством [Ъ, и]\Ся. Обозначим результирующий набор соответствующих отдельных неявных элементов как 'ь и соответствующая обратная биекция у'О как (•)'ь. Теперь мы готовы ввести определение восстановленной модели М (из реализации Д)

исходной формулы F, которая задана на рис. 3. Далее докажем необходимые свойства этого определения.

Рис. 2. Расширение биекции между множествами BR и CR П [L, U] на множества ЪЦ = BR u

Ъь' u[L,U]

Fig. 2. Extending the bijection between BR and CR П [L, U] to the whole sets ЪЦ = BR UZb' and

[L,U]

Рис. 3. Определение восстановленной модели M в теории BLIA Fig. 3. Definition of the reconstructed model M in BLIA

Лемма 11. Восстановленная модель M на рис. 3 однозначно определена. Доказательство. Восстановленная модель М, показанная на рис. 3, включает в себя определение области Ъь ограниченных целых, а также определения для всех функций из соответствующей сигнатуры теории BLIA {+ь,хb, <b, v(-), 0)b}. Таким образом, мы должны показать, что функции, определенные как на рисунке, действительно отображают любую комбинацию своих аргументов, взятые из соответствующих доменов в элементы из соответствующих диапазонов. Случаи для функции v и предикат <ь очевидны. Тем не менее,

мы должны убедиться, что выбранное множество 1ь действительно содержит все значения, взятые функциями (•)%, и x¿f, иначе наше определение модели противоречиво. Рассмотрим случаи для функции (•)%. В первом случае (c)R Е BR для любого с Е CR согласно лемме 10, поэтому (c)R Е 1м. Во втором случае (с)'ь Е 1ь С 1м согласно построению. В третьем случае еЖь Е по определению эпсилон-оператора Гильберта е (выбор произвольного элемента непустого множества), так как 11% l> \1\l = |[¿, \ Сй| > 0 (в общем случае либо 11 ь, либо BR не пусты).

Теперь рассмотрим функцию +¿f. Второй и третий случаи ((vM(a) + vM(b))% и (0)b) явно определены, поскольку (с)% явно определен для любого с, как показано выше. Во-первых, в случае, если мы поступаем по индукции по правилам инстанцирования и показываем, что терм вида t+bu может возникать только во время инстанцирования, когда он уже содержится в F (единственная аксиома (A1) инстанцируется всякий раз, когда t+bu содержится в F). Затем из t+bu Е F* следует t+bu Е F и по лемме 1, v(t+bu) Е F*. Поскольку а = tR, b = uR, a+bb = tR+buR = (t+bu)R Е BR сЦ по определению BR. Доказательство для функции хь аналогично. □

Лемма 12. Аксиомы (A4), (A5) и (A6') теории BLIA сохраняются в модели М. Доказательство. Рассмотрим аксиому (A4) для произвольного а Е 1b = BR U 1'ь. В случае а Е BR, vM (а) = vR(a) Е [L, U] по лемме 5.

В случае, если а Е 1'b, vM (а) = v'(a) Е [L, U]\CR С [L, U] согласно построению. Рассмотрим аксиому (A5) для произвольного целого числа с. Согласно правилу инстанцирования аксиомы, мы должны показать равенство vM((c)%) = с для любого с Е [L, U] = (CR П [L, Щ) U ([L, Щ \ CR). В случае с Е CR П [L, Щ, используя определения на рисунке 3 и в лемме 9 мы получаем (с)% = (c)R Е BR, а также vM((c)%) = vR((c)R) = с. В случае с Е [L,U] \ CR мы получим (с)% = (с)'ь Е 1'ьи vM((c)%) = v'((c)'b) = с согласно построению.

Наконец, в случае аксиомы (A6') мы должны показать (vM(a))% = а для любого а Е1% = BR U 1Ь. В случае аЕВп по лемме 9 имеем vM (а) = vR(a) Е CR П [L, Щи (vM(a))™ = (vR(a))R = а. В случае, если а Е 1 ь, получаем vM (а) = v'(a) Е [L,U] \CR и (vM(a))% = (v'(a))'b = а согласно построению. □

Лемма 13. Аксиомы (A1), (A2) и (A3) теории BLIA сохраняются в модели М. Доказательство. Сначала мы проверим аксиому (A1). Рассмотрим случаи в определении операции +¿f.

Рассмотрим случай (а,Ь) Е {(tR,uR) \ t+bu Е F*}. В доказательстве леммы 11 (последний абзац) показано, что из t+bu Е F* следует t+bu Е F. По правилу инстанцирования аксиомы (A1) заключаем, что L < v(t) + v(u) < U ^ v(t+bu) = v(t) + ^(и)является основным подтермом F* и, поскольку R является моделью F*, мы имеем L < vR(tR) + vR(uR) < U ^ vR(tR+RuR) = vR(tR) + vR(uR).

Из факта (a,b) Е {(tR,uR) \ t+bu Е F*} следует a = tR и b = uR, поэтому L < vR(a) + vR(a) < U ^ vR(a+Rb) = vR(a) + vR(b).

Теперь, так как t+bu Е F, мы имеем t Е F, и Е F, и в силу леммы 1, v(t+bu) Е F*, v(t) Е F* и v(u) Е F*. Это означает a+^b = tR+luR = (t+bu)R Е BR, а = tR Е BR и b = tR Е BR по определению BR. Таким образом, согласно определениям на рисунке 3, L < vM (а) + vM (Ь) < U ^ vM(a+bb) = vM (а) + vM (Ь).

Теперь рассмотрим случай L < vM (а) + vM (b) < U. Из леммы 12 аксиома (A5) сохраняется в М и, следовательно, L < с < U ^ vM ((с)ь) = с для любого с и, в частности, L < Vм (а) + Vм (Ъ) <U^ vM ((vM (а) + vM(b))%) = vM (а) + Vм (Ъ).

По определению +M на рисунке 3 получаем L < vM (а) + vM (b) <U ^ vM (a+Mb) = vM(a) + vM(b).

Наконец, в случае Vм (а) + Vм (Ь) [L,U], предположение L < vM (а) + vM (b) < U не выполняется и, следовательно, аксиома (A1) очевидно сохраняется.

Доказательство для аксиомы (A2) аналогично и в случае (A3) непосредственно следует из определения <M на рис. 3^

Лемма 14. Модель М может быть расширена неинтерпретируемыми константами, которые содержатся в F такие, что для любого подтерма t Е F его интерпретации в модели М и в реализации R совпадают, то есть tM = tR.

Доказательство. Без ограничения общности рассмотрим случай, когда t не содержит вхождения неинтерпретированных функций с арностью больше нуля. Расширение этого доказательства на термы с неинтерпретируемыми функциями (а не константами) очевидно. Доказательство проводится индукцией по структуре терма t. Мы начнем с рассмотрения подтермов нулевой арности, то есть констант. Интерпретируемые константы (числа) имеют одинаковые фиксированные интерпретации как в R, так и в М. Выберем интерпретацию неинтерпретируемых констант, встречающиеся в F, они будут одинаковыми в обоих моделях М и R. Это согласуется, поскольку если терм t содержится в F, то по лемме 1, v(t) встречается в F* и поэтому tR Е BR Q ^. Аналогично, если t является аргументом функции v, который содержится в F и tM = tR, то tR Е BR и по определению на рисунке 3 vM(tM) = vR(tR), что по определению означивания дает (v(t))M = (v(t))R. Если (n)b входит в F, то по лемме 3 он также содержится в F* и, таким образом, nR Е CR. Следовательно, если nM = nR тогда ((n)b)M = (nM)M = (nR)M = (nR)R = ((n)b)R.

Если n x b t встречается в F, то по построению инстанцированная формула также содержится в F*.

Если, кроме того, tM = tR, то (n xb t)M = nM xM tM = nR xM tR = nR xR tR = (n xb t)R. То же относится и к +b.

Наконец, если t < ub содержится в F, то согласно правилам инстанцирования, аксиома (A3) была инстанцирована с t и u, следовательно, tR <R uR о vR(tR) < vR(uR). По предположению индукции имеем vM(tM) = vR(tR) и vM(uM) = vR(uR). Кроме того, по определению на рис. 3 у нас есть tM <M uM о vM(tM) < vM(uM). Таким образом, tM <M uM о vR(tR) < vR(uR) о tR <R uR.□

Теперь полнота процедуры инстанцирования напрямую следует из вышеуказанных лемм.

Теорема 2. Каждая формула F без свободных переменных выполнима в теории BLIA тогда и только тогда, когда её трансляция F*выполнима в QF UFLIA.

Доказательство. Если F выполнима в BLIA, то F* выполнима в QF_UFLIA из-за корректности процедуры инстанцирования.

Предположим, что F* выполнима в QF_UFLIA с моделью R. Затем по леммам 11, 12 и 13 восстановленная модель М является моделью теории BLIA. Кроме того, по лемме 14, вся формула F как терм имеет одинаковое значение в обоих R и М, расширенная соответствующими неинтерпретированными константами. Так как F является основным подтермом F* и, следовательно, является истиной в R, она также выполнима в М. □

4. Формализация.

Доказательство полноты представлено в предыдущем разделе и было оформлено в Isabelle/HOL. В этой формализации мы использовали безтиповый синтаксис над формулами (untyped deep embedding), чтобы применять простую индукцию с двумя возможными

конструкциями (функция и переменная) в структуре формул и составить обоснование интерпретаций этих формул в различных моделях объектной логики.

Существуют два наиболее заметных различия, отличающих полностью формализованное доказательство в Isabelle/HOL от доказательств в статье.

Во-первых, использование безтипового синтаксиса над формулами (untyped deep embedding) значительно упрощает структурное представление формул, позволяет представлять бессмысленные искаженные формулы и потенциально интерпретировать их в объектной логике. Например, такие формулы: ((a)b < n) + (b)b xb 2, где каждый символ функции применяется по крайней мере к одному неупорядоченному типу, который может быть представлен в нашем синтаксисе. Чтобы исключить такие формулы, мы сформулировали явное ограничение однозначной определенности (в форме специального предиката) и использовали его в качестве предварительных условий в различных леммах, а также в нашем определении выполнимости.

В нашем подходе интерпретация может только моделировать однозначно определенную формулу.

Вторая проблема не так очевидна. Традиционное определение интерпретации для формулы с кванторами (такой как аксиома) включает в себя дополнительный параметр, обычно называемый означиванием который отображает неявные переменные в соответствующие им интерпретации. Таким образом, с помощью этого определения пришлось переопределять не только формулы и интерпретации (модели), но и соответствующие означивания. В этом стиле рассуждений установление казалось бы, тривиального правила подстановки, т.е. если Va.FM(a) мы имеем FM(xM)= (F(x))M если а не свободная переменная в х, требует определения промежуточного означивания = и ° [a ^ xM] и оценивая формулы F в модели М с обоими означиваниями ¡и и ¡'. Вместо этого мы используем определение интерпретации, основанное на подстановке, и формализуем следующим образом:

Va ED.FM(a) о (Vt.vars(t) = 0 ^ ([t/a]F(a))M), где любая модель М должна удовлетворять следующему ограничению:

Va Е D.3t.tM = a. Здесь D - множество, выбранное для интерпретации термов (в частности, переменных) соответствующего типа, [t/a] обозначает подстановку переменной a термом t. Поскольку терм t с подстановкой не имеет свободных переменных, то нет необходимости в дополнительных методах по предотвращению замыкания переменных. Более того, в нашей формализации нам никогда не требовались вложенных кванторов, поэтому мы использовали абстрактные схематические переменные вместо кванторов и, таким образом, значительно упростили представление формулы. В самом деле, мы еще больше упростили наш подход на основе замещения путем ограничения формы целочисленных ограниченных целых термов в подстановке.

Если Va Е 1Lb. Зс Е L. (c)b = a, мы можем перейти от кванторов над ограниченными целыми термами t к кванторам над целыми:

(V t.vars(t) = 0 ^ ([t/a]F(a))M) oVc EL. (F(c)b)M, таким образом, полностью изменяя использование кванторов в объектной логике (в BLIA/QF_UFLIA) в металогику с использованием кванторов в HOL. Это наиболее общая форма объектной логики с кванторами, которую мы используем в нашем формальном доказательстве [9] (соответствующий документ Isabelle называется TSMT_Bound_Complete).

5. Сравнение с другими тактиками

Мы реализовали решающую процедуру на основе процедуры инстанцирования, описанную в этой статье, внутри системы Isabelle в тактике расширения SMT с помощью инстанцирования кванторов триггерами.

Данная тактика называется TSMT [9] и не описана в этой работе. Здесь мы лишь кратко отметим, что это позволяет выполнить предварительное подготовку текущей цели (будучи формулой с кванторами) со всеми инстанцированиями триггеров в соответствующих подформулах в цели.

Кванторы представлены в виде лемм и триггеры подформул могут быть определены с использованием специальных атрибутов леммы.

Тактика также поддерживает корректное восстановление доказательства для формулы с инстанцированиями (используя существующие возможности тактики Z3 для доказательства в Isabelle), а также извлечение модели (контрпримера) текущей цели и показывая полученную модель для пользователя.

Оценка конкретной тактики для системы автоматизированных доказательств - это непростая задача, так как имеется не так много легкодоступных контрольных показателей для таких инструментов и подавляющее большинство доступных доказательств уже специально адаптированы для использования существующих тактик со всеми их особенностями и ограничениями. Ближайшая доступная тактика в Isabelle/HOL, которая предоставляет аналогичные возможности, это тактика uint_arith из теории HOL-Word. Она также пытается инстанцировать текущую цель дополнительными предположениями об арифметике на ограниченных целых числах и полагается на работу по упрощению цели по стандартной арифметической тактике (стандартная процедура упрощения, presburger и linarith). Тем не менее, в отличие от нашего подхода, трансляция, реализованная в тактике uint_arith, вообще говоря, не является полной. Тактика uint_arith не очень широко используется в большинстве практических приложений, поскольку ее возможности аналогичны возможностям тактики unat_arith (похожая тактика для натуральных, а не целых чисел), которая часто используется вместо uint_arith.

Поскольку арифметика натуральных чисел не реализуется напрямую в большинстве решателей SMT, мы разрабатывали нашу тактику на арифметике целых чисел. Таким образом, чтобы оценить нашу реализацию, мы взяли несколько наиболее трудоемких целей, решаемых с помощью тактики unat_arith и вручную преобразовали их в соответствующие цели, подходящие как для uint_arith, так и для нашей тактики (преобразование в основном чисто синтаксическое, кроме добавления некоторых недостающих ограничений вида n > 0). Цели были взяты из реальных примеров с участием верифицированных функций на языке Си, таких как memcpy и quicksort, формализованные в рамках AutoCorres [10]. Пример включает в себя более 130 вызовов uint_arith, из которых мы выбрали 11 наиболее трудоемких. В добавок к существующим примерам мы добавили несколько очень простых лемм в целочисленной арифметике с ограничениями, где тактика uint_arith не может доказать цель. Результаты оценки показаны в табл. 1. Время решения задач показывается в секундах, если оно превышает 0,1, в противном случае время помечено как < 0.1. Время для целей, не решаемых с помощью тактики, обозначается как «-» вместе с требуемым временем на попытку до возврата к результирующему состоянию доказательства (инстанцированная цель в случае uint_arith). В Isabelle/HOL процесс доказательства основан на интерактивных формальных документах, время решения важно, так как оно напрямую влияет на общее время, требуемое для обновления модели документа на каждое взаимодействие с пользователем (особенно для неструктурированных доказательств).

Табл. 1. Оценка тактики TSMT BLIA и uintarith на формулах и реальных подзадачах из примеров AUTOCORRES.

Tablle 1. Evaluation of TSMT BLIA and uintarith tactics on sample formulas and real subgoals from AUTOCORRES examples.

Цель Время работы, сек.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

uint arith

memcpy wp' 1 0.366 0.329

memcpy wp' 2 < 0.1 0.450

memcpy word 1 < 0.1 0.320

memcpy word 2 < 0.1 0.350

memcpy wp' 3 0.201 0.320

memcpy wp' 4 0.508 0.315

memcpy wp' 5 0.250 0.509

partition correct 1 0.468 0.581

partition correct 2 0.401 0.441

qsort unat sub subl < 0.1 0.526

quicksort correct 1 0.251 0.493

simple example - (< 0.1) 0.196

simple 2a mn 1 pl b - (1.202) 0.860

simple div2 miil2 - (0.102) 0.756

simple 2 min mn 1 pl min - (0.897) < 0.1

simple div3 mul3 - (0.145) 0.779

Результаты демонстрируют, что наша реализация не значительно медленнее, чем существующая тактика, несмотря на использование исчерпывающей процедуры инстанцирования, вызов внешних решателей (Z3), а также парсинг и восстановление полученных доказательств. Более того, это обеспечивает несколько заметных преимуществ.

• Тактика обладает свойством полноты, поэтому он гарантированно решит любую цель в пределах определенного класса, в то время как тактика uint_arith не полна и ее способность решить конкретную цель не так легко предсказать;

• Благодаря своей полноте, наша тактика способна не только верифицировать правильную цель, но, что еще важнее, осмысленно опровергать неверные цели в определенном классе (где тактика полна). Эта способность важна в контексте итеративной разработки доказательства, где это широко известно, что промежуточные попытки доказать неправильные утверждения более распространены, чем неудачи из-за неполноты тактики/метода доказательства.

• Наша тактика имеет примерно одинаковую производительность в случае успешной попытки доказательства и в случае поиска контрпримера, потому что оно ведет себя одинаково в обоих случаях, в то время как uint_arith последовательно пытается решить инстанцированную цель со всеми зарегистрированными арифметическими тактиками и может потратить дополнительное время на неудачные попытки.

• Наш подход легко расширяемый, так как семантика новых функциональных символов может быть легко дополнена соответствующими леммами с их триггерами. На самом деле, легкость расширяемости нашей тактики сопоставима со стандартным упрощением в Isabelle. В примерах мы расширили нашу тактику поддержкой целочисленного деления, вычитания, максимума и минимума, чтобы соответствовать возможностям стандартных арифметических тактик в Isabelle.

• Расширение нашей тактики не требует программирования на языке ML, тактика реализована поверх общей тактики TSMT (основная часть нашего инструмента инстанцирования), просто как группа лемм с соответствующими инстанцированием триггеров, в то время как uint_arith реализуется непосредственно в Isabelle/ML.

Основное ограничение нашей текущей реализации в сравнении с существующей тактикой uint_arith - невозможность правильно обрабатывать кванторы, вложенные в саму цель и не дополнены соответствующими триггерами. Наша тактика в настоящее время игнорирует любые кванторы, присутствующие в цели. Примеры, упомянутые на рисунке 4, доступны в нашем примере теории [9] (соответствующий документ Isabelle называется TSMT_Bounded_Examples).

6. Дальнейшие исследования.

Основными направлениями будущей работы включают разработку некоторых предсказуемых (хотя и неполных) подходов к обработке кванторов, встречающиеся в цели без соответствующих триггеров (стратегии для обработки кванторов внутри существующих решателей очень эффективны, но редко предсказуемы). Еще одно важное направление это формализация и оценка решения, основанного на реализации процедуры для других разрешимых теорий, таких как эффективно разрешимый фрагмент теории бит-векторов, модульная линейная целочисленная арифметика, разрешимый фрагмент теории, формализующей различные операции над списками, теория адресной арифметики с ограниченными адресами (но с Си-подобным разделением на непересекающиеся блоки памяти), теория интерпретируемых множеств (для которых есть несколько доказательств полноты, но без формализации в системе интерактивных доказательств) и прочие практические актуальные теории и их фрагменты.

7. Заключение.

В работе представлена теория ограниченных целых, позволяющая составить решающую процедуру в Isabelle/HOL на основе решателей SMT. Эта решающая процедура позволяет проверить некоторые конструкции языка программирования Си. Стоит заметить, что разработка решающих процедур по множеству различных теорий имеет важное значение при верификации программного обеспечения. Мы охарактеризовали сложность проблемы выполнимости и обеспечили эффективное сокращение сложности решения в QF_UFLIA. Наш результат показывает, что более эффективно разрабатывать специализированные алгоритмы, чем применять общий алгоритм для арифметики Пресбургера. Кроме того, в нашем случае число инстанцирований является линейным относительно длины входной формулы.

Список литературы / References

[1]. T. Nipkow, M. Wenzel, and L.C. Paulson (editors). Isabelle/HOL: A Proof Assistant for Higher-Order Logic. Lecture Notes in Computer Science, vol. 2283, 2002, 218 p.

[2]. J. Dawson. Isabelle theories for machine words. Electronic Notes in Theoretical Computer Science, vol. 250, no. 1, 2009, pp. 55-70.

[3]. D. Babic and M. Musuvathi. Modular arithmetic decision procedure. Technical Report MSR-TR-2005-114, Microsoft Research, 2005.

[4]. N. Bj0rner, A. Blass, Y Gurevich, and M. Musuvathi. Modular difference logic is hard. Technical Report MSR-TR-2008-140, Microsoft Research, 2008.

[5]. B.-Y. Wang. On the satisfiability of modular arithmetic formulae. Lecture Notes in Computer Science, vol. 4218, 2006, pp. 186-199.

[6]. S. Böhme. Proof reconstruction for Z3 in Isabelle/HOL. In Proc. of the 7th International Workshop on Satisfiability Modulo Theories (SMT '09), 2009.

[7]. S. Böhme and T. Weber. Fast LCF-style proof reconstruction for Z3. Lecture Notes in Computer Science, vol. 6172, 2010, pp. 179-194.

[8]. C. Barrett, P. Fontaine, and C. Tinelli. The SMT-LIB Standard: Version 2.6. Department of Computer Science, The University of Iowa, Technical Report, 2017.

[9]. R. Sadykov and M. Mandrykin. Completeness of instantiation procedure for bounded linear integer arithmetic. Formalization in Isabelle/HOL. Available at: https://forge.ispras.ru/projects/tsmt/repository/, accessed April 2020.

[10]. D. Greenaway, J. Andronick, and G. Klein. Bridging the gap: Automatic verified abstraction of C. Lecture Notes in Computer Science, vol. 7406, 2012, pp. 99-115.

[11]. Kovasznai G. How Hard is Bit-Precise Reasoning? In Proc. of the 10th International Conference on Applied Informatics, 2017. pp. 179-190.

Информация об авторах / Information about authors

Рафаэль Фаритович САДЫКОВ - стажер-исследователь в ИСП РАН, аспирант кафедры МаТИС механико-математического факультета МГУ им. М.В. Ломоносова. Сфера научных интересов: верификация программ, теория распределенных вычислений, теория графов, теория автоматов, математическая логика.

Rafael Faritovich SADYKOV - intern researcher of ISP RAS, PhD student of Faculty of Mechanics and Mathematics, Moscow State University. Research interests: program verification, distributed computing theory, graph theory, automata theory, mathematical logic.

Михаил Усамович МАНДРЫКИН - младший научный сотрудник ИСП РАН, кандидат физико-математических наук по специальности «математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей». Сфера научных интересов: формальные методы верификации программ, математическая логика, функциональное программирование, системы типов в языках программирования. Mikhail Usamovich MANDRYKIN - researcher at ISP RAS, PhD. Research interests: formal methods, program verification, mathematical logic, functional programming, type systems.

i Надоели баннеры? Вы всегда можете отключить рекламу.