The definition of CASL and some of its sublanguages has been finished [CoF98]. Moreover, a complete formal semantics of CASL [CoF99] has been developed in parallel with design of the language and indeed, the development of the semantics has given important feedback to the language design.
Now that design and semantics of CASL have been finished, it is essential to have a good tool support. Tools will be essential for the goal of CoFI to get CASL accepted in academic communities (in the short run), and, in the long run, in industry. This holds even stronger since CASL is a language with a formal semantics: many people believe that such a language cannot or will not be used in practice: "The best semantics will not win." [Lar99]
Since CASL was designed with the goal to subsume many previous frameworks, it has become a powerful and quite complex language. This complexity makes it harder to build tools covering the whole language.
In this work, we will show that it is possible to build tools for a complex language with strong semantics in a reasonable time. In order to achieve this, we have followed several guidelines:
We will discuss these guidelines, reporting how well they work in practice and which difficulties arise with them.
The paper is organized as follows:
Section 2 gives a brief overview over CASL and its semantics. Section 3 explains the general architecture of the Bremen HOL-CASL tool. In section 4, tool interoperability using a common interchange format is discussed. Section 5 describes the problems with parsing CASL's mixfix syntax. Section 6 recalls the encoding of CASL in higher-order logic from [MKK98], while section 7 reports our practical experiences when using this encoding to create an interface from CASL to Isabelle/HOL. Section 8 describes a way how to make the static analysis of CASL structured specifications independent of the underlying logic, which gives a generic tool that can be re-used for different logics. In section 9, some difficulties of encoding CASL structured specifications into Isabelle are discussed. Section 10 describes several user interfaces for HOL-CASL. Finally, section 11 contains conclusions and directions for future work.
This work is based on [MKK98], but considerably extends the work begun there.