Use this URL to cite or link to this record in EThOS:
Title: Type systems for modular programs and specifications
Author: Aspinall, David R.
Awarding Body: University of Edinburgh
Current Institution: University of Edinburgh
Date of Award: 1997
Availability of Full Text:
Access through EThOS:
Full text unavailable from EThOS. Please try the link below.
Access through Institution:
This thesis studies the foundations of formal program development. It brings together aspects of algebraic specification and type theory and applies them to powerful new mechanisms for modular programming and specification. The language ASL+ is the vehicle for the study. It is a typed A-calculus built on top of a core-level programming language and the algebraic specification language ASL. The A-calculus expresses the structure of programs and specifications in the same language, allowing higher-order parameterisation of each, and allowing specification of parameterised programs. ASL+ has a model-theoretic semantics based on an arbitrary institution, and two formal systems: a type-checking system to check well-formedness, and a proof system to prove that a program satisfies a specification or that one specification refines another. The type-checking system builds on simply typed A-calculus. The proof system is richer: a type theory with subtyping, dependent products, power types, and singleton types. This is a novel combination; establishing even basic properties poses a challenge. I demonstrate the use of ASL+ with an example program development, introducing some rules and issues such as sharing. The formal study begins with two fundamental investigations into sub-languages of ASL+, new typed A-calculi in their own right. The first calculus A<{} features singleton types, the second calculus A Power features power types. Both calculi mix subtyping with type-dependency. I prove that each is strongly normalizing, and has expected admissible rules; for example, A<{} has subject reduction and minimal typing. The calculus A Power is given a restricted system for rough type-checking which is decidable. Rough types help organize a model definition. I examine two versions of ASL+ itself. The first is an abstract kernel language which treats the underlying core-level languages as sets of combinators. It is built on a calculus AASL+ which extends A<{} and A PowerS Practical examples must be translated into this version of ASL+, because it does not automatically express the sharing behaviour of parameterised programs. Instead of a translation, I give a second version of ASL+ in a specific institution FTC. The institution is based on FPC, a functional language with recursive types, together with an LCF-style extension to higher-order logic. This concrete version of ASL+ has a more powerful type-checking system than the abstract version, so programs and specifications can be written directly without translation.
Supervisor: Not available Sponsor: Not available
Qualification Name: Thesis (Ph.D.) Qualification Level: Doctoral
EThOS ID:  DOI: Not available