Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation - PLDI 2019 2019
DOI: 10.1145/3314221.3314643
|View full text |Cite
|
Sign up to set email alerts
|

Size-change termination as a contract: dynamically and statically enforcing termination for higher-order programs

Abstract: Termination is an important but undecidable program property, which has led to a large body of work on static methods for conservatively predicting or enforcing termination. One such method is the size-change termination approach of Lee, Jones, and Ben-Amram, which operates in two phases: (1) abstract programs into "size-change graphs, " and (2) check these graphs for the size-change property: the existence of paths that lead to infinite decreasing sequences.We transpose these two phases with an operational se… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2019
2019
2022
2022

Publication Types

Select...
4
2

Relationship

0
6

Authors

Journals

citations
Cited by 7 publications
(4 citation statements)
references
References 44 publications
0
4
0
Order By: Relevance
“…Future work includes supporting implicit arguments and higher-order unification, blame tracking [Wadler and Findler 2009], and efficient runtime semantics with erasure of computationallyirrelevant arguments [Brady et al 2003]. Approximate normalization might be made more precise by exploiting termination contracts [Nguyễn et al 2019].…”
Section: Resultsmentioning
confidence: 99%
“…Future work includes supporting implicit arguments and higher-order unification, blame tracking [Wadler and Findler 2009], and efficient runtime semantics with erasure of computationallyirrelevant arguments [Brady et al 2003]. Approximate normalization might be made more precise by exploiting termination contracts [Nguyễn et al 2019].…”
Section: Resultsmentioning
confidence: 99%
“…Static enforcement includes work such as total functional programming [52], primitive recursion [8, Chapter 3], and model checkers such as TERMIN-ATOR [11]. Techniques that dynamically enforce program termination can make use of both static information and run-time values, such as size-change termination [36].…”
Section: Eventual Reactivitymentioning
confidence: 99%
“…Our current implementation of Stella uses size-change termination (SCT) for higher-order programs [36] to ensure at run-time that routines terminate. In a nutshell, this form of SCT dynamically constructs a size-change graph based on the argument values of a routine call (def p1 (new Pair 'initialize-with 1 2)) (set-second!…”
Section: Routines Can Only Invoke Other Routinesmentioning
confidence: 99%
See 1 more Smart Citation