Files in this item
Verified programming with explicit coercions
Item metadata
dc.contributor.advisor | Brady, Edwin | |
dc.contributor.advisor | Hammond, Kevin | |
dc.contributor.author | Schwaab, Christopher | |
dc.coverage.spatial | 232 p. | en_US |
dc.date.accessioned | 2019-06-19T13:36:43Z | |
dc.date.available | 2019-06-19T13:36:43Z | |
dc.date.issued | 2019-06-26 | |
dc.identifier.uri | https://hdl.handle.net/10023/17928 | |
dc.description.abstract | Type 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.iso | en | en_US |
dc.publisher | University of St Andrews | |
dc.subject.lcc | QA76.7S35 | |
dc.title | Verified programming with explicit coercions | en_US |
dc.type | Thesis | en_US |
dc.contributor.sponsor | University of St Andrews. School of Computer Science | en_US |
dc.contributor.sponsor | University of St Andrews. 600th Anniversary Scholarship | en_US |
dc.type.qualificationlevel | Doctoral | en_US |
dc.type.qualificationname | PhD Doctor of Philosophy | en_US |
dc.publisher.institution | The University of St Andrews | en_US |
dc.identifier.doi | https://doi.org/10.17630/10023-17928 |
This item appears in the following Collection(s)
Items in the St Andrews Research Repository are protected by copyright, with all rights reserved, unless otherwise indicated.