Cookies Policy
The website need some cookies and similar means to function. If you permit us, we will use those means to collect data on your visits for aggregated statistics to improve our service. Find out More
Accept Reject
  • Menu
Publications

Publications by Vítor Santos Costa

2022

Impact of the glycaemic sampling method in diabetes data mining

Authors
Machado, D; Costa, VS; Brandao, P;

Publication
2022 27TH IEEE SYMPOSIUM ON COMPUTERS AND COMMUNICATIONS (IEEE ISCC 2022)

Abstract
Finger-pricking is the traditional procedure for glycaemia monitoring. It is an invasive method where the person with diabetes is required to prick their finger. In recent years, continuous-glucose monitoring (CGM), a new and more convenient method of glycaemia monitoring, has become prevalent. CGM provides continuous access to glycaemic values without the need of finger-pricking. Data mining can be used to understand glycaemic values, and to ideally warn users of abnormal situations. CGM provides significantly more data than finger-pricking. Thus, the amount and value of CGM data ultimately questions the role of finger-pricking for glycaemic studies. In this work we use the OhioT1DM data set in order to study the importance of finger-prick-based data. We use Random Forest as a classification method, a robust method that tends to obtain quality results. Our results indicate that, although more demanding and scarcer, finger-prick-based glycaemic values have a significant role on diabetes management and on data mining.

2022

Typed SLD-Resolution: Dynamic Typing for Logic Programming

Authors
Barbosa, J; Florido, M; Costa, VS;

Publication
LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION (LOPSTR 2022)

Abstract
The semantic foundations for logic programming are usually separated into two different approaches. The operational semantics, which uses SLD-resolution, the proof method that computes answers in logic programming, and the declarative semantics, which sees logic programs as formulas and its semantics as models. Here, we define a new operational semantics called TSLD-resolution, which stands for Typed SLD-resolution, where we include a value wrong, that corresponds to the detection of a type error at run-time. For this we define a new typed unification algorithm. Finally we prove the correctness of TSLD-resolution with respect to a typed declarative semantics.

2022

Fifty Years of Prolog and Beyond

Authors
Korner, P; Leuschel, M; Barbosa, J; Costa, VS; Dahl, V; Hermenegildo, MV; Morales, JF; Wielemaker, J; Diaz, D; Abreu, S; Ciatto, G;

Publication
THEORY AND PRACTICE OF LOGIC PROGRAMMING

Abstract
Both logic programming in general and Prolog in particular have a long and fascinating history, intermingled with that of many disciplines they inherited from or catalyzed. A large body of research has been gathered over the last 50 years, supported by many Prolog implementations. Many implementations are still actively developed, while new ones keep appearing. Often, the features added by different systems were motivated by the interdisciplinary needs of programmers and implementors, yielding systems that, while sharing the classic core language, in particular, the main aspects of the ISO-Prolog standard, also depart from each other in other aspects. This obviously poses challenges for code portability. The field has also inspired many related, but quite different languages that have created their own communities. This article aims at integrating and applying the main lessons learned in the process of evolution of Prolog. It is structured into three major parts. First, we overview the evolution of Prolog systems and the community approximately up to the ISO standard, considering both the main historic developments and the motivations behind several Prolog implementations, as well as other logic programming languages influenced by Prolog. Then, we discuss the Prolog implementations that are most active after the appearance of the standard: their visions, goals, commonalities, and incompatibilities. Finally, we perform a SWOT analysis in order to better identify the potential of Prolog and propose future directions along with which Prolog might continue to add useful features, interfaces, libraries, and tools, while at the same time improving compatibility between implementations.

2024

The Impact of Feature Selection on Balancing, Based on Diabetes Data

Authors
Machado, D; Costa, VS; Brandao, P;

Publication
BIOMEDICAL ENGINEERING SYSTEMS AND TECHNOLOGIES, BIOSTEC 2023

Abstract
Diabetes management data is composed of diverse factors and glycaemia indicators. Glycaemia predictive models tend to focus solely on glycaemia values. A comprehensive understanding of diabetes management requires the consideration of several aspects of diabetes management, beyond glycaemia. However, the inclusion of every aspect of diabetes management can create an overly high-dimensional data set. Excessive feature spaces increase computational complexity and may introduce over-fitting. Additionally, the inclusion of inconsequential features introduces noise that hinders a model's performance. Feature importance is a process that evaluates a feature's value, and can be used to identify optimal feature sub-sets. Depending on the context, multiple methods can be used. The drop feature method, in the literature, is considered to be the best approach to evaluate individual feature importance. To reach an optimal set, the best approach is branch and bound, albeit its heavy computational cost. This overhead can be addressed through a trade-off between the feature set's optimisation level and the process' computational feasibility. The improvement of the feature space has implications on the effectiveness of data balancing approaches. Whilst, in this study, the observed impact was not substantial, it warrants the need to reconsider the balancing approach given a superior feature space.

2025

On Bridging Prolog and Python to Enhance an Inductive Logic Programming System

Authors
Costa, VS; Areias, M;

Publication
PRACTICAL ASPECTS OF DECLARATIVE LANGUAGES, PADL 2025

Abstract
Prolog is a programming language that provides a high-level approach to software development. Python is a versatile programming language that has a vast range of libraries including support for data analysis and machine learning tasks. We present a Prolog-Python interface that aims at exploiting Prolog deduction capabilities and Python's extensive libraries. Our novel interface was built using a divide and conquer methodology. In a first step, we implemented a set of C++ classes that can be matched to Python classes; next, we used an interface generator to export the relevant classes. Finally, we use C code to actually convert between the two realms. In order to demonstrate the usefulness of the interface, we enhance an Inductive Logic Programming System with a visualization capabilities and show how to interface with a standard classifier.

2025

Program Synthesis Using Inductive Logic Programming for the Abstraction and Reasoning Corpus

Authors
Rocha, FM; Dutra, I; Costa, VS;

Publication
INTELLIGENZA ARTIFICIALE

Abstract
The Abstraction and Reasoning Corpus (ARC-AGI) is an Artificial General Intelligence benchmark that is currently unsolved. It demands strong generalization and reasoning capabilities, which are known to be weaknesses of Neural Network based systems. In this work, we propose a Program synthesis system to solve it, which casts an ARC-AGI task as a sequence of Inductive Logic Programming tasks. We have implemented a simple Domain Specific Language that corresponds to a small set of object-centric abstractions relevant to the benchmark. This allows for adequate representations to be used to create logic programs, which provide reasoning capabilities to our system. When solving each task, the proposed system can generalize from a few training pairs of input-output grids. The obtained logic programs are able to generate objects present in the output grids and can transform the test input grid into the output grid solution. We developed our system based on some ARC-AGI tasks that do not require more than the small number of primitives that we implemented and showed that our system can solve unseen tasks that require different reasoning.

  • 9
  • 35