Return-Path: <@bristol.ac.uk:jiwei@cs.bris.ac.uk> Received: from GLINDA.OZ.CS.CMU.EDU by A.GP.CS.CMU.EDU id aa05630; 16 May 94 13:58:52 EDT Received: from sun2.nsfnet-relay.ac.uk by GLINDA.OZ.CS.CMU.EDU id aa11072; 16 May 94 13:58:30 EDT Via: uk.ac.bristol; Mon, 16 May 1994 16:50:21 +0100 Received: from kukini.cs.bris.ac.uk by dir.bris.ac.uk with SMTP (PP) id <04461-24@dir.bris.ac.uk>; Mon, 16 May 1994 16:49:51 +0100 Received: from lapu by kukini.compsci.bristol.ac.uk id aa10490; 16 May 94 15:48 GMT To: Mark_Kantrowitz@GLINDA.OZ.CS.CMU.EDU Subject: Goedel release 1.4 now available Date: Mon, 16 May 94 15:45:28 GMT From: Jiwei Wang Original-Sender: jiwei@compsci.bristol.ac.uk Message-ID: <9405161545.aa21983@uk.ac.bristol.compsci.lapu> The Goedel Programming Language ------------------------------- Version 1.4 of the Goedel system is now available. Details on how it can be obtained are given below. Goedel is a declarative, general-purpose programming language in the family of logic programming languages. It is a strongly typed language, the type system being based on many-sorted logic with parametric polymorphism. It has a module system. Goedel supports infinite precision integers, infinite precision rationals, and also floating-point numbers. It can solve constraints over finite domains of integers and also linear rational constraints. It supports processing of finite sets. It also has a flexible computation rule and a pruning operator which generalises the commit of the concurrent logic programming languages. Considerable emphasis is placed on Goedel's meta- logical facilities which provide significant support for meta-programs that do analysis, transformation, compilation, verification, debugging, and so on. This release contains: (a) the Goedel system, (b) the SAGE partial evaluator for Goedel, (c) a user manual, and (d) around 50 (mostly small) example programs. A book on the language is now available: The Goedel Programming Language, P.M. Hill & J.W. Lloyd, MIT Press, 1994, ISBN 0-262-08229-2. The book is divided into two parts. The first part gives an informal overview of the language and includes example programs. The second part contains a definition of the syntax and semantics of the language. Goedel should be of particular interest to four groups: (a) Those doing research in program transformation, program analysis, debugging, and a wide range of other meta-programming tasks. Goedel provides significant advantages for such tasks since it is much more declarative than Prolog, for example, and also a great deal of effort has been put into providing special support for meta-programming. Goedel makes possible advanced software engineering tools such as declarative debuggers and compiler generators. (b) Those doing research in parallel implementations of logic programming languages. The declarative nature of Goedel greatly eases the task of building a parallel implementation of the language (compared to Prolog, for example, whose non-logical facilities cause serious difficulties for parallel implementations) and offers substantial scope for parallelization in such implementations. (c) Those teaching logic programming. Goedel fits much better than Prolog, for example, into the undergraduate and graduate curricula since it has a type and module system similar to other commonly used teaching langauges such as Miranda and Modula-2. Also most of the problematical non-logical predicates of Prolog simply aren't present in Goedel (they are replaced by declarative counterparts) and so the cause of much confusion and difficulty is avoided. (d) Those working in the theory of logic programming. There has always been a large gap between the theory of logic programming (as in "Foundations of Logic Programming", for example) and the much more complex and unsatisfactory semantics of practical logic programming languages, such as Prolog. Goedel significantly narrows this semantic gap. This means that theoreticians can apply their "pure" theories of program transformation, program analysis, etc., more or less directly to Goedel and do not have to be concerned with complications of extending their theories to cope with the many non-logical aspects of languages such as Prolog. This release provides a (substantial) subset of the language. The remainder of the implementation is expected to be completed over the next year or so. SICStus Prolog version 2.1 #6 (or later) is required to compile the Goedel system. As an alternative for those who do not have SICStus Prolog, a run-time system is provided which gives a version that runs on a SPARCstation. How to obtain Goedel -------------------- The system is available by anonymous ftp. The ftp sites are ftp.cs.kuleuven.ac.be (134.58.41.2) and ftp.cs.bris.ac.uk (137.222.102.102). At the Leuven site, the file README in the directory /pub/logic-prgm/goedel gives further instructions on how to obtain the system. For the Bristol site, the README file is in the directory /goedel. If you have not already done so, please register when you obtain the system. This is done by sending a message consisting of your name, institution, and address to: goedel@compsci.bristol.ac.uk. Goedel 1.4 Mon Apr 25 11:30:45 BST 1994 ======================================= New features: - SAGE (Self-Applicable Goedel partial Evaluator) by Corin Gurr included - runtime version available for Linux on IBM-PC compatibles - floundering checker added - floundering messages improved - Goedel strings are allowed to be arbitrary length, due to an improvement in SICStus 2.1 #9. - new system commands ;save File Goal. - Save the state into File to be restored to run Goal ;checking. - Switch on various checkings (default) ;nochecking. - Switch off all the checkings - system command ';unix {"Command"}' renamed to ';shell {"Command"}' - interface to Prolog (and thus to C) documented - 'r-redo' command added to the tracer - IntegerString/2 in Numbers module implemented - support for new predicates ProgramCompile/2 and ProgramDecompile/1 in ProgramsIO module FlockCompile/2 and FlockDecompile/2 in FlocksIO module - Makefile now aware of SICStus fastcode/compactcode availability - Statistics module included (can be found in /lib) which provides timing and other system information Bug fixes in: - type checking with Numbers - 's-skip' command in the tracer - set manipulations - flock-compile an identifier immediately followed by a full stop, e.g. 'A.' - LastSubstring("ABC", x, "C") --- Regards. Jiwei Wang Department of Computer Science University of Bristol jiwei@compsci.bristol.ac.uk Queen's Building, University Walk UK + (0)272-303030 ext 3568 Bristol, U.K. BS8 1TR