Symbolic execution of verification languages and floating-point code

The focus of this thesis is a program analysis technique named symbolic execution. We present three main contributions to this field. First, an investigation into comparing several state-of-the-art program analysis tools at the level of an intermediate verification language over a large set of bench...

Full description

Bibliographic Details
Main Author: Liew, Daniel Simon
Other Authors: Donaldson, Alastair ; Cadar, Cristian
Published: Imperial College London 2017
Subjects:
004
Online Access:https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.745301
id ndltd-bl.uk-oai-ethos.bl.uk-745301
record_format oai_dc
spelling ndltd-bl.uk-oai-ethos.bl.uk-7453012019-03-05T15:31:09ZSymbolic execution of verification languages and floating-point codeLiew, Daniel SimonDonaldson, Alastair ; Cadar, Cristian2017The focus of this thesis is a program analysis technique named symbolic execution. We present three main contributions to this field. First, an investigation into comparing several state-of-the-art program analysis tools at the level of an intermediate verification language over a large set of benchmarks, and improvements to the state-of-the-art of symbolic execution for this language. This is explored via a new tool, Symbooglix, that operates on the Boogie intermediate verification language. Second, an investigation into performing symbolic execution of floating-point programs via a standardised theory of floating-point arithmetic that is supported by several existing constraint solvers. This is investigated via two independent extensions of the KLEE symbolic execution engine to support reasoning about floating-point operations (with one tool developed by the thesis author). Third, an investigation into the use of coverage-guided fuzzing as a means for solving constraints over finite data types, inspired by the difficulties associated with solving floating-point constraints. The associated prototype tool, JFS, which builds on the LibFuzzer project, can at present be applied to a wide range of SMT queries over bit-vector and floating-point variables, and shows promise on floating-point constraints.004Imperial College Londonhttps://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.745301http://hdl.handle.net/10044/1/59705Electronic Thesis or Dissertation
collection NDLTD
sources NDLTD
topic 004
spellingShingle 004
Liew, Daniel Simon
Symbolic execution of verification languages and floating-point code
description The focus of this thesis is a program analysis technique named symbolic execution. We present three main contributions to this field. First, an investigation into comparing several state-of-the-art program analysis tools at the level of an intermediate verification language over a large set of benchmarks, and improvements to the state-of-the-art of symbolic execution for this language. This is explored via a new tool, Symbooglix, that operates on the Boogie intermediate verification language. Second, an investigation into performing symbolic execution of floating-point programs via a standardised theory of floating-point arithmetic that is supported by several existing constraint solvers. This is investigated via two independent extensions of the KLEE symbolic execution engine to support reasoning about floating-point operations (with one tool developed by the thesis author). Third, an investigation into the use of coverage-guided fuzzing as a means for solving constraints over finite data types, inspired by the difficulties associated with solving floating-point constraints. The associated prototype tool, JFS, which builds on the LibFuzzer project, can at present be applied to a wide range of SMT queries over bit-vector and floating-point variables, and shows promise on floating-point constraints.
author2 Donaldson, Alastair ; Cadar, Cristian
author_facet Donaldson, Alastair ; Cadar, Cristian
Liew, Daniel Simon
author Liew, Daniel Simon
author_sort Liew, Daniel Simon
title Symbolic execution of verification languages and floating-point code
title_short Symbolic execution of verification languages and floating-point code
title_full Symbolic execution of verification languages and floating-point code
title_fullStr Symbolic execution of verification languages and floating-point code
title_full_unstemmed Symbolic execution of verification languages and floating-point code
title_sort symbolic execution of verification languages and floating-point code
publisher Imperial College London
publishDate 2017
url https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.745301
work_keys_str_mv AT liewdanielsimon symbolicexecutionofverificationlanguagesandfloatingpointcode
_version_ 1718993651039731712