F@BOOL@: experiment with a simple verifying compiler based on SAT-solvers
Abstract
by man from a high-level language into equivalent executable programs, and besides,
proves (veri¯es) mathematical statements speci¯ed by man about the properties of the
programs being translated. The purpose of the F@BOOL@ project is to develop a
transparent for users, compact and portable verifying compiler F@BOOL@ for anno-
tated computational programs, that uses e®ective and sound automatic SAT-solvers (i.e.
programs that check satis¯ability of prepositional Boolean formulas in the conjunctive
normal form) as means of automatic validation of correctness conditions (instead of
semi-automatic proof techniques). The key idea is Boolean representation of all data
instead of Boolean abstraction or ¯rst-order representation. (It makes di®erence be-
tween F@BOOL@ and SLAM.) Our project is aimed at the veri¯cation of functional
properties, and it assumes generation of ¯rst-order veri¯cation conditions (from invari-
ants), and the validation/refutation of each veri¯cation condition using SAT-solvers after
\conservative" translation of the veri¯cation conditions into Boolean form. During the
period from 2006 to 2009, a popular (at that time) SAT-solver zCha® was used in the
F@BOOL@ project. The ¯rst three veri¯cation experiments that have been exercised
with its help are listed below: swapping values of two variables, checking whether three
input values are lengths of sides of an equilateral or isosceles triangle, and detecting a
unique fake in a set of 15 coins. The paper presents general outlines of the project and
details of the last (the most extensive) experiment.
Keywords
MSC2020: 519.681+519.682.1
About the Author
N. V. ShilovRussian Federation
References
1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир. 1979.
2. Бодин Е.В., Калинина Н.А., Шилов Н.В. Проект верифицирующего компилятора F@BOOL@ Часть I: Общее описание проекта F@BOOL@, его место в компонентном подходе к программированию. Язык Mini-NIL - прототип языка виртуальной машины проекта. Препринт №131 Института систем информатики им. А.П. Ершова СО РАН, 2005.
3. Бодин Е.В., Калинина Н.А., Шилов Н.В. Проект верифицирующего компилятора F@BOOL@. Часть II: Логические аннотации в языке Mini-NIL, их статическая семантика и семантика времени исполнения. Препринт №138 Института систем информатики им. А.П. Ершова СО РАН, 2006.
4. Дейкстра В.Э. Дисциплина программирования. М.: Мир, 1978.
5. Грис Д. Наука программирования. М.: Мир, 1984.
6. Шилов Н.В., Бодин Е.В. Ии И. О программных логиках - просто // Системная информатика, выпуск 8. Новосибирск: Наука, 2002. С. 206-249.
7. Шилов Н.В., Ануреев И.С., Бодин Е.В. О генерации условий корректности для императивных программ // Программирование. 2008, №6. С. 1-20.
8. Шилов Н.В. Заметки о трёх парадигмах программирования // Компьютерные инструменты в образовании. 2010, №2. С. 24-37.
9. Anureev I.S., Bodin E.V., Gorodnyaya L.V., Marchuk A.G., Murzin F.A., Shilov N.V. On the Problem of Computer Language Classification // Joint NCC&IIS Bulletin, Series Computer Science. 2008. Vol. 28. P. 1-29.
10. Ball T., Cook B., Levin V., and Rajamani S. K. SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft // Springer-Verlag, Berlin, LNCS. 2004. Vol. 2999. P. 1-20.
11. Beyer D., Henzinger T.A., Jhala R., and Majumdar R. The Software Model Checker Blast: Applications to Software Engineering // Int. Journal on Software Tools for Technology Transfer. 2007. N 9. P. 505-525.
12. Floyd R.W. Assigning meanings to programs. Proc. of a Symposium in Applied Mathematics. Mathematical Aspects of Computer Science, Vol. 19. American Math. Society, Providence, R. I., 1967. P. 19-32.
13. Hoare C. A. R. The Verifying Compiler: A Grand Challenge for Computing Research. Perspectives of Systems Informatics (PSI'2003), Springer-Verlag, Berlin, LNCS. Vol. 2890. 2003. P. 1-12.
14. Shilov N.V., Bodin Eu.V, Shilova S.O. Fabulous arrays I: Operational and transformational semantics of static arrays in vericationproject F@BOOL@. Bull. Nov. Comp. Center, Comp. Science. Vol. 29. 2009. P. 121-140.
Review
For citations:
Shilov N.V. F@BOOL@: experiment with a simple verifying compiler based on SAT-solvers. Modeling and Analysis of Information Systems. 2010;17(4):111-124. (In Russ.)