CLIP Lab
The Computational logic, Languages, Implementation, and Parallelism Laboratory

Welcome to CLIP Lab

CLIP The CLIP Research Group -A Short Description

(This description was compiled for the ALP newsletter.)
The Computational Logic, Implementation and Parallelism (CLIP) Laboratory has been active at UPM's School of Computer Science since 1990. It currently includes a number of faculty members (Manuel Hermenegildo, Francisco Bueno, Daniel Cabeza, Manuel Carro, Jesús Correas, Pedro López, and Germán Puebla), a number of research members working on their Ph.D. or Master's (Francisco José Bermejo del Rey, José Manuel Gómez, Eduardo Mendivil, Angel Pineda, Claudio Vaucheret), a full-time administrative staff member (Astrid Beascoa), and a number of undergraduate students (José Morales, Oscar Portela).

Lines of research:


$\bullet$ Distributed execution, internet, WWW: Libraries for programming distributed, multiple agents. WWW/Internet programming. Flexible layout languages.

$\bullet$ Advanced program development tools: Combined static/dynamic debugging. Program validation/certification. Automatic program documentation. Sequential and parallel (C)LP execution visualization.

$\bullet$ Global program analysis: Abstract interpretation frameworks and domains. Analysis of real-life languages (e.g., ISO-Prolog), CLP, languages with delay. Modular and incremental analysis. Inference of complex program properties (non-failure, determinacy, bounds on cost, rich moded types, etc.).

$\bullet$ Program transformation/optimization: Program optimization via multiple abstract specialization. Integration with partial evaluation and low-level optimization. Target abstract machines.

$\bullet$ Programming language design: (Concurrent) LP/CLP languages. Module systems, functions, higher order, and object-oriented extensions.

$\bullet$ Parallelism: Automatic program parallelization (including task granularity control). Optimization of concurrent and distributed programs. Parallel models and bounds. Parallel / distributed abstract machines.


The group is strongly committed to developing solutions which constitute at the same time quality research and clearly applicable technology. To this end, most of the group's results are tested in and integrated into the Ciao program development environment, which is used as the group's main implementation platform. Ciao is the result of many collaborations, to which the group is always open. It has proven useful, both for us and for other groups, not only for application development but also as a platform for the implementation of LP/CLP extensions, optimizations, and program processing tools: the open design of Ciao allows the integration of such tools into a real-life environment (and dealing with the related problems) with limited effort. The Ciao environment includes a number of components, some of which are detailed below:

The Ciao Prolog system:

A next-generation, GNU-Licensed Prolog System. The language subsumes standard ISO-Prolog and is specifically designed to be very extensible and to support modular program analysis, debugging, and optimization. It includes a robust module system with automatic incremental compilation and produces executables which are small and of comparable performance to good bytecoded systems, and allows executing scripts written in Prolog. Also supported are concurrency/parallelism (i.e., threads), a concurrent built-in database, persistent predicates, higher-order, functions, objects, sockets, distributed execution, foreign language interfaces, emacs interface, a stand-alone compiler, etc. The language also allows assertions describing types, modes, determinacy, non-failure, cost, etc., which can be checked statically or dynamically and which can be used to generate documentation automatically. The Ciao engine is based on the &-Prolog concurrent Prolog engine, itself derived from the SICStus engine. The Ciao system includes lpdoc, an automatic documentation generator for LP/CLP programs. It processes Prolog files adorned with assertions and machine-readable comments and generates manuals in many formats including postscript, pdf, texinfo, info, HTML, etc.

The Ciao preprocessor (ciaopp):

Can perform a number of program debugging, analysis and source-to-source transformation tasks, including: (a) Inference of properties of program predicates and literals, including types, modes and other variable instantiation properties, non-failure, determinacy, bounds on computational cost, bounds on sizes of terms in the program, etc. (ciaopp includes the ``PLAI'' abstract interpreter). (b) Several kinds of source to source program transformations such as specialization, parallelization (including granularity control), inclusion of run-time tests for assertions which cannot be checked completely at compile-time, etc. (ciaopp includes the &-Prolog parallelizer and the GraCos/CasLog granularity control system). (c) Static debugging (finding errors at compile-time), including checking how programs call system libraries and also the assertions present in the program or in other modules used by the program (validation/certification). Bugs can be found even without adding assertions to programs and for large programs consisting of several files and system libraries. To this end, ciaopp implements the assertion language and the framework for combined static/dynamic program validation and diagnosis developed by the group within the DiSCiPl ESPRIT project (Debugging Systems for Constraint Programming). Information generated by analysis, assertions in system libraries, and any assertions optionally included in user programs as specifications are all written in the same assertion language. ciaopp is actually a generic tool, which can be tailored to perform these and other tasks for different LP and CLP dialects. For example, in collaboration with Linköping U. and Cosytec, the group has developed such an instantiation, CHIPRE, a preprocessor for the CHIP system which can infer types and modes for large CHIP programs, check the correctness of such programs against (type and mode) specifications in the program or libraries, and locate bugs.

Execution visualization:

Also within the DiSCiPl project, the group has developed visualization tools for debugging CLP programs, including the APT execution tree visualizer and VIFID/TRIFID, 2-D and 3-D visualizers for finite domain constraints. Previously, the group developed the VisAndOr parallel execution visualizer.

Internet and agent programming:

Facilities for developing distributed, multiple agent applications have been incorporated in the Ciao system, including remote execution primitives, hierarchical concurrent blackboards (using the concurrent database), persistence, mobility, etc. Also, in the RadioWeb ESPRIT project (Automatic Generation of Web Sites for the Radio Broadcasting Industry) the group has developed (in collaboration with Ben Gurion U. and GEFEN) GDA, a generic database access method which allows accessing from a logic program many kinds of databases running on different operating systems in a uniform way, a layout and style language which extends XSL by allowing expressing WWW page layouts as constraint-based rules, and an interpreter of this language (the LaSt engine). This allows generating automatically and on-the-fly high-quality HTML code which is context sensitive and tailored to user and site preferences. WebDB is a browser-based heterogeneous database management system based on GDA. All these systems use the Ciao system's PiLLoW, a WWW programming library which parses and generates HTML/XML, handles forms, implements the http protocol, etc.. The RadioWeb systems have been implemented using Ciao and are being tested in the generation of WWW sites for major radio stations. And finally, in the EU-funded projects OmniPaper and VipAdvisor, Ciao technology is being used for agent programming in applications oriented to the Semantic Web.

Additional information:

The CLIP group's WWW site includes member's home pages, lists of publications by research topic, archive of most papers and technical reports, pointers to download areas for public-domain software developed by the group, information on current and past research projects (descriptions and deliverables), information on recently (co-)organized events, a number of repositories on selected topics (such as, for example, Internet programming using LP/CLP), etc. The site also includes some information on students and colleagues which have visited the group previously and, through the project pages, about collaborating institutions.

Contact info:


http://cliplab.org
clip@cliplab.org
Manuel Hermenegildo
Facultad de Informática - UPM
E-28660 Boadilla del Monte, Madrid, SPAIN