Saved in:
Bibliographic Details
Main Author: Fruehwirth, Thom
Format: Preprint
Published: 2025
Subjects:
Online Access:https://arxiv.org/abs/2503.10416
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866913734782353408
author Fruehwirth, Thom
author_facet Fruehwirth, Thom
contents Runtime repeated recursion unfolding was recently introduced as a just-in-time program transformation strategy that can achieve super-linear speedup. So far, the method was restricted to single linear direct recursive rules in the programming language Constraint Handling Rules (CHR). In this companion paper, we generalize the technique to multiple recursion and to multiple recursive rules and provide an implementation of the generalized method in the logic programming language Prolog. The basic idea of the approach is as follows: When a recursive call is encountered at runtime, the recursive rule is unfolded with itself and this process is repeated with each resulting unfolded rule as long as it is applicable to the current call. In this way, more and more recursive steps are combined into one recursive step. Then an interpreter applies these rules to the call starting from the most unfolded rule. For recursions which have sufficiently simplifyable unfoldings, a super-linear can be achieved, i.e. the time complexity is reduced. We implement an unfolder, a generalized meta-interpreter and a novel round-robin rule processor for our generalization of runtime repeated recursion unfolding with just ten clauses in Prolog. We illustrate the feasibility of our technique with worst-case time complexity estimates and benchmarks for some basic classical algorithms that achieve a super-linear speedup.
format Preprint
id arxiv_https___arxiv_org_abs_2503_10416
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Super-Linear Speedup by Generalizing Runtime Repeated Recursion Unfolding in Prolog
Fruehwirth, Thom
Programming Languages
Data Structures and Algorithms
Performance
Symbolic Computation
D.1.6; D.3.3
Runtime repeated recursion unfolding was recently introduced as a just-in-time program transformation strategy that can achieve super-linear speedup. So far, the method was restricted to single linear direct recursive rules in the programming language Constraint Handling Rules (CHR). In this companion paper, we generalize the technique to multiple recursion and to multiple recursive rules and provide an implementation of the generalized method in the logic programming language Prolog. The basic idea of the approach is as follows: When a recursive call is encountered at runtime, the recursive rule is unfolded with itself and this process is repeated with each resulting unfolded rule as long as it is applicable to the current call. In this way, more and more recursive steps are combined into one recursive step. Then an interpreter applies these rules to the call starting from the most unfolded rule. For recursions which have sufficiently simplifyable unfoldings, a super-linear can be achieved, i.e. the time complexity is reduced. We implement an unfolder, a generalized meta-interpreter and a novel round-robin rule processor for our generalization of runtime repeated recursion unfolding with just ten clauses in Prolog. We illustrate the feasibility of our technique with worst-case time complexity estimates and benchmarks for some basic classical algorithms that achieve a super-linear speedup.
title Super-Linear Speedup by Generalizing Runtime Repeated Recursion Unfolding in Prolog
topic Programming Languages
Data Structures and Algorithms
Performance
Symbolic Computation
D.1.6; D.3.3
url https://arxiv.org/abs/2503.10416