Abstract

A verifying compiler is computer system program that translates programs written by a human from a high-level language to equivalent executable programs and proves (verifies) mathematical statements specified by a human concerning the properties of the translated programs. The objective of the project F@BOOL@ is to develop a user friendly, compact, and portable verifying compiler of annotated computational programs that uses efficient and reliable automatic SAT solvers as the tools for automatic validation of correctness conditions (instead of semiautomatic proof techniques). In the period from 2006 to 2009, the SAT solver zChaff was used in the project F@BOOL@. The first experiments on the verification of simple Mini-NIL programs were performed using this solver, namely, the programs swapping variable values, checking whether three integer numbers are the sides of an equilateral or an isoscales triangle, and searching for one fake coin among 15 coins using scales. This paper considers the main ideas of the project F@BOOL@ and gives the details of the experiment on the verification of the program solving the coin puzzle.

Highlights

  • ВведениеВерифицирующий транслятор это системная программа, переводящая программы, написанные человеком, в эквивалентные низкоуровневые программы и, кроме

  • Ключевые слова: формальная верификация программ, операционная и трансформационная семантика программ, метод верификации Флойда Хоара, условия корректности, булевские решатели

  • Под верификацией в проекте F@BOOL@ мы понимаем генерацию

Read more

Summary

Введение

Верифицирующий транслятор это системная программа, переводящая программы, написанные человеком, в эквивалентные низкоуровневые программы и, кроме. Статическая семантика аннотированных mini-NIL-программ это следующий алгоритм построения условий корректности, представляющий собой вариант метода Флойда генерации условий корректности. [Для любого начального состояния σ программы π, если предусловие верно в σ, а все условия корректности тождественно истинны, то постусловие верно в любом заключительном состоянии, которое достижимо из σ.] Доказательство непротиворечивости статической семантики дано в препринте [3]. Под верификацией в проекте F@BOOL@ мы понимаем генерацию и проверку условий корректности для mini-NIL-программ. Именно этот алгоритм использован для ручной генерации условий корректности для программы, решающей головоломку о 15 монетах в части 4). 1. ξ := qbooln(θ), где qbooln это эквивалентный перевод формул первого порядка в квантифицированные булевские формулы за счёт представления каждого значения/переменной из/над кольцом вычетов по модулю 2n посредством nмерного вектора булевских значений/переменных; 2.

Уровни языка NIL
Верификация примера
Заключение

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.