Treating Partiality in a Logic of Total Functions

The need to use partial functions arises frequently in formal descriptions of computer systems. However, most proof assistants are based on logics of total functions. One way to address this mismatch is to invent and mechanize a new logic. Another is to develop practical workarounds in existing settings. In this paper we take the latter course : we survey and compare methods used to support partiality in a mechanization of a higher order logic featuring only total functions. The techniques we discuss are generally applicable and are illustrated by relatively large examples.

[1]  Sten Agerholm,et al.  Formalising a model of the λ-calculus in HOL-ST , 1994 .

[2]  Jan Kuper,et al.  An Axiomatic Theory for Partial Functions , 1993, Inf. Comput..

[3]  Carl A. Gunter,et al.  Semantic Domains and Denotational Semantics , 1989 .

[4]  Greg Nelson,et al.  Combining satisability procedures by equality-sharing , 1984 .

[5]  Konrad Slind,et al.  Function Definition in Higher-Order Logic , 1996, TPHOLs.

[6]  Cliff B. Jones,et al.  On the Usability of Logics which Handle Partial Functions , 1991 .

[7]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[8]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[9]  Manfred Broy,et al.  The Design of Distributed Systems - An Introduction to FOCUS-revised version , 1992 .

[10]  Lawrence C. Paulson,et al.  Logic And Computation , 1987 .

[11]  Amy P. Felty,et al.  The Coq proof assistant user's guide : version 5.6 , 1990 .

[12]  William M. Farmer,et al.  IMPS: An Interactive Mathematical Proof System , 1990, CADE.

[13]  William M. Farmer,et al.  A partial functions version of Church's simple theory of types , 1990, Journal of Symbolic Logic.

[14]  Franz Regensburger,et al.  HOLCF: Higher Order Logic of Computable Functions , 1995, TPHOLs.

[15]  R. Pollack The Theory of LEGO A Proof Checker for the Extended Calculus of Constructions , 1994 .

[16]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[17]  Sentot Kromodimoeljo,et al.  A Tutorial on EVES using s-Verdi , 1995 .

[18]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[19]  M. Beeson Foundations of Constructive Mathematics , 1985 .

[20]  Sten Agerholm,et al.  An Isabelle-Based Theorem Prover for VDM-SL , 1997, TPHOLs.

[21]  G. Winskel The formal semantics of programming languages , 1993 .

[22]  Lawrence Charles Paulson,et al.  Isabelle: A Generic Theorem Prover , 1994 .

[23]  Olaf Müller,et al.  Possibly Infinite Sequences in Theorem Provers: A Comparative Study , 1997, TPHOLs.

[24]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[25]  Tom Melham,et al.  Higher Order Logic Theorem Proving and Its Applications , 1995, Lecture Notes in Computer Science.

[26]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[27]  Tobias Nipkow,et al.  Traces of I/O-Automata in Isabelle/HOLCF , 1997, TAPSOFT.

[28]  Jens Brandt,et al.  Theorem Proving in Higher Order Logics , 1997, Lecture Notes in Computer Science.

[29]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[30]  Bart Jacobs,et al.  Proof Principles for Datatypes with Iterated Recursion , 1997, Category Theory and Computer Science.

[31]  Natarajan Shankar,et al.  Formal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS , 1995, IEEE Trans. Software Eng..

[32]  C. Q. Lee,et al.  The Computer Journal , 1958, Nature.

[33]  Stephen J. Garland,et al.  PVS: A Prototype . . . , 1992 .

[34]  Solomon Feferman Computation on Abstract Data Types: The Extensional Approach, with an Application to Streams , 1996, Ann. Pure Appl. Log..

[35]  Franz Regensburger,et al.  HOLCF: eine konservative Erweiterung von HOL um LCF , 1994 .

[36]  Lawrence C. Paulson Mechanizing Coinduction and Corecursion in Higher-Order Logic , 1997, J. Log. Comput..

[37]  Lennart Augustsson,et al.  Compiling Pattern Matching , 1985, FPCA.

[38]  Michael J. C. Gordon,et al.  Merging HOL with Set Theory - preliminary experiments , 1994 .

[39]  Tobias Nipkow,et al.  Winskel is (almost) Right: Towards a Mechanized Semantics Textbook , 1996, Formal Aspects of Computing.