
This directory contains the CCSL compiler version 2.1.1.


Instructions for installation are below, see INSTALLATION.


OVERVIEW

CCSL stands for Coalgebraic Class Specification Language. It is a
specification language that combines both algebraic and coalgebraic
elements. The CCSL compiler translates CCSL specifications into
higher-order logic either for PVS or for Isabelle/HOL. After
translation the theorem prover can be used to examine the
specification, built models, construct refinements, and much more.

The PVS back end has been tested and is considered to be complete.
The Isabelle back end is experimental in this version (and it is
not properly working). There are major changes planned for the
Isabelle back end in the future. 

CCSL has been developed in the LOOP project, for more information
about the LOOP project, see http://www.cs.kun.nl/~bart/LOOP/.



DOCUMENTATION

There is almost no documentation, sorry about that. 

The subdirectory doc/ contains the grammar of CCSL, see
grammar.{txt,html}. 

CCSL is described (and used) in some papers. These papers are
linked on the CCSL home page
(http://wwwtcs.inf.tu-dresden.de/~tews/ccsl/).

- general introduction into CCSL:

  J. Rothe, H. Tews, B. Jacobs, The Coalgebraic Class
  Specification Language CCSL. Journal of Universal Computer
  Science 7(2):175-193.


- coalgebraic refinement with a large CCSL example

  B. Jacobs, H. Tews, Assertional and Behavioural Refinement in
  Coalgebraic Specification. 


Currently the only complete description of CCSL is Chapter 4 of
my thesis draft. Contact me, if you want to have a look on that.




CONTENTS

Ccsl/		\
Common/		 >  compiler sources
Keywords/	/
Doc/		some documentation
README		this file
COPYING		the license



SYSTEM REQUIREMENTS

The CCSL compiler should run on any platform that is supported by
ocaml. That is, on any POSIX-compliant system as well as on MS
Windows and on the Macintosh, see
http://caml.inria.fr/ocaml/portability.html for details. I have
tested it on Linux (Debian and RedHat) and on SunOS 5.6. If you
compile it on any other platform, please drop me a note. 


INSTALLATION

1. you need:
   - GNU make, available at http://www.gnu.org/software/make/
   - ocaml, available at http://caml.inria.fr/ocaml/
     (ocaml version 3.x is sufficient)
   - either PVS or Isabelle/HOL,
	PVS is available at http://pvs.csl.sri.com/
	Isabelle is available at http://isabelle.in.tum.de/

   Strictly speaking neither PVS nor Isabelle/HOL are necessary
   to run the CCSL compiler. But the compiler will be pretty much
   useless without one of the theorem provers.

2. untar the sources

   zcat ccsl-2.1.1.tar.gz | tar -xf -

   or

   tar -xzf ccsl-2.1.1.tar.gz

3. (recommented) configure the sources 

   Edit the top section of ccsl-2.1.1/Makefile. 
   
   [The output of the CCSL compiler depends on a PVS library. The
    location of the library is hardwired in the output. To get it
    right, you can either configure the sources as explained in
    ccsl-2.1.1/Makefile or use the command line 
    switch -fixedpointlib.
   ]

4. compile

   cd ccsl-2.1.1
   make all

   This creates the CCSL compiler ccslc in subdirectory Ccsl. You
   can run it via

   ccslc -fixedpointlib <location of fixedpoints.pvs> ...

5. (optional) If your system is supported by the ocaml native
   code compiler you can built the optimised CCSL compiler
   ccslc.opt via

   make opt


6. (recommended) Install

   make install


   Installation creates the following files:

   in directory BINDIR

      ccslc
      ccslc.opt

   in directory LIBDIR/pvs

      fixedpoints.prf
      fixedpoints.pvs



BUGS / PROBLEMS / CONTACT

If you encounter problems during installation or have questions
about CCSL then please contact me at tews@tcs.inf.tu-dresden.de.


-----------------------------------------------------------------
Hendrik Tews     Department of Theoretical Computer Science
                 Dresden University of Technology, Germany

Telefon:   	 +49 351 463 38351
e-mail:    	 tews@tcs.inf.tu-dresden.de
www:       	 http://home.pages.de/~tews/
pgp key:         http://home.pages.de/~tews/pgpkey.asc
-----------------------------------------------------------------


**********************************************************************
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
** published by the Free Software Foundation; either version 2 of
** the License, or (at your option) any later version.
** 									      
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** General Public License in file COPYING in this or one of the
** parent directories for more details.
**********************************************************************

*** Local Variables: ***
*** mode: text ***
*** version-control: t ***
*** kept-new-versions: 5 ***
*** delete-old-versions: t ***
*** End: ***
