Theorems for free!

From the type of a polymorphic function we can derive a theorem that it satisfies. Every function of the same type satisfies the same theorem. This provides a free source of useful theorems, courtesy of Reynolds’ abstraction theorem for the polymorphic lambda calculus.

[1]  Thierry Coquand,et al.  Extensional Models for Polymorphism , 1987, Theor. Comput. Sci..

[2]  Thierry Coquand,et al.  Inheritance and explicit coercion , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[3]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[4]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[5]  José Meseguer,et al.  Relating models of polymorphism , 1989, POPL '89.

[6]  John C. Reynolds,et al.  Polymorphism is not Set-Theoretic , 1984, Semantics of Data Types.

[7]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[8]  Andre Scedrov,et al.  Semantic parametricity in polymorphic lambda calculus , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[9]  Robin Milner,et al.  A proposal for standard ML , 1984, LFP '84.

[10]  John C. Mitchell,et al.  Representation independence and data abstraction , 1986, POPL '86.

[11]  Kim B. Bruce,et al.  The Semantics of Second Order Polymorphic Lambda Calculus , 1984, Semantics of Data Types.

[12]  Mary Sheeran Categories for the Working Hardware Designer , 1989, Hardware Specification, Verification and Synthesis.

[13]  Daniel Leivant,et al.  The Expressiveness of Simple and Second-Order Type Structures , 1983, JACM.

[14]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[15]  Gérard Huet,et al.  Logical Foundations of Functional Programming , 1990 .

[16]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[17]  Andrew M. Pitts,et al.  Polymorphism is Set Theoretic, Constructively , 1987, Category Theory and Computer Science.

[18]  John C. Mitchell,et al.  Second-Order Logical Relations (Extended Abstract) , 1985, Logic of Programs.

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

[20]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[21]  John C. Reynolds,et al.  Three Approaches to Type Structure , 1985, TAPSOFT, Vol.1.

[22]  Jean-Yves Girard,et al.  The System F of Variable Types, Fifteen Years Later , 1986, Theor. Comput. Sci..

[23]  Andre Scedrov,et al.  Functorial Polymorphism , 1990, Theor. Comput. Sci..

[24]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[25]  J. Girard,et al.  Proofs and types , 1989 .