Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where E. Mera is active.

Publication


Featured researches published by E. Mera.


Theory and Practice of Logic Programming | 2012

An overview of ciao and its design philosophy

Manuel V. Hermenegildo; Francisco Bueno; Manuel Carro; P. Lípez-García; E. Mera; José F. Morales; Germán Puebla

We provide an overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation. An important aspect of Ciao is that, in addition to supporting logic programming (and, in particular, Prolog), it provides the programmer with a large number of useful features from different programming paradigms and styles and that the use of each of these features (including those of Prolog) can be turned on and off at will for each program module. Thus, a given module may be using, e.g., higher order functions and constraints, while another module may be using assignment, predicates, Prolog meta-programming, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of optimizations (including automatic parallelization). Such optimizations produce code that is highly competitive with other dynamic languages or, with the (experimental) optimizing compiler, even that of static languages, all while retaining the flexibility and interactive development of a dynamic language. This compilation architecture supports modularity and separate compilation throughout. The environment also includes a powerful autodocumenter and a unit testing framework, both closely integrated with the assertion system. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in a single journal paper, pointing instead to previous Ciao literature.


international conference on logic programming | 2007

User-definable resource bounds analysis for logic programs

Jorge A. Navas; E. Mera; Pedro López-García; Manuel V. Hermenegildo

We present a static analysis that infers both upper and lower bounds on the usage that a logic program makes of a set of user-definable resources. The inferred bounds will in general be functions of input data sizes. A resource in our approach is a quite general, user-defined notion which associates a basic cost function with elementary operations. The analysis then derives the related (upper- and lower-bound) resource usage functions for all predicates in the program. We also present an assertion language which is used to define both such resources and resourcerelated properties that the system can then check based on the results of the analysis. We have performed some preliminary experiments with some concrete resources such as execution steps, bytes sent or received by an application, number of files left open, number of accesses to a database, number of calls to a procedure, number of asserts/retracts, etc. Applications of our analysis include resource consumption verification and debugging (including for mobile code), resource control in parallel/distributed computing, and resource-oriented specialization.


international conference on logic programming | 2009

Integrating Software Testing and Run-Time Checking in an Assertion Verification Framework

E. Mera; Pedro López-García; Manuel V. Hermenegildo

We present a framework that unifies unit testing and run-time verification (as well as static verification and static debugging). A key contribution of our overall approach is that we preserve the use of a unified assertion language for all of these tasks. We first describe a method for compiling run-time checks for (parts of) assertions which cannot be verified at compile-time via program transformation. This transformation allows checking preconditions and postconditions, including conditional postconditions, properties at arbitrary program points, and certain computational properties. Most importantly, we propose a minimal addition to the assertion language which allows defining unit tests to be run in order to detect possible violations of the (partial) specifications expressed by the assertions. We have implemented the framework within the Ciao/CiaoPP system and effectively applied it to the verification of ISO Prolog compliance and to the detection of different types of bugs in the Ciao system source code. Experimental results are presented that illustrate different trade-offs among program size, running time, or levels of verbosity of the messages shown to the user.


practical aspects of declarative languages | 2007

Combining static analysis and profiling for estimating execution times

E. Mera; Pedro López-García; Germán Puebla; Manuel Carro; Manuel V. Hermenegildo

Effective static analyses have been proposed which allow inferring functions which bound the number of resolutions or reductions. These have the advantage of being independent from the platform on which the programs are executed and such bounds have been shown useful in a number of applications, such as granularity control in parallel execution. On the other hand, in certain distributed computation scenarios where different platforms come into play, with each platform having different capabilities, it is more interesting to express costs in metrics that include the characteristics of the platform. In particular, it is specially interesting to be able to infer upper and lower bounds on actual execution time. With this objective in mind, we propose a method which allows inferring upper and lower bounds on the execution times of procedures of a program in a given execution platform. The approach combines compile-time cost bounds analysis with a one-time profiling of the platform in order to determine the values of certain constants for that platform. These constants calibrate a cost model which from then on is able to compute statically time bound functions for procedures and to predict with a significant degree of accuracy the execution times of such procedures in the given platform. The approach has been implemented and integrated in the CiaoPP system.


principles and practice of declarative programming | 2008

Towards execution time estimation in abstract machine-based languages

E. Mera; P. Lopez; Manuel Carro; Manuel V. Hermenegildo

Abstract machines provide a certain separation between platform-dependent and platform-independent concerns in compilation. Many of the differences between architectures are encapsulated in the specific abstract machine implementation and the bytecode is left largely architecture independent. Taking advantage of this fact, we present a framework for estimating upper and lower bounds on the execution times of logic programs running on a bytecode-based abstract machine. Our approach includes a one-time, program-independent profiling stage which calculates constants or functions bounding the execution time of each abstract machine instruction. Then, a compile-time cost estimation phase, using the instruction timing information, infers expressions giving platform-dependent upper and lower bounds on actual execution time as functions of input data sizes for each program. Working at the abstract machine level makes it possible to take into account low-level issues in new architectures and platforms by just reexecuting the calibration stage instead of having to tailor the analysis for each architecture and platform. Applications of such predicted execution times include debugging/verification of time properties, certification of time properties in mobile code, granularity control in parallel/distributed computing, and resource-oriented specialization


practical aspects of declarative languages | 2011

Profiling for run-time checking of computational properties and performance debugging in logic programs

E. Mera; Teresa Trigo; Pedro López-García; Manuel V. Hermenegildo

Although several proling techniques for identifying perfor- mance bottlenecks in logic programs have been developed, they are gener- ally not automatic and in most cases they do not provide enough informa- tion for identifying the root causes of such bottlenecks. This complicates using their results for guiding performance improvement. We present a proling method and tool that provides such explanations. Our proler associates cost centers to certain program elements and can measure dif- ferent types of resource-related properties that aect performance, pre- serving the precedence of cost centers in the call graph. It includes an automatic method for detecting procedures that are performance bottle- necks. The proling tool has been integrated in a previously developed


international conference on logic programming | 2006

Using combined static analysis and profiling for logic program execution time estimation

E. Mera; Pedro López-García; Germán Puebla; Manuel Carro; Manuel V. Hermenegildo

Predicting statically the running time of programs has many applications ranging from task scheduling in parallel execution to proving the ability of a program to meet strict time constraints. A starting point in order to attack this problem is to infer the computational complexity of such programs (or fragments thereof). This is one of the reasons why the development of static analysis techniques for inferring cost-related properties of programs (usually upper and/or lower bounds of actual costs) has received considerable attention.


rules and rule markup languages for the semantic web | 2011

An overview of the Ciao system

Manuel V. Hermenegildo; Francisco Bueno; Manuel Carro; Pedro López-García; Rémy Haemmerlé; E. Mera; José F. Morales; Germán Puebla

Ciao is a logic-based, multi-paradigm programming system. One of its most distinguishing features is that it supports a large number of semantic and syntactic language features which can be selectively activated or deactivated for each program module. As a result, a module can be written in, for example, ISO-Prolog plus constraints and higher order, while another can be a pure logic module with a different control rule such as iterative deepening and/or tabling, and perhaps using constructive negation. A powerful and modular extension mechanism allows user-level design and implementation of such features and sub-languages. Another distinguishing feature of Ciao is its powerful assertion language, which allows expressing many kinds of program properties (ranging from, e.g., moded types to resource consumption), as well as tests and documentation. The compiler is capable of statically finding violations of these properties or verifying that programs comply with them, and issuing certificates of this compliance. The compiler also performs many types of optimizations, including automatic parallelization. It offers very competitive performance, while retaining the flexibility and interactive development of a dynamic language. We will present a hands-on overview of the system, through small examples which emphasize the novel aspects and the motivations which lie behind Ciaos design and implementation.


Archive | 2013

The ciao system

Francisco Bueno Carrillo; Manuel Carro Liñares; R. Haemmerlé; Manuel V. Hermenegildo; Pedro López García; E. Mera; José Francisco Morales Caballero; Alvaro Germán Puebla Sánchez


workshop on declarative aspects of multicore programming | 2007

Automatic granularity-aware parallelization of programs with predicates, functions, and constraints

Manuel V. Hermenegildo; Francisco Bueno Carrillo; Manuel Carro Liñares; Amadeo Casas; Pedro López García; E. Mera; Jorge A. Navas

Collaboration


Dive into the E. Mera's collaboration.

Top Co-Authors

Avatar

Manuel V. Hermenegildo

Ben-Gurion University of the Negev

View shared research outputs
Top Co-Authors

Avatar

Pedro López García

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Manuel Carro Liñares

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Manuel Carro

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Germán Puebla

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Manuel V. Hermenegildo

Ben-Gurion University of the Negev

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge