A framework for defining logics
Journal of the ACM (JACM)
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Primitive Recursion for Higher-Order Abstract Syntax
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
Handbook of automated reasoning
A New Approach to Abstract Syntax Involving Binders
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
FreshML: programming with binders made simple
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Recursion over objects of functional type
Mathematical Structures in Computer Science
Journal of Functional Programming
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Tabled higher-order logic programming
Tabled higher-order logic programming
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Computational Logic (TOCL)
Focusing on Binding and Computation
LICS '08 Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science
Combining Generic Judgments with Recursive Definitions
LICS '08 Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science
Practical programming with higher-order encodings and dependent types
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
The ∇-calculus. functional programming with higher-order encodings
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
A type-preserving compiler in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Greedy bidirectional polymorphism
Proceedings of the 2009 ACM SIGPLAN workshop on ML
VeriML: typed computation of logical terms inside a language with effects
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Programming inductive proofs: a new approach based on contextual types
Verification, induction termination analysis
Programming inductive proofs: a new approach based on contextual types
Verification, induction termination analysis
How to make ad hoc proof automation less ad hoc
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Static and user-extensible proof checking
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Beluga: programming with dependent types, contextual data, and contexts
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Beluga: a framework for programming and reasoning with deductive systems (system description)
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
LFP: a logical framework with external predicates
Proceedings of the seventh international workshop on Logical frameworks and meta-languages, theory and practice
Typed syntactic meta-programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Mtac: a monad for typed tactic programming in Coq
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
This paper explores a new point in the design space of functional programming: functional programming with dependently-typed higher-order data structures described in the logical framework LF. This allows us to program with proofs as higher-order data. We present a decidable bidirectional type system that distinguishes between dependently-typed data and computations. To support reasoning about open data, our foundation makes contexts explicit. This provides us with a concise characterization of open data, which is crucial to elegantly describe proofs. In addition, we present an operational semantics for this language based on higherorder pattern matching for dependently typed objects. Based on this development, we prove progress and preservation