3 research outputs found
Formally Verified Bug-free Implementations of (Logical) Algorithms
Notwithstanding the advancements of formal methods, which already permit their adoption
in a industrial context (consider, for instance, the notorious examples of Airbus,
Amazon Web-Services, Facebook, or Intel), there is still no widespread endorsement.
Namely, in the Portuguese case, it is seldom the case companies use them consistently,
systematically, or both. One possible reason is the still low emphasis placed by academic
institutions on formal methods (broadly consider as developments methodologies, verification,
and tests), making their use a challenge for the current practitioners.
Formal methods build on logics, “the calculus of Computer Science”. Computational
Logic is thus an essential field of Computer Science. Courses on this subject are usually
either too informal (only providing pseudo-code specifications) or too formal (only presenting
rigorous mathematical definitions) when describing algorithms. In either case,
there is an emphasis on paper-and-pencil definitions and proofs rather than on computational
approaches. It is scarcely the case where these courses provide executable code,
even if the pedagogical advantages of using tools is well know.
In this dissertation, we present an approach to develop formally verified implementations
of classical Computational Logic algorithms. We choose the Why3 platform as it
allows one to implement functions with very similar characteristics to the mathematical
definitions, as well as it concedes a high degree of automation in the verification process.
As proofs of concept, we implement and show correct the conversion algorithms from
propositional formulae to conjunctive normal form and from this form to Horn clauses