Models for software verification: Proving program correctness - Boro Sitnikovski; Lidija Goracinova-Ilieva; Biljana Stojcevska (UTMS Journal of Economics, 2021)
The accuracy of computer systems represents the property that they are working as the users expect. Very often, these computer systems give inaccurate or wrong results. However, designing correct computer systems is a complex and expensive task. There are several ways to deal with this problem. In practice, the most common approach is to design and perform tests. However, these tests can only detect a specific set of problems. Another (more expensive) approach is to do a formal proof of correctness for a given code. This proof of correctness is, in fact, mathematical proof that the software works according to given specifications. Mathematical evidence covers all possible cases, and it is this evidence that confirms that code does exactly what it is intended to do. There are several platforms and mathematical models for software verification. Formal verification is based on mathematical proofs, and these platforms are divided into manual and automatic. Among the manual proof verification software, some of the most known ones are the programming languages Coq (based on type theory), Idris, etc. These are manual theorem provers, as the proof must be handwritten. Another family of theorem provers is the so-called automatic provers, which use algorithms to automatically deduce a given theorem. The programming language Dafny is one of their best representatives. This paper aims to show the state-of-the-art tools used today.
Keywords: M42; M49; 330; software verification; software verification models; software verification platforms