Results 1 
2 of
2
Soundness and Principal Contexts for a Shallow Polymorphic Type System based on Classical Logic
"... In this paper we investigate how to adapt the wellknown notion of MLstyle polymorphism (shallow polymorphism) to a term calculus based on a CurryHoward correspondence with classical sequent calculus, namely, theX icalculus. We show that the intuitive approach is unsound, and pinpoint the precise ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
In this paper we investigate how to adapt the wellknown notion of MLstyle polymorphism (shallow polymorphism) to a term calculus based on a CurryHoward correspondence with classical sequent calculus, namely, theX icalculus. We show that the intuitive approach is unsound, and pinpoint the precise nature of the problem. We define a suitably refined type system, and prove its soundness. We then define a notion of principal contexts for the type system, and provide an algorithm to compute these, which is proved to be sound and complete with respect to the type system. In the process, we formalise and prove correctness of generic unification, which generalises Robinson’s unification to shallowpolymorphic types. Key words: CurryHoward, classical logic, generic unification, principal types, cut elimination 1.
Programming Language Concepts — The Lambda Calculus Approach ∗
"... The Lambda Calculus is a formal system, originally intended as a tool in the foundation of mathematics, but mainly used to study the concepts of algorithm and effective computability. Recently, the Lambda Calculus and related systems acquire attention from Computer Science for another reason too: se ..."
Abstract
 Add to MetaCart
(Show Context)
The Lambda Calculus is a formal system, originally intended as a tool in the foundation of mathematics, but mainly used to study the concepts of algorithm and effective computability. Recently, the Lambda Calculus and related systems acquire attention from Computer Science for another reason too: several important programming language concepts can be explained elegantly and can be studied successfully in the framework of the Lambda Calculi. We show this mainly by means of examples. We address ourselves to interested computer scientists who have no prior knowledge of the Lambda Calculus. The concepts discussed include: parameterization, definitions, recursion, elementary and composite data types, typing, abstract types, control of visibility and lifetime, and modules. 1.