Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
Cornell University

Monday, May 5: arXiv will be READ ONLY at 9:00AM EST for approximately 30 minutes. We apologize for any inconvenience.

We gratefully acknowledge support from the Simons Foundation,member institutions, and all contributors.Donate
arxiv logo>cs> arXiv:2503.10416
arXiv logo
Cornell University Logo

Computer Science > Programming Languages

arXiv:2503.10416 (cs)
[Submitted on 13 Mar 2025]

Title:Super-Linear Speedup by Generalizing Runtime Repeated Recursion Unfolding in Prolog

View PDFHTML (experimental)
Abstract: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.
Comments:arXiv admin note: substantial text overlap witharXiv:2307.02180
Subjects:Programming Languages (cs.PL); Data Structures and Algorithms (cs.DS); Performance (cs.PF); Symbolic Computation (cs.SC)
ACM classes:D.1.6; D.3.3
Cite as:arXiv:2503.10416 [cs.PL]
 (orarXiv:2503.10416v1 [cs.PL] for this version)
 https://doi.org/10.48550/arXiv.2503.10416
arXiv-issued DOI via DataCite

Submission history

From: Thom Fruehwirth [view email]
[v1] Thu, 13 Mar 2025 14:36:48 UTC (23 KB)
Full-text links:

Access Paper:

Current browse context:
cs.PL
Change to browse by:
export BibTeX citation

Bookmark

BibSonomy logoReddit logo

Bibliographic and Citation Tools

Bibliographic Explorer(What is the Explorer?)
Connected Papers(What is Connected Papers?)
scite Smart Citations(What are Smart Citations?)

Code, Data and Media Associated with this Article

CatalyzeX Code Finder for Papers(What is CatalyzeX?)
Hugging Face(What is Huggingface?)
Papers with Code(What is Papers with Code?)

Demos

Hugging Face Spaces(What is Spaces?)

Recommenders and Search Tools

Influence Flower(What are Influence Flowers?)
CORE Recommender(What is CORE?)

arXivLabs: experimental projects with community collaborators

arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.

Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.

Have an idea for a project that will add value for arXiv's community?Learn more about arXivLabs.

Which authors of this paper are endorsers? |Disable MathJax (What is MathJax?)

[8]ページ先頭

©2009-2025 Movatter.jp