A Classical Sequent Calculus with Dependent Types
Abstract
Dependent types are a key feature of type systems, typically used in the context of both richly-typed programming languages and proof assistants. Control operators, which are connected with classical logic along the proof-as-program correspondence, are known to misbehave in the presence of dependent types, unless dependencies are restricted to values. We place ourselves in the context of the sequent calculus which has the ability to smoothly provide control under the form of the µ operator dual to the common "let" operator, as well as to smoothly support abstract machine and continuation-passing style interpretations. We start from the call-by-value version of the λμμ̃ language and design a minimal language with a value restriction and a type system that includes a list of explicit dependencies and maintains type safety. We then show how to relax the value restriction and introduce delimited continuations to directly prove the consistency by means of a continuation-passing-style translation. Finally, we relate our calculus to a similar system by Lepigre , and present a methodology to transfer properties from this system to our own.
Origin | Files produced by the author(s) |
---|