A dependently typed language with nontermination

2015 
A DEPENDENTLY TYPED LANGUAGE WITH NONTERMINATION Vilhelm Sjoberg Stephanie Weirich We propose a full-spectrum dependently typed programming language, Zombie, which supports general recursion natively. The Zombie implementation is an elaborating typechecker. We prove type saftey for a large subset of the Zombie core language, including features such as computational irrelevance, CBV-reduction, and propositional equality with a heterogeneous, completely erased elimination form. Zombie does not automatically β-reduce expressions, but instead uses congruence closure for proof and type inference. We give a specification of a subset of the surface language via a bidirectional type system, which works “up-to-congruence,” and an algorithm for elaborating expressions in this language to an explicitly typed core language. We prove that our elaboration algorithm is complete with respect to the source type system. Zombie also features an optional termination-checker, allowing nonterminating programs returning proofs as well as external proofs about programs.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    146
    References
    3
    Citations
    NaN
    KQI
    []