Year
Publisher
Journal
1
Institution
Institution Country
Publication Type
Field Of Study
Topics
Open Access
Language
Filter 1
Year
Publisher
Journal
1
Institution
Institution Country
Publication Type
Field Of Study
Topics
Open Access
Language
Filter 1
Export
Sort by: Relevance
Why We Can't have SML Style datatype Declarations in HOL

The type descriptions that define_type is capable of handling are noticeably more limited than those allowed by SML. In particular, define_type requires of a type description it is given that the type being defined should not occur within any compound type. While this restriction is more severe than is necessary for there to be a solution in HOL to the description, we show that some restriction on the nature of the compound types within which the type being defined may occur is necessary. Not all descriptions allowable in SML will have a solution in HOL. Moreover, owing to the nature of the basic principle of type definition in HOL, no purely syntactic non-ad hoc test of a recursive type description will be sufficient to allow us to extend define_type to compound types involving “safe” type constructors such as list while at the same time barring all descriptions for which no solution is possible. Any general extension to the define_type package that allows the types being defined to occur within compound types in the type description will need to take as additional arguments theorems about the type constructors used in the compound type that justify their being so used. Finally, we show that an extension to the case where all the type constructors used in compound types involving the types being defined are essentially recursive type constructors themselves; the type constructors must satisfy an “initiality” theorem of the form returned by define_type, which must be supplied as an argument to this extension of define_type.

Read full abstract
Towards a Formal Verification of a Floating Point Coprocessor and its Composition with a Central Processing Unit

In previous work (using HOL and other theorem provers) on the verification of microprocessors, the design is typically represented as a single level (e.g., an electronic block model) or as a linear hierarchy of interpreters (Joyce and Windley). There has been no attempt to verify designs that are in reality a central processor composed with various coprocessors, the typical organization of modern microprocessors. Our work is a step towards the verification (ultimately down to the microcode level) of a microprocessor that consists of a central processing unit that is the master of a floating point coprocessor; the design is drawn from the MC68881 floating point coprocessor slaved to the MC68000, but greatly simplified. The coprocessor in isolation will be verified with respect to a specification that captures the IEEE floating point standard. In our system, CPU and floating point instructions are allowed to execute concurrently, but the appearance to the programmer of the composed system is that of a sequentially executing instruction stream. The CPU and floating point coprocessor communicate through the four-phase handshaking protocol. The verification involves reasoning about a form of behavioral abstraction wherein concurrently executing instruction steams are mapped to a sequential stream.

Read full abstract