A Metalanguage for interactive proof in LCF

LCF (Icqic for Caqmtable Functions) is a prcof generating system mnsisting of an interactive programing language MG (MetaLmguage) for mnducting prcofs in PPA (Polynmrphic Predicate A-calculus) , a deductive calculus suitable for the formalisation of reasoning almut recursively defined functions, in particular about the syntax, semantics and iq?lementations of many prqrcmming languages. PPI is an enrichment (in respect of type structure and expressive pcwer) of an extended a-calculus due to Dana Scott and is fully discussed elsewhere [ 22 I . The puxposes of this paper are (a) to illustrate the features of ML which me it of general interest in language design quite independently of its use for machine assistd formal pxcof, (b) to illustrate ML applied to PPA, in encoding interesting prcof -finding-andperfonning procedures, and (c) to convey a methodology for controlled semiautomatic proof.

[1]  Arthur Evans PAL—a language designed for teaching programming linguistics , 1968, ACM '68.

[2]  Malcolm Charles Newey Formal semantics of lisp with applications to program correctness. , 1975 .

[3]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[4]  Robin Milner Implementation and applications of Scott's logic for computable functions , 1972 .

[5]  C. Hewitt Planner: a language for manipulating models and proving theorems in a robot" ijcai-69 , 1970 .

[6]  R. Milner,et al.  A Logic for Computable Functions with Reflexive and Polymorphic Types , 1975 .

[7]  Ole-Johan Dahl,et al.  SIMULA 67 common base language, (Norwegian Computing Center. Publication) , 1968 .

[8]  John C. Reynolds,et al.  GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept , 1970, Commun. ACM.

[9]  Richard W. Weyhrauch,et al.  A users manual for FOL. , 1977 .

[10]  Robin Milner,et al.  Program semantics and correctness in a mechanised logic , 1972 .

[11]  Raymond Aubin Mechanizing structural induction (formal system) , 1976 .

[12]  Robin Milner,et al.  Proving compiler correctness in a mechanised logic , 1972 .

[13]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

[14]  Robin Milner,et al.  Logic for Computable Functions: description of a machine implementation. , 1972 .

[15]  de Ng Dick Bruijn Automath A Language for Mathematics , 1973 .

[16]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[17]  Mary Shaw,et al.  Abstraction and Verification in Alphard: Introduction to Language and Methodology , 1976 .

[18]  Luigia Carlucci Aiello,et al.  The semantics of PASCAL in LCF. , 1974 .

[19]  Frank M. Brown A Deductive System for elementary Arithmetic , 1976, AISB.

[20]  Raymond Aubin,et al.  Mechanizing structural induction , 1976 .

[21]  Christopher Strachey,et al.  Toward a mathematical semantics for computer languages , 1971 .

[22]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[23]  Rodney W. Topor,et al.  Interactive program verification using virtual programs , 1975 .

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

[25]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[26]  David C. Luckham,et al.  A methodology for verifying programs , 1975 .