Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
Termination of rewriting systems by polynomial interpretations and its implementation
Science of Computer Programming
Efficient tests for top-down termination of logical rules
Journal of the ACM (JACM)
Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eliminating array bound checking through dependent types
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The size-change principle for program termination
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cost recurrences for DML programs
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Higher-Order and Symbolic Computation
The Definition of Standard ML
Dependent Types for Program Termination Verification
Higher-Order and Symbolic Computation
Termination Analysis for Mercury
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
PVS: Combining Specification, Proof Checking, and Model Checking
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
The Higher-Order Recursive Path Ordering
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Dependent types in practical programming
Dependent types in practical programming
Journal of Functional Programming
Termination Of Term Rewriting By Semantic Labelling
Fundamenta Informaticae
Dependent Types for Program Termination Verification
Higher-Order and Symbolic Computation
Combining programming with theorem proving
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
Termination analysis and specialization-point insertion in offline partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program termination analysis in polynomial time
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Formalization of Strong Normalization for Simply-Typed Lambda-Calculus and System F
Electronic Notes in Theoretical Computer Science (ENTCS)
Resource bound analysis for database queries
Proceedings of the third ACM SIGPLAN workshop on Programming languages and analysis for security
The Computability Path Ordering: The End of a Quest
CSL '08 Proceedings of the 22nd international workshop on Computer Science Logic
Type-Based Termination with Sized Products
CSL '08 Proceedings of the 22nd international workshop on Computer Science Logic
Adapting functional programs to higher order logic
Higher-Order and Symbolic Computation
Termination and productivity checking with continuous types
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Strong normalization and equi-(co)inductive types
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Attributive types for proof erasure
TYPES'07 Proceedings of the 2007 international conference on Types for proofs and programs
Automated termination proofs for haskell by term rewriting
ACM Transactions on Programming Languages and Systems (TOPLAS)
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Defining and reasoning about recursive functions: a practical tool for the coq proof assistant
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Decidability of type-checking in the calculus of algebraic constructions with size annotations
CSL'05 Proceedings of the 19th international conference on Computer Science Logic
Automated termination analysis for Haskell: from term rewriting to programming languages
RTA'06 Proceedings of the 17th international conference on Term Rewriting and Applications
A linear type system for multicore programming in ATS
Science of Computer Programming
Wellfounded recursion with copatterns: a unified approach to termination and productivity
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Program termination verification is a challenging research subject of significant practical importance. While there is already a rich body of literature on this subject, it is still undeniably a difficult task to design a termination checker for a realistic programming language that supports general recursion. In this paper, we present an approach to program termination verification that makes use of a form of dependent types developed in Dependent ML (DML), demonstrating a novel application of such dependent types to establishing a liveness property. We design a type system that enables the programmer to supply metrics for verifying program termination and prove that every well-typed program in this type system is terminating. We also provide realistic examples, which are all verified in a prototype implementation, to support the effectiveness of our approach to program termination verification as well as its unobtrusiveness to programming. The main contribution of the paper lies in the design of an approach to program termination verification that smoothly combines types with metrics, yielding a type system capable of guaranteeing program termination that supports a general form of recursion (including mutual recursion), higher-order functions, algebraic datatypes, and polymorphism.