The CORAL deductive system. Raghu Ramakrishnan, Divesh Srivastava, S. Sudarshan and Praveen Seshadri. CORAL is a deductive system which supports a rich declarative language, and an interface to C++ which allows for a combination of declarative and imperative programming. The declarative query language supports general Horn clauses augmented with complex terms, set-grouping, aggregation, negation, and relations with tuples that contain (universally quantified) variables. A CORAL declarative program can be organized as a collection of interacting modules. The CORAL implementation supports a wide range of evaluation strategies, and automatically chooses an efficient evaluation strategy for each module in the program. In addition, users are permitted to guide query optimization, if desired, by selecting from among a wide range of control choices at the level of each module. The CORAL system provides imperative constructs such as update, insert and delete rules. CORAL also has an interface with C++, and users can program in a combination of declarative CORAL and C++ extended with CORAL primitives. A high degree of extensibility is provided by allowing C++ programmers to use the class structure of C++ to enhance the CORAL implementation. CORAL provides support for both main-memory and disk-resident data. Disk-resident data is supported using the EXODUS storage manager, which also provides transaction management in a client-server environment. The paper presents a comprehensive view of the system from broad design goals, the language, and the architecture of the system down to language interfaces and implementation details.