Show simple item record

Files in this item

Thumbnail

Item metadata

dc.contributor.advisorBrady, Edwin
dc.contributor.advisorHammond, Kevin
dc.contributor.authorSchwaab, Christopher
dc.coverage.spatial232 p.en_US
dc.date.accessioned2019-06-19T13:36:43Z
dc.date.available2019-06-19T13:36:43Z
dc.date.issued2019-06-26
dc.identifier.urihttps://hdl.handle.net/10023/17928
dc.description.abstractType systems have proved to be a powerful means of specifying and proving important program invariants. In dependently typed programming languages types can depend on values and hence express arbitrarily complicated propositions and their machine checkable proofs. The type-based approach to program specification allows for the programmer to not only transcribe their intentions, but arranges for their direct involvement in the proving process, thus aiding the machine in its attempt to satisfy difficult obligations. In this thesis we develop a series of patterns for programming in a correct-by-construction style making use of constraints and coercions to prove properties within a dependently typed host. This allows for the development of a verified, kernel which can be built upon using the host system features. In particular this should allow for the development of “tactics” or semiautomated solvers invoked when coercing types all within a single language. The efficacy of this approach is given by the development of a system of expressions indexed by their, exposing a case analysis feature serving to generate value constraints. These constraints are directly reflected into the host allowing for their involvement in the type-checking process. A motivating use case of this design shows how a term’s semantic index information admits an exact, formalized cost analysis amenable to reasoning within the host. Finally we show how such a system is used to identify unreachable dead-code, trivially admitting the design and verification of an SSA style compiler with this optimization. We think such a design of explicitly proving the local correctness of type-transformations in the presence of accumulated constraints can form the basis of a flexible language in concert with a variety of trusted solver.en_US
dc.language.isoenen_US
dc.publisherUniversity of St Andrews
dc.subject.lccQA76.7S35
dc.titleVerified programming with explicit coercionsen_US
dc.typeThesisen_US
dc.contributor.sponsorUniversity of St Andrews. School of Computer Scienceen_US
dc.contributor.sponsorUniversity of St Andrews. 600th Anniversary Scholarshipen_US
dc.type.qualificationlevelDoctoralen_US
dc.type.qualificationnamePhD Doctor of Philosophyen_US
dc.publisher.institutionThe University of St Andrewsen_US
dc.identifier.doihttps://doi.org/10.17630/10023-17928


This item appears in the following Collection(s)

Show simple item record