Propositional Equality for Gradual Dependently Typed Programming

  title={Propositional Equality for Gradual Dependently Typed Programming},
  author={Joey Eremondi and Ronald Garcia and {\'E}ric Tanter},
Gradual dependent types can help with the incremental adoption of dependently typed code by providing a principled semantics for imprecise types and proofs, where some parts have been omitted. Current theories of gradual dependent types, though, lack a central feature of type theory: propositional equality. Lennon-Bertrand et al. show that, when the reflexive proof refl is the only closed value of an equality type, a gradual extension of CIC with propositional equality violates static… 


Observational equality: now for good
Building on the recent extension of dependent type theory with a universe of definitionally proof-irrelevant types, we introduce TTobs, a new type theory based on the setoidal interpretation of
Dependently typed functional programs and their proofs
This thesis shows that the adoption of this uniqueness as axiomatic is sufficient to make pattern matching admissible, and develops technology for programming with dependent inductive families of datatypes and proving those programs correct.
Abstracting gradual typing
A new formal foundation for gradual typing is proposed, drawing on principles from abstract interpretation to give gradual types a semantics in terms of pre-existing static types, which subsumes existing notions of consistency.
Refined Criteria for Gradual Typing
This paper draws a crisp line in the sand that includes a new formal property, named the gradual guarantee, that relates the behavior of programs that differ only with respect to their type annotations, and argues that the gradually guarantee provides important guidance for designers of gradually typed languages.
Partial type equivalences for verified dependent interoperability
This paper develops the notion of partial type equivalences as a key foundation for dependent interoperability, developed in Coq, and develops a library that takes care of the (sometimes, heavy) lifting that leads to interoperable programs.
Gradual refinement types
The notion of gradual refinement types is developed, allowing smooth evolution and interoperability between simple types and logically-refined types, and addressing two challenges unexplored in the gradual typing literature: dealing with imprecise logical information, and with dependent function types.
Foundations of dependent interoperability
It becomes possible to internalize and hand-tune the extraction of dependently-typed programs to interoperable OCaml programs within Coq itself, and to explore the applicability of both type-theoretic Galois connections and anticonnections in the setting of dependent interoperability.
Abstracting gradual typing moving forward: precise and space-efficient
This paper addresses both problems at once by refining the theory underlying AGT's dynamic checks, and shows how forward-completeness is key to supporting both space-efficient execution and reliable runtime type enforcement.
Gradual certified programming in coq
This work explores gradual certified programming in Coq, providing the possibility to postpone the proofs of selected properties, and to check "at runtime" whether the properties actually hold, as well as encoding of casts that supports lifting assumed properties into runtime checks.
Complete Bidirectional Typing for the Calculus of Inductive Constructions
A bidirectional type system for the Calculus of Inductive Constructions is presented, which introduces a novel judgement intermediate between the usual inference and checking, dubbed constrained inference, to handle the presence of computation in types.