Dependent types are a key feature of the proof assistants based on the Curry-Howard isomorphism. It is well-known that this correspondence can be extended to classical logic by enriching the language of proofs with control operators. However, they are known to misbehave in the presence of dependent types, unless dependencies are restricted to values. Moreover, while sequent calculi naturally support continuation-passing style interpretations, there is no such presentation of a language with dependent types. The main achievement of this paper is to give a sequent calculus presentation of a call-by-value language with a control operator and dependent types, and to justify its soundness through a continuation-passing style translation.We start from the call-by-value version of the λµμ-calculus. We design a minimal language with a value restriction and a type system that includes a list of explicit dependencies to 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. c b n a This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
1:2 Étienne MiqueyNevertheless, dependent types are known to misbehave in the presence of control operators, and lead to logical inconsistencies [17]. Since the same problem arises with a wider class of effects, it seems that we are facing the following dilemma: either we choose an effectful language (allowing us to write more programs) while accepting the lack of dependent types, or we choose a dependently typed language (allowing us to write finer specifications) and give up effects.Many works have tried to fill the gap between effectful programming languages and logic, by accommodating weaker forms of dependent types with computational effects (e.g., divergence, I/O, local references, exceptions). Amongst other works, we can cite the recent works by Ahman et al.[1], by Vákár [35,36] or by Pédrot and Tabareau who proposed a systematical way to add effects to type theory [33]. Side effects-that are impure computations in functional programming-are often interpreted by means of monads. Interestingly, control operators can be interpreted similarly through the continuation monad, but the continuation monad generally lacks the properties necessary to fit these frameworks.Although dependent types and classical logic have been deeply studied separately, the problem of accommodating both features 1 in one and the same system has not found a completely satisfying answer yet. Recent works from Herbelin [18] and Lepigre [22] proposed some restrictions on dependent types to make them compatible with a classical proof system, while Blot [5] designed a hybrid realizability model where dependent types are restricted to an intuitionistic fragment.
Call-by-value and value restrictionIn lang...