Partial objects in type theory
Partial objects in type theory
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Handbook of logic in computer science (vol. 2)
Computation and reasoning: a type theory for computer science
Computation and reasoning: a type theory for computer science
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
An indexed model of recursive types for foundational proof-carrying code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Types and programming languages
Types and programming languages
A short and flexible proof of Strong Normalization for the Calculus of Constructions
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Type-theoretic methodology for practical programming languages
Type-theoretic methodology for practical programming languages
Journal of Functional Programming
Journal of Functional Programming
Combining programming with theorem proving
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Fast congruence closure and extensions
Information and Computation
Fixed point semantics and partial recursion in Coq
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
AURA: a programming language for authorization and audit
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Ynot: dependent types for imperative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Central European Functional Programming School
Proceedings of the 3rd workshop on Programming languages meets program verification
Proceedings of the 3rd workshop on Programming languages meets program verification
Ott: Effective tool support for the working semanticist
Journal of Functional Programming
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
Type-safe distributed programming with ML5
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
IDRIS ---: systems programming meets full dependent types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Partiality, state and dependent types
TLCA'11 Proceedings of the 10th international conference on Typed lambda calculi and applications
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Secure distributed programming with value-dependent types
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Equational reasoning about programs with general recursion and call-by-value semantics
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
ΠΣ: dependent types without the sugar
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Step-Indexed syntactic logical relations for recursive and quantified types
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Hi-index | 0.00 |
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq, Agda, and Epigram), or allow infinite loops but are inconsistent when viewed as logics (e.g. Haskell, ATS, Ωmega. Here, we combine these two approaches into a single dependently-typed core language. The language is composed of two fragments that share a common syntax and overlapping semantics: a logic that guarantees total correctness, and a call-by-value programming language that guarantees type safety but not termination. The two fragments may interact: logical expressions may be used as programs; the logic may soundly reason about potentially nonterminating programs; programs can require logical proofs as arguments; and "mobile" program values, including proofs computed at runtime, may be used as evidence by the logic. This language allows programmers to work with total and partial functions uniformly, providing a smooth path from functional programming to dependently-typed programming.