Reference. A Dependently Typed Language with Dynamic Equality
Cite
Cites 37 works (2 here)
With notes (2)
Bidirectional Typing dunfield-2021-bidirectional
Bidirectional typing combines two modes of typing: type checking, which checks that a program satisfies a known type, and type synthesis, which determines a type from the program. Using checking enables bidirectional typing to support features for which inference is undecidable; using synthesis enables bidirectional typing to avoid the large annotation burden of explicitly typed languages. In addition, bidirectional typing improves error locality. We highlight the design principles that underlie bidirectional type systems, survey the development of bidirectional typing from the prehistoric period before Pierce and Turner’s local type inference to the present day, and provide guidance for future investigations.
Elimination with a Motive mcbride-2002-elimination
External (35)
- Gradualizing the Calculus of Inductive Constructions (2020)
- Programming Language Foundations in Agda (2020)
- λdB: Blame tracking at higher fidelity (2020)
- Approximate normalization for gradual dependent types (2019)
- Theorems for free for free: parametricity, with and without types (2017)
- Gradual refinement types (2017)
- Dependent types in haskell: Theory and practice (2016)
- Abstracting gradual typing (2016)
- Autosubst: Reasoning with de Bruijn Terms and Parallel Substitutions (2015)
- Refined Criteria for Gradual Typing (2015)
- Programming up to Congruence (2015)
- A Complement to Blame (2015)
- Irrelevance, heterogeneous equality, and call-by-value dependent type systems (2012)
- Equality proofs and deferred type errors: a compiler pearl (2012)
- ΠΣ: Dependent Types without the Sugar (2010)
- Dependent types and program equivalence (2010)
- Hybrid type checking (TOPLAS) (2010)
- Compositional reasoning and decidable checking for dependent contract types (2009)
- Well-Typed Programs Can't Be Blamed (2009)
- Gradual Typing for Objects (2007)
- Dependent ML An approach to practical programming with dependent types (2007)
- Hybrid type checking (2006)
- Interlanguage migration (2006)
- Dynamic Typing with Dependent Types (2004)
- Contracts for higher-order functions (2002)
- An Implementation of Type: Type (2000)
- Dependently typed functional programs and their proofs (PhD thesis) (2000)
- Cayenne—a language with dependent types (1998)
- An Algorithm for Type-Checking Dependent Types (1996)
- A Syntactic Approach to Type Soundness (1994)
- Domain Interpretations of Martin-Löf's Partial Type Theory (1990)
- A Polymorphic λ-calculus with Type:Type (DEC SRC report) (1986)
- Towards a theory of type structure (1974)
- An intuitionistic theory of types (1972)
- Towards a practical programming language based on dependent type theory. Ph. D. Dissertation. Department of Computer Science and Engineering