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...
Main Author: | |
---|---|
Other Authors: | |
Published: |
Imperial College London
2017
|
Subjects: | |
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 |