previous_group previous up next next_group
Previous: 2. HQ Interface Up: 2. HQ Interface Next: 2. Presentation

1. Introduction

HQ's interface is designed by taking into account four existing APIs: $C^3$, New POLKA, PPL and Octagon. The first three are polyhedral and the last one is octagonal. However, since an octagon is in fact a special case of a polyhedron, we can consider the four APIs as polyhedral. We also take into account the requirements needed for Omega library, the list of polyhedra implementation 4_subsec:list_polyhedra.

The idea behind this interface is to build a library to manipulate sets. Every polyhedron represents a set of points; so does every octagon, every Presburger formula and every interval. Since all these sets of sets form an abstract domain, which is more abstract than some others, we can provide the most abstract and basic manipulations, while hiding problems concerning differences among those abstract domains.

HQ is defined using javadoc utility, which permits an easy view of the API, even though the $C$ language is favored by most of the projects. Our first intention was to generate a $C$ version of HQ using another tool (JNI stands for Java Native Interface). However it soon becomes inappropriate: generated signatures are not human readable since there is always a Java context-related object in the signatures, as well as a long JNI prefix, which is not necessary nor user-friendly. We notice here that while a set of translation rules can be designed in order to automatically produce the equivalent C signatures, we have not created these rules yet.

As a consequence, HQ's documentation [QUE] only serves to identify incompatibilities: the name of operators, the arguments of the operators, which operators are missing, where to put operators, i.e. levels of the API, etc.

Since written in Java, an object-oriented language, some of the implementation details are hidden, such as exception management, which is intended to simplify the interface problem. In fact, we divide it into two parts, one for the imperative signature, the other for fragma [*] decisions. Therefore, along with the API, another type of document is provided in order to deal with those problems.

We mostly focus on the incompatibilities among existing libraries. In our documentation [QUE], the operators of the HQ set are discussed along with its corresponding operators available in the four libraries. However, in the following sections, we only study some important operators such as the satisfiability, projection, minimization and convex hull operators. For each operator in HQ, the names of the equivalent operator in $C^3$, New POLKA, Octagon and PPL if it exists are provided.


previous_group previous up next next_group
Previous: 2. HQ Interface Up: 2. HQ Interface Next: 2. Presentation
Nguyen Que Duong
2006-09-16