10 research outputs found
The AutoProof Verifier: Usability by Non-Experts and on Standard Code
Formal verification tools are often developed by experts for experts; as a
result, their usability by programmers with little formal methods experience
may be severely limited. In this paper, we discuss this general phenomenon with
reference to AutoProof: a tool that can verify the full functional correctness
of object-oriented software. In particular, we present our experiences of using
AutoProof in two contrasting contexts representative of non-expert usage.
First, we discuss its usability by students in a graduate course on software
verification, who were tasked with verifying implementations of various sorting
algorithms. Second, we evaluate its usability in verifying code developed for
programming assignments of an undergraduate course. The first scenario
represents usability by serious non-experts; the second represents usability on
"standard code", developed without full functional verification in mind. We
report our experiences and lessons learnt, from which we derive some general
suggestions for furthering the development of verification tools with respect
to improving their usability.Comment: In Proceedings F-IDE 2015, arXiv:1508.0338
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
Scaling Up Automated Verification: A Case Study and a Formalization IDE for Building High Integrity Software
Component-based software verification is a difficult challenge because developers must specify components formally and annotate implementations with suitable assertions that are amenable to automation. This research investigates the intrinsic complexity in this challenge using a component-based case study. Simultaneously, this work also seeks to minimize the extrinsic complexities of this challenge through the development and usage of a formalization integrated development environment (F-IDE) built for specifying, developing, and using verified reusable software components.
The first contribution is an F-IDE built to support formal specification and automated verification of object-based software for the integrated specification and programming language RESOLVE. The F-IDE is novel, as it integrates a verifying compiler with a user-friendly interface that provides a number of amenities including responsive editing for model-based mathematical contracts and code, assistance for design by contract, verification, responsive error handling, and generation of property-preserving Java code that can be run within the F-IDE.
The second contribution is a case study built using the F-IDE that involves an interplay of multiple artifacts encompassing mathematical units, component interfaces, and realizations. The object-based interfaces involved are specified in terms of new mathematical models and non-trivial theories designed to encapsulate data structures and algorithms. The components are designed to be amenable to modular verification and analysis
Intuition in formal proof : a novel framework for combining mathematical tools
This doctoral thesis addresses one major difficulty in formal proof: removing obstructions
to intuition which hamper the proof endeavour. We investigate this in the context
of formally verifying geometric algorithms using the theorem prover Isabelle, by first
proving the Grahamâs Scan algorithm for finding convex hulls, then using the challenges
we encountered as motivations for the design of a general, modular framework
for combining mathematical tools.
We introduce our integration framework â the Proverâs Palette, describing in detail
the guiding principles from software engineering and the key differentiator of our
approach â emphasising the role of the user. Two integrations are described, using
the framework to extend Eclipse Proof General so that the computer algebra systems
QEPCAD and Maple are directly available in an Isabelle proof context, capable of running
either fully automated or with user customisation. The versatility of the approach
is illustrated by showing a variety of ways that these tools can be used to streamline the
theorem proving process, enriching the userâs intuition rather than disrupting it. The
usefulness of our approach is then demonstrated through the formal verification of an
algorithm for computing Delaunay triangulations in the Proverâs Palette
Teaching Deductive Verification in Why3 to Undergraduate Students
International audienc
Crossing the boundaries: Nurses in the medical domain ; An examination of safety and outcomes in secondary care.
Background and Aims Nurses' roles, responsibilities and practice have changed and the boundaries between nursing and medicine have blurred. Few studies compare clinical outcomes of patients managed by Advanced Nurse Practitioners (ANPs) and junior doctors in acute secondary care. Aims of the study were to identify any observable differences between ANPs undertaking traditional junior doctor roles and junior doctors in relation to senior doctor congruence with diagnosis and clinical management planning, and clinical assessment practices. Setting The study took place in an acute hospital in the UK from April 2009 to August 2010. Design and methods This was a retrospective review of clinical records of patients presenting to the emergency medicine division. Data were collected from 311 randomly selected case notes of patients presenting to 10 ANPs and 10 junior doctors. Data were analysed using bivariate and multivariate techniques in SPSS version 19. Analyses were repeated including only patients presenting to Acute Medical Assessment Unit (AMA). Findings Statistically significant findings included: patients presenting to junior doctors were older, had more co-existing problems and were prescribed more medicines before presentation. Patients presenting to ANPs were more likely to have chest pain. ANPs were less likely to prescribe medicines. Clinical management plans were less likely to be agreed for patients with more coexisting problems. There were few inter-professional differences in senior congruence with clinical management planning and diagnosis and clinical assessment practices. These findings are reassuring as nurses' work moves into what was formerly the medical domain