SOFTWARE
The Rough Set Library (RSL) was created in 1993 by M. Gawry¶ and J. Sienkiewicz at the Institute of Computer of the Warsaw University of Technology. It was intended as a kernel for any academic or business application using rough set theory concepts. It is a C language routine library. It was written and tested in UNIX environment but it can easily be transformed and installed in MSDOS or MS Windows. The library has been tested as linktime library on MSDOS or MS Windows. The library has been tested as a linktome library on UNIX workstation and is available in the standard ANSI C source code. The only requirement for an application is that it includes the obligatory header the file rough.h The source code of the library routines is contained in several files. Segmentation into the files corresponds to task segregation and, accordingly, to object segregation. For a derailed description of the source structure see. The RSL is available in the standard ANSI C source code. It has been designed on DPX2000 computer. It is tested and used on IBM PC and HP Apollo 750. It has been successfully implemented for analysis of data from many different domains: geology, economy and phonetic. The RSL modules were used in a prototype speech recognition system. The RSL was meant as a tool for those wanting to build any application using rough set theory model, to research on the theory itself or just to analyze their particular data. The library saves their by providing a virtual rough set machine. The first task of the library is a maintenance of the data structures for the information system. Since the simple attributevalue table is not the only solution, the library provides routines for keeping data in three different structures: the above mention attributevalue table, the discernibility matrix. The user can freely choose between them, use them separately or simultaneously. The information system becomes a C language structure witch can be declared, filed, read and stored on the disk by the use of the library routines. The RSL answers all the basic questions that can be asked of the information system using the terminology of rough set theory, among them: approximations of sets, attribute dependences, various coefficients, cores, etc. The RSL solves the problem of algorithm optimization. There are three crucial tasks of hight complexity that are solved by RSL: reduct finding, rule generation and new object classification. Each is implemented in a library module help to introduce userdefined strategies. Computation time and construction of algorithms depends heavily on the information data structure. Since the library provides three different data structures, it also provides three, often totally different, routines leading to computation of the same answer. It leaves selection to the user. This makes it possible to compare the time and memory effectiveness of computing structures and algorithms. Effectiveness depends heavily on such system parameters as number of objects, number of attributes and size of attributes domains, and even on explicit attribute values. During design and coding of library routines the authors developed a certain implementation philosophy. Knowledge of underlying assumptions will certainly help in using the library. First of all, the library has to be flexible, event at the price of an increased number of routines and increased number of parameters. All the selection is left to users. The authors tried to anticipate all their expectations and nonstandard needs. This main assumption implies some of the following ones. The library does not supply any INPUT/OUTPUT routines. Any interaction will require the design of user interface. Since the library was meant, among other uses, as a kernel for various systems using rough set concepts, speed was one of the most important criteria. Another highly important requirement was to have a clear structure code. It was decided that only the lowest level functions should have a direct access to the system data. In consequence code is easy to be analyzed, debugged and modified. The RSL can be used like any other C library, leaving the problem of inputoutput to user, assuming he is also a C programmer. Any problem that takes rough sets as a model can be implemented. The RSL may also be of primary importance in testing the relative usefulness of the three different data structures proposed for the information system. The library allows the user to asses implied differences in memory consumption and computation time. One of the main objectives of the RSL was to provide a kernel for an interactive system ready to be used by an inexperienced computer user. There are many possible forms of application, yet we propose, as an example, to consider only two of them:
System control  Routines from this category enable a wide range of operations on an information system descriptor: storing and retrieving it from a disk, writing, reading and generating its fields. Data access  If a collection of queries supplied by the library is not satisfactory or, for any other reason, an application needs a direct access to data matrices (attributevalue table, discernibility matrix, reduced discernibility matrix), then such a facility is provided. Set handling  Sets are parameters and results of most routines. Since a set is not any default C data type the library provides a data type definition and a collection of routines for set manipulating Queries  Functions from this category answer a wide range of queries one can ask about an information system using notions from rough set theory. Among them: approximations, positive, regions, core and reducts. The Package contains also:
