A framework for defining logics
Journal of the ACM (JACM)
Inductive definitions, semantics and abstract interpretations
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A calculus for access control in distributed systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science - Special volume on computer algebra
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Reasoning with higher-order abstract syntax in a logical framework
ACM Transactions on Computational Logic (TOCL)
Guarded recursive datatype constructors
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
System Description: Twelf - A Meta-Logical Framework for Deductive Systems
CADE-16 Proceedings of the 16th International Conference on Automated Deduction: Automated Deduction
FreshML: programming with binders made simple
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
ACM SIGPLAN Notices
Combining programming with theorem proving
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A language-based approach to functionally correct imperative programming
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Combining higher-order abstract syntax with first-order abstract syntax in ATS
Proceedings of the 3rd ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
Non-Interference in Constructive Authorization Logic
CSFW '06 Proceedings of the 19th IEEE workshop on Computer Security Foundations
System F with type equality coercions
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
Static Name Control for FreshML
LICS '07 Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science
A type-preserving closure conversion in haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Mechanizing metatheory in a logical framework
Journal of Functional 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
System Description: Delphin -- A Functional Programming Language for Deductive Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Case Analysis of Higher-Order Data
Electronic Notes in Theoretical Computer Science (ENTCS)
Coinductive big-step operational semantics
Information and Computation
Hoare type theory, polymorphism and separation1
Journal of Functional Programming
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A dependently typed programming language, with applications to foundational certified code systems
A dependently typed programming language, with applications to foundational certified code systems
Mixed inductive/coinductive types and strong normalization
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
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
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
VeriML: typed computation of logical terms inside a language with effects
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Beluga: a framework for programming and reasoning with deductive systems (system description)
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Focused inductive theorem proving
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Dependntly typed programming with domain-specific logics
Dependntly typed programming with domain-specific logics
Compiling contextual objects: bringing higher-order abstract syntax to programmers
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Mtac: a monad for typed tactic programming in Coq
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
First-class substitutions in contextual type theory
Proceedings of the Eighth ACM SIGPLAN international workshop on Logical frameworks & meta-languages: theory & practice
Hi-index | 0.00 |
We show how to combine a general purpose type system for an existing language with support for programming with binders and contexts by refining the type system of ML with a restricted form of dependent types where index objects are drawn from contextual LF. This allows the user to specify formal systems within the logical framework LF and index ML types with contextual LF objects. Our language design keeps the index language generic only requiring decidability of equality of the index language providing a modular design. To illustrate the elegance and effectiveness of our language, we give programs for closure conversion and normalization by evaluation. Our three key technical contribution are: 1) We give a bi-directional type system for our core language which is centered around refinement substitutions instead of constraint solving. As a consequence, type checking is decidable and easy to trust, although constraint solving may be undecidable. 2) We give a big-step environment based operational semantics with environments which lends itself to efficient implementation. 3) We prove our language to be type safe and have mechanized our theoretical development in the proof assistant Coq using the fresh approach to binding.