A type-theoretic analysis of modular specifications
We study the problem of representing a modular specification language in a type-theory based theorem prover. Our goals are: to provide mechanical support for reasoning about specifications and about the specification language itself; to clarify the semantics of the specification language by formalising them fully; to augment the specification language with a programming language in a setting where they are both part of the same formal environment, allowing us to define a formal implementation relationship between the two. Previous work on similar issues has given rise to a dichotomy between ~shallow~ and ~deep~ embedding styles when representing one language within another. We show that the expressiveness of type theory, and the high degree of reflection that it permits, allow us to develop embedding techniques which lie between the ~shallow~ and ~deep~ extremes. We consider various possible embedding strategies and then choose one of them to explore more fully. As our object of study we choose a fragment of the Z specification language, which we encode in the type theory UTT, as implemented in the LEGO proof-checker. We use the encoding to study some of the operations on schemas provided by Z. One of our
Maharaj, Savitri
A type-theoretic analysis of modular specifications. We study the problem of representing a modular specification language in a type-theory based theorem prover. Our goals are: to provide mechanical support for reasoning about specifications and about the specification language itself; to clarify the semantics of the specification language by formalising them fully; to augment the specification language with a programming language in a setting where they are both part of the same formal environment, allowing us to define a formal implementation relationship between the two. Previous work on similar issues has given rise to a dichotomy between ~shallow~ and ~deep~ embedding styles when representing one language within another. We show that the expressiveness of type theory, and the high degree of reflection that it permits, allow us to develop embedding techniques which lie between the ~shallow~ and ~deep~ extremes. We consider various possible embedding strategies and then choose one of them to explore more fully. As our object of study we choose a fragment of the Z specification language, which we encode in the type theory UTT, as implemented in the LEGO proof-checker. We use the encoding to study some of the operations on schemas provided by Z. One of our
type theoretic analysis modular specification study problem represent modular specification language type theory base theorem goal_provide mechanical support reason specification specification language clarify semantics specification language formalise fully augment specification language program language set part formal environment allow define formal implementation relationship previous_work similar issue give_rise dichotomy shallow deep embed style represent language within another show type theory high_degree reflection permit allow develop embed technique lie shallow deep extreme consider various possible embed strategy choose explore fully object study choose fragment specification language encode type theory implement proof use encode study operation provide