English
Related papers

Related papers: Improving Prolog Programs: Refactoring for Prolog

200 papers

Logic Programming languages and combinational circuit synthesis tools share a common "combinatorial search over logic formulae" background. This paper attempts to reconnect the two fields with a fresh look at Prolog encodings for the…

Logic in Computer Science · Computer Science 2008-12-18 Paul Tarau , Brenda Luderman

Higher-order logic programming is an interesting extension of traditional logic programming that allows predicates to appear as arguments and variables to be used where predicates typically occur. Higher-order characteristics are indeed…

Programming Languages · Computer Science 2018-12-04 Antonis Troumpoukis , Angelos Charalambidis

Magic sets are a Datalog to Datalog rewriting technique to optimize query answering. The rewritten program focuses on a portion of the stable model(s) of the input program which is sufficient to answer the given query. However, the…

Artificial Intelligence · Computer Science 2020-02-19 Mario Alviano , Nicola Leone , Pierfrancesco Veltri , Jessica Zangari

e use Prolog as a flexible meta-language to provide executable specifications of some fundamental mathematical objects and their transformations. In the process, isomorphisms are unraveled between natural numbers and combinatorial objects…

Programming Languages · Computer Science 2011-12-19 Paul Tarau

This report investigates the relationship between software refactoring and behavior preservation. Existing behavior preservation analyses often lack comprehensive insights into refactoring rejections and do not provide actionable solutions.…

Software Engineering · Computer Science 2024-11-14 Wouter Brinksma , William Wernsen , Evert Verduin , Herman Hilberink , Patrick de Beer , Lex Bijlsma , Harrie Passier

Prolog's support for dynamic programming, meta programming and text processing using context free grammars make the language highly suitable for defining domain specific languages (DSL) as well as analysing, refactoring or generating…

Programming Languages · Computer Science 2013-08-20 Jan Wielemaker , Michael Hendricks

An important challenge in constraint programming is to rewrite constraint models into executable programs calculat- ing the solutions. This phase of constraint processing may require translations between constraint programming lan- guages,…

Artificial Intelligence · Computer Science 2010-02-17 Raphael Chenouard , Laurent Granvilliers , Ricardo Soto

Logic programming is a flexible programming paradigm due to the use of predicates without a fixed data flow. To extend logic languages with the compact notation of functional programming, there are various proposals to map evaluable…

Programming Languages · Computer Science 2022-05-17 Michael Hanus

A theory is developed which uses "networks" (directed acyclic graphs with some extra structure) as a formalism for expressions in multilinear algebra. It is shown that this formalism is valid for arbitrary PROPs (short for 'PROducts and…

Rings and Algebras · Mathematics 2012-04-12 Lars Hellström

Code readability is fundamental to software quality and maintainability. Poor readability extends development time, increases bug-inducing risks, and contributes to technical debt. With the rapid advancement of Large Language Models, AI…

Software Engineering · Computer Science 2026-03-17 Kyogo Horikawa , Kosei Horikawa , Yutaro Kashiwa , Hidetake Uwano , Hajimu Iida

Program slicing has been mainly studied in the context of imperative languages, where it has been applied to a wide variety of software engineering tasks, like program understanding, maintenance, debugging, testing, code reuse, etc. This…

Programming Languages · Computer Science 2007-05-23 Josep Silva , Germán Vidal

Refactoring is widely recognized as one of the efficient techniques to manage technical debt and maintain a healthy software project through enforcing best design practices or coping with design defects. Previous refactoring surveys have…

Software Engineering · Computer Science 2021-09-24 Eman Abdullah AlOmar , Anthony Peruma , Mohamed Wiem Mkaouer , Christian D. Newman , Ali Ouni

We describe here a simple application of rational trees to the implementation of an interpreter for a procedural language written in a logic programming language. This is possible in languages designed to support rational trees (such as…

Data Structures and Algorithms · Computer Science 2007-05-23 Manuel Carro

Microservices are becoming the defacto design choice for software architecture. It involves partitioning the software components into finer modules such that the development can happen independently. It also provides natural benefits when…

Software Engineering · Computer Science 2021-02-09 Utkarsh Desai , Sambaran Bandyopadhyay , Srikanth Tamilselvam

Logic programming such as Prolog is often sequential and slow because each execution step processes only a single, $micro$ connective. To fix this problem, we propose to use $macro$ connectives as the means of improving both readability and…

Programming Languages · Computer Science 2018-05-08 Keehang Kwon

Large Language Models (LLMs) excel in code generation yet struggle with modern AI software engineering tasks. Unlike traditional function-level or file-level coding tasks, AI software engineering requires not only basic coding proficiency…

Software Engineering · Computer Science 2025-03-20 Siru Ouyang , Wenhao Yu , Kaixin Ma , Zilin Xiao , Zhihan Zhang , Mengzhao Jia , Jiawei Han , Hongming Zhang , Dong Yu

Even though the core of the Prolog programming language has been standardized by ISO since 1995, it remains difficult to write complex Prolog programs that can run unmodified on multiple Prolog implementations. Indeed, implementations…

Programming Languages · Computer Science 2022-05-10 David Geleßus , Michael Leuschel

We introduce DeepProbLog, a probabilistic logic programming language that incorporates deep learning by means of neural predicates. We show how existing inference and learning techniques can be adapted for the new language. Our experiments…

Artificial Intelligence · Computer Science 2018-12-13 Robin Manhaeve , Sebastijan Dumančić , Angelika Kimmig , Thomas Demeester , Luc De Raedt

C is the lingua franca of programming and almost any device can be programmed using C. However, programming mod-ern heterogeneous architectures such as multi-core CPUs and GPUs requires explicitly expressing parallelism as well as…

Many automatic theorem-provers rely on rewriting. Using theorems as rewrite rules helps to simplify the subgoals that arise during a proof. LCF is an interactive theorem-prover intended for reasoning about computation. Its implementation of…

Logic in Computer Science · Computer Science 2016-08-31 Lawrence C. Paulson