This thesis is about scalable formal verification techniques for software. A verification technique is scalable if it is able to scale to reasoning about real (rather than synthetic or toy) programs. Scalable verification techniques are essential for practical program verifiers. In this work, we consider three key characteristics of scalability: precision, performance and automation. We explore trade-offs between these factors by developing verification techniques in the context of data-parallel programs, as exemplified by graphics processing unit (GPU) programs (called kernels). This thesis makes three original contributions to the field of program verification: 1. An empirical study of candidate-based invariant generation that explores...
The tremendous computing power GPUs are capable of makes of them the epicenter of an unprecedented a...
Software is large, complex, and error-prone. According to the US National Institute of Standards and...
A simple but general parallel programming language is considered. The semantics of programs is defin...
We present a technique for the formal verification of GPU kernels, addressing two classes of correct...
We present a technique for the formal verification of GPU kernels, addressing two classes of correct...
This thesis presents a set of verification techniques based on permission-based separation logic to ...
We present a technique for verifying race- and divergence-freedom of GPU kernels that are written in...
I present a tutorial overview demonstrating the key technique used by GPUVerify, a static verificati...
pre-printWe present an automated symbolic verifier for checking the functional correctness of GPGPU ...
Parallelism in processor architecture and design imposes a verification challenge as the exponential...
A simple but general parallel programming language is considered. The semantics of programs is defin...
The increasing availability of information technology in today’s life is a challenge for users as we...
Parallelism in processor architecture and design imposes a verification challenge as the exponential...
Parallelism in processor architecture and design imposes a verification challenge as the exponential...
In this paper we investigate how formal software verification systems can be improved by utilising p...
The tremendous computing power GPUs are capable of makes of them the epicenter of an unprecedented a...
Software is large, complex, and error-prone. According to the US National Institute of Standards and...
A simple but general parallel programming language is considered. The semantics of programs is defin...
We present a technique for the formal verification of GPU kernels, addressing two classes of correct...
We present a technique for the formal verification of GPU kernels, addressing two classes of correct...
This thesis presents a set of verification techniques based on permission-based separation logic to ...
We present a technique for verifying race- and divergence-freedom of GPU kernels that are written in...
I present a tutorial overview demonstrating the key technique used by GPUVerify, a static verificati...
pre-printWe present an automated symbolic verifier for checking the functional correctness of GPGPU ...
Parallelism in processor architecture and design imposes a verification challenge as the exponential...
A simple but general parallel programming language is considered. The semantics of programs is defin...
The increasing availability of information technology in today’s life is a challenge for users as we...
Parallelism in processor architecture and design imposes a verification challenge as the exponential...
Parallelism in processor architecture and design imposes a verification challenge as the exponential...
In this paper we investigate how formal software verification systems can be improved by utilising p...
The tremendous computing power GPUs are capable of makes of them the epicenter of an unprecedented a...
Software is large, complex, and error-prone. According to the US National Institute of Standards and...
A simple but general parallel programming language is considered. The semantics of programs is defin...