id ndltd-OhioLink-oai-etd.ohiolink.edu-osu1293463269
record_format oai_dc
spelling ndltd-OhioLink-oai-etd.ohiolink.edu-osu12934632692021-08-03T06:01:15Z Working Towards the Verified Software Process Adcock, Bruce M. Computer Science Software engineering software verification automated theorem prover lazy copying Resolve debugging <p>Numerous pieces of the software verification puzzle need to fit together in order to achieve that vision. First, there must be a programming language that gives some hope of specifying and implementing verifiable code ("assertive code"). Second, there needs to be a correct procedure for generating verification conditions (VCs) from this assertive code. Third, there must be one or more automated theorem provers to process the VCs and determine their validity or invalidity. Finally, it is essential that there is an interface for programmers to write their code and verify or debug it without forcing them to understand how particular automated theorem provers work. This dissertation covers the latter two of these topics using the Resolve language and verification framework.</p><p>A common failing of most automated verification techniques is the inability to be truly automatic in all circumstances. Experience with proof assistants shows that they need to be "nudged" in the correct direction by an intervening human, in all but the simplest cases. Otherwise, the option is to use tools not geared to handle the rich mathematics used in the Resolve programming language. By using specialized decision procedures that take into account the known structure of the generated VCs, we strive to accomplish one of two possibilities for each VC: first, we hope to prove it outright; otherwise, we hope to simplify the VC to such an extent that another prover is able to handle it. We detail work on SplitDecision, a tool that simplifies VCs for Resolve. We further explain work that has helped to ensure SplitDecision is among the fastest and least memory intensive automated provers available, by introducing "lazy copying" to Resolve/C++ (in which SplitDecision is written), with specific work to maintain the value semantics integral to Resolve's design.</p><p>Sometimes (perhaps this is even the modal case) at least one VC is not proved because it is not valid. It is clear that the ways we present errors and debug code must be rethought in a verified software paradigm. This area of research has received little attention to date, so we lay out criteria for how to approach debugging, along with potential methods of doing so.</p> 2010 English text The Ohio State University / OhioLINK http://rave.ohiolink.edu/etdc/view?acc_num=osu1293463269 http://rave.ohiolink.edu/etdc/view?acc_num=osu1293463269 unrestricted This thesis or dissertation is protected by copyright: all rights reserved. It may not be copied or redistributed beyond the terms of applicable copyright laws.
collection NDLTD
language English
sources NDLTD
topic Computer Science
Software engineering
software verification
automated theorem prover
lazy copying
Resolve
debugging
spellingShingle Computer Science
Software engineering
software verification
automated theorem prover
lazy copying
Resolve
debugging
Adcock, Bruce M.
Working Towards the Verified Software Process
author Adcock, Bruce M.
author_facet Adcock, Bruce M.
author_sort Adcock, Bruce M.
title Working Towards the Verified Software Process
title_short Working Towards the Verified Software Process
title_full Working Towards the Verified Software Process
title_fullStr Working Towards the Verified Software Process
title_full_unstemmed Working Towards the Verified Software Process
title_sort working towards the verified software process
publisher The Ohio State University / OhioLINK
publishDate 2010
url http://rave.ohiolink.edu/etdc/view?acc_num=osu1293463269
work_keys_str_mv AT adcockbrucem workingtowardstheverifiedsoftwareprocess
_version_ 1719429526602121216