Cookies Policy
We use cookies to improve our site and your experience. By continuing to browse our site you accept our cookie policy. Find out More
Close
  • Menu
Interest
Topics
Details

Details

  • Name

    Paulo Moura
  • Cluster

    Computer Science
  • Role

    External Research Collaborator
  • Since

    01st January 2009
Publications

2014

Tabling, Rational Terms, and Coinduction Finally Together!

Authors
Mantadelis, T; Rocha, R; Moura, P;

Publication
THEORY AND PRACTICE OF LOGIC PROGRAMMING

Abstract
Tabling is a commonly used technique in logic programming for avoiding cyclic behavior of logic programs and enabling more declarative program definitions. Furthermore, tabling often improves computational performance. Rational term are terms with one or more infinite sub-terms but with a finite representation. Rational terms can be generated in Prolog by omitting the occurs check when unifying two terms. Applications of rational terms include definite clause grammars, constraint handling systems, and coinduction. In this paper, we report our extension of YAP's Prolog tabling mechanism to support rational terms. We describe the internal representation of rational terms within the table space and prove its correctness. We then use this extension to implement a tabling based approach to coinduction. We compare our approach with current coinductive transformations and describe the implementation. In addition, we present an algorithm that ensures a canonical representation for rational terms.

2013

LogicObjects: Enabling logic programming in Java through linguistic symbiosis

Authors
Castro, S; Mens, K; Moura, P;

Publication
Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

Abstract
While object-oriented programming languages are good at modelling real-world concepts and benefit from rich libraries and developer tools, logic programming languages are well suited for declaratively solving computational problems that require knowledge reasoning. Non-trivial declarative applications could take advantage of the modelling features of object-oriented programming and of the rich software ecosystems surrounding them. Linguistic symbiosis is a common approach to enable complementary use of languages of different paradigms. However, the problem of concepts leaking from one paradigm to another often hinders the applicability of such approaches. This issue has mainly been reported for object-oriented languages participating in a symbiotic relation with a logic language. To address this issue, we present LogicObjects, a linguistic symbiosis framework for transparently and (semi-) automatically enabling logic programming in Java, that aims to solve most of the problems of paradigm leaking reported in other works. © 2013 Springer-Verlag.

2013

A portable and efficient implementation of coinductive logic programming

Authors
Moura, P;

Publication
Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

Abstract
We describe the portable and efficient implementation of coinductive logic programming found in Logtalk, discussing its features and limitations. As Logtalk uses as a back-end compiler a compatible Prolog system, we also discuss the status of key Prolog features for an efficient and usable implementation of coinduction. © 2013 Springer-Verlag.

2012

A Statistical Classifier for Assessing the Level of Stress from the Analysis of Interaction Patterns in a Touch Screen

Authors
Davide Carneiro; Paulo Novais; Marco Gomes; Paulo Moura; José Neves

Publication
SOCO'12 - 7th International Conference on Soft Computing Models in Industrial and Environmental Application, vol.188, pp.257-266, Ostrawa, República Checa

Abstract
This paper describes an approach for assessing the level of stress of users of mobile devices with tactile screens by analysing their touch patterns. Two features are extracted from touches: duration and intensity. These features allow to analyse the intensity curve of each touch. We use decision trees (J48) and support vector machines (SMO) to train a stress detection classifier using additional data collected in previous experiments. This data includes the amount of movement, acceleration on the device, cognitive performance, among others. In previous work we have shown the co-relation between these parameters and stress. Both algorithms show around 80% of correctly classified instances. The decision tree can be used to classify, in real time, the touches of the users, serving as an input to the assessment of the stress level.