Newsgroups: comp.lang.visual,comp.ai,comp.databases
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!howland.reston.ans.net!pipex!uunet!morgan.com!s5!is1.is.morgan.com!is.morgan.com!mcintyre
From: andy@i3.informatik.rwth-aachen.de (Andreas Schuerr)
Subject: Visual Graph Grammar Programming Environment PROGRES (V 6.3)
Content-Type: text/plain; charset=US-ASCII
Message-ID: <1995Jan30.051334.28929@is.morgan.com>
Keywords: Rule-Based System, Visual Data(base) Query/Manipulation Language
Lines: 468
Sender: mcintyre@is.morgan.com (David McIntyre)
Nntp-Posting-Host: bwit108
Reply-To: andy@i3.informatik.rwth-aachen.de
Content-Transfer-Encoding: 7bit
Organization: Lehrstuhl fuer Informatik III, RWTH Aachen, Aachen, Germany
Mime-Version: 1.0
Date: Fri, 27 Jan 1995 15:13:40 GMT
Return-Path: <news@urmel.informatik.rwth-aachen.de>
Approved: mcintyre@morgan.com (comp.lang.visual)
Lines: 469
Xref: glinda.oz.cs.cmu.edu comp.lang.visual:3291 comp.ai:26887 comp.databases:42475

--------------------------------------------------------------------
|                                                                  |
| PROGRES - An integrated environment and very high level language |
|           for PROgrammed Graph Rewriting Systems.                |
|           RESEARCH PROTOTYPE                                     |
|                                                                  |
| Copyright (C) 1991-95  Lehrstuhl Informatik III, RWTH Aachen     |
|                                                                  |
| Version      :  RWTH 6.3                                         |
| Release Date :  January 1995                                     |
|                                                                  |
| Compiled, linked, and tested for Sun4 (SunOS 4.1.3) and          |
| X11R4/X11R5 only (Solaris version will be released soon).        |
|                                                                  |
| Available via ftp from: ftp-i3.informatik.rwth-aachen.de         |
|           in directory: pub/PROGRES                              |
|               and from: ftp.qucis.queensu.ca                     |
|           in directory: pub/progres                              |
|                                                                  |
| HTML version of this file:                                       |
|  http://www-i3.informatik.rwth-aachen.de/research/progres.html   |
|                                                                  |
--------------------------------------------------------------------


What is PROGRES?
================

- Are you implementing complex data structures with lots of
  derived information, complex querying and update operations? 

- Did you ever have problems with dangling references in
  C(++) programs or with inconsistent pairs of references?

- Do you prefer "visual programming" instead of writing
  long and obfuscated programs in state of the art
  textual programming languages?

- Do you have to solve backtracking problems on complex
  data structures?

Then, please have a look onto our specification and rapid
prototyping language PROGRES and its integrated programming
environment. The language has a formally defined semantics based
on 
	"PROgrammed Graph REwriting Systems".

It supports the following programming paradigms and may
be used for the following purposes:

1) Structurally object-oriented specification of attributed graph
   structures with multiple inheritance hierarchies and types of types
   (for parametric polymorphy).

2) Declarative/relational specification of derived attributes, node
   sets, and binary relationships (directed edges).

3) Rule-oriented/visual specification of parameterized graph queries
   and graph rewrite rules with complex application conditions.

4) Nondeterministic & imperative programming of composite graph
   transformations (with built-in backtracking and cancelling
   arbitrary sequences of failing graph modifications).

Therefore, PROGRES may be used as

- a very high level programming language for implementing abstract
  data types with a graph-like internal structure,

- a visual database programming language for the graph-oriented
  database system GRAS (which is available as free software under the
  GNU license conditions), and

- a rule-oriented language for rapid prototyping nondeterministically
  specified data/rule base transformations.

Furthermore, PROGRES is an almost statically typed language which
additionally offers "down casting" operators for runtime checked type
casting/conversion (in order to avoid severe restrictions concerning
the language's expressiveness).

Finally, you should notice that PROGRES has nothing in common with
the commercial database system (language) PROGRESS or the vacuum 
cleaner PROGRESS, or any other product which is called "PROGRESS"
instead of "PROGRES" (we use the French version of the German word
"Fortschritt" in order to avoid any copyright problems and as a
rememberance of a time, where Aachen was the capital of Carolus
Magnus, the king of a kind of European Community Empire about
1200 years ago).


What is the PROGRES environment?
================================

The PROGRES environment consists of the following integrated set of
tools:

1) a mixed textual/graphical syntax-directed editor (with an
   incrementally working table-driven pretty printer),

2) an integrated (micro-)emacs-like text editor (with an
   incrementally working parser),

3) an incrementally working type-checker which detects all
   inconsistencies with respect to the PROGRES language's static
   semantics (using about 300 formally defined type checking rules),

5) a text-oriented specification browser for finding declarations,
   applied occurrences of identifiers, ... ,

4) an ER-like (graphical) graph schema editor which may be used
   in parallel to the text-oriented graph schema editor,

6) an integrated interpreter which translates PROGRES specifications
   into intermediate code and executes this code afterwards,

7) a graph browser for arbitrary graphs stored in the GRAS database
   (a modified instantiation of the system EDGE of the University of
   Karlsruhe),

8) a cross-compiler from PROGRES to Modula-2 code and C code which
   uses the procedural interface of the GRAS database system, and

9) a tk/tcl based interface generator as a front-end to the 
   generated C source code.

Both the cross-compiler and the interface generator are still
incomplete and, therefore, not a proper part of the current release
(you may already trigger code generation but well-documented versions
of the underlying libraries are not yet available).


Software Packages in PROGRES!
=============================

Note that the PROGRES environment is built on top of the
following major (foreign) subcomponents: 

1) The non-standard database system GRAS from our department which is
   available as free software via ftp from
   ftp-i3.informatik.rwth-aachen.de in pub/GRAS (as a single process
   version only; the internally used multi-client/multi-server
   realization will be released soon).

2) The generic graph browser EDGE from the University of Karlsruhe
   which is either available via ftp from
   ftp.informatik.uni-karlsruhe.de in /pub/graphics (original version)
   or from ftp-i3.informatik.rwth-aachen.de in pub/GRAS
   (GRAS-adapted version being part of the GRAS release).

3) The Interviews user interface toolkit from the University of
   Stanford which is available as free software via ftp from
   interviews.stanford.edu and uses either X11R4/5 or OpenWindows3.

4) The program "hglayout" for layout of hierarchical graphs which was
   developed at the University of Toronto as part of the Graphite
   project (cf. /Noik93/ or contact Noik@db.toronto.edu).


Documentation (what's that)?
============================

Up to now the following documents are available which either describe
the PROGRES language or its environment:

1) The complete and (in)formal report for PROGRES language, version
   1.1: Printed book: /Schuerr91b/, see list of references (in
   German).

2) Informal description of all language extensions/modifications from
   version 1.1 to version 6.2:
   Postscript-File: man/PROGRES-Nachtrag-94.ps (in German).

3) A guided tour through PROGRES including INSTALLATION guide lines:
   ASCII-Text-File: man/GUIDED_TOUR.

4) A list of frequently asked questions:
   ASCII-Text-File: man/FAQ (under preparation).

5) A list of known bugs:
   ASCII-Text-File: man/BUGS.

6) A list of recently made extensions of the PROGRES environnment:
   ASCII-Text-File: CHANGES-TO-6.3.

7) A description how to convert old specifications in version 6.3
   compatible ones:
   ASCII-Text-File: CONVERT-TO-6.3.

8) Online help texts for all functions of the PROGRES environment:
   ASCII-Text-Files in directory: data/messages.
   (do not try to read the plain text version but use the PROGRES
    environment to read these explanations).

9) All papers and technical reports mentioned in the list of
   references below.


The PROGRES release!
====================

The main tar-file of the release contains the following files and
directories:

	README		this file
        .<files>	a number of examples for window manager
			configuration files etc.
	bin		for all executable files (not graph browser)
	data		for all user modifiable data and examples
        edgb		for all graph browser executables etc.
        etc		a number of additional configuration files
	import		sources and o-files of external type def.
	lib		for (dynamic) libraries (Interviews etc.)
	man		for information files

All these files and subdirectories are available via anonymous ftp.

ATTENTION: Please don't expect a commercial product which runs
like the hell, is free of errors, and computes always the correct
result for complex arithmetic formulas. It's just an alpha release
of a research prototype, but we will try to help you in the case of
any troubles as fast as possible and to reinstall bug fixes on a
regular basis.


How to install PROGRES?
=======================

You have to start with transfering the tar-file 

	progres.<VersionNo>.tar.gz

to your site. Currently, it is only avaible via anonymous
ftp from 

	ftp-i3.informatik.rwth-aachen.de in pub/PROGRES
        (site location: Aachen, North-Rhine-Westfalia, Germany)

and from

	ftp.qucis.queensu.ca in pub/progres 
        (site location: Kingston, Ontario, Canada).

The following instructions create a new directory "progres" with the
above mentioned files and subdirectories:

	gunzip progres.<VersionNo>.tar.gz
	tar -pxvf progres.<VersionNo>.tar

In the case of more than one user of the PROGRES environment at your
site please create ONE account or directory containing all delivered
files with read/execute permissions for all PROGRES users.

Every user of the PROGRES environment should use an adapted version
of the delivered script ".progres.cshrc" to initialize required
environment variables appropriately (especially the variable
$PROGRESROOT, which should point to the root of the progres directory
tree at your site).

Furthermore, you have to install the underlying database system
GRAS by simply creating a file with needed "trusted host information".
You have the following options:

1) All PROGRES processes are running on the same workstation (you
   may get swap space problems resulting in heap overflow or
   segmentation fault messages): 
   In that case you have to check whether starting remote shells
   using the symbolic name "localhost" is possible in your account.
   Test this using the command

	rsh localhost echo "anything"

   which should simply print "anything" on standard output and not
   an error message! If returning an error message then insert an
   appropriate line into your $HOME/.rhosts file.
   
2) All PROGRES users on your site may start PROGRES processes on 
   any workstation out of a set of "trusted" hosts:
   In that case create an appropriate file ghosts in directory
   $PROGRESROOT/etc (cf. file $PROGRESROOT/etc/README), which
   contains the list of permissible workstations.

3) A PROGRES user has specific preferences where to start PROGRES
   database system processes (and where not):
   In that case create an own directory $HOME/progresdata/etc with a
   private version of the file ghosts.

4) Test the installation of the database system GRAS by calling
   first 

	$PROGRESROOT/bin/StartGanimed 

   (starts the central control process of GRAS) and then 

	$PROGRESROOT/bin/StopGanimed.

5) Finally, start the PROGRES environment itself by calling
  the script 

	$PROGRESROOT/bin/Progres.

For more detailed information please read the document GUIDED_TOUR
in $PROGRESROOT/man.


References:
===========

Refer to the following publications for further info about GRAS, PROGRES, and 
related topics:

/BL85/          Brandes T., Lewerentz C.: A Non-Standard Data Base System
                within a Software Development Environment. In Proc. of
                the Workshop on Software Engineering Environments for
                Programming-in-the- Large, pp 113-121, Cape Cod, June
                1985

/ELNSS92/       Engels G., Lewerentz C., Nagl M., Schaefer W., Schuerr A.:
                Building Integrated Software Development Environments
                Part I: Tool Specification. In acm Transactions on
                Software Engineering and Methodology, vol. 1, no. 2,
                pp. 135-167

/KSW92/*        Kiesel N., Schuerr A., Westfechtel B.: Design and Evaluation
                of GRAS, a Graph-Oriented Database System for
                Engineering Applications. In Lee H.Y., Reid Th.F.,
                Jarzabek St. (eds.): CASE '93 Proc. 6th Int Workshop
                on Computer-Aided Software Engineering, IEEE Computer
                Society Press (1993), pp 272-286, also: Technical
                Report AIB 92-44, RWTH Aachen, Germany (1992)
 
/Lefering94/*	Lefering M.: Development of Incremental Integration Tools 
                Using Formal Specifications, Technical Report AIB 94-02, 
                RWTH Aachen, Germany (1994)

/LS88/          Lewerentz C., Schuerr A.: GRAS, a Management System for
                Graph-Like Documents. In Proceedings of the 3rd
                International Conference on Data and Knowledge Bases,
                Morgan Kaufmann Publ. Inc. (1988), pp 19-31

/Nagl89/        Nagl M.(ed.): Proc. WG'89 Workshop on Graphtheoretic Concepts
                in Computer Science, LNCS 411, Springer Verlag (1989)

/Newbery91/     Newbery Paulisch F.: The Design of an Extendible Graph
                Editor, Dissertation, University of Karlsruhe, Germany
                LNCS 704, Springer Verlag (1991)

/Noik93/        Noik E.G.: Graphite: A Suite of Hygraph Visualization
                Utilities, TR CSRI-285, University of Toronto (1993)

/NS91/          Nagl M., Schuerr A.: A Specification Environment for Graph
                Grammars, in Proc. 4th Int. Workshop on Graph-Grammars
                and Their Application to Computer Science, LNCS 532,
                Springer Verlag (1991), pp 599-609

/Schuerr89/     Schuerr A.: Introduction to PROGRES, an Attribute Graph
                Grammar Based Specification Language, in: /Nagl89/, pp
                151-165

/Schuerr91a/*   Schuerr A.: PROGRES: A VHL-Language Based on Graph
                Grammars, in Proc. 4th Int. Workshop on Graph-Grammars
                and Their Application to Computer Science, LNCS 532,
                Springer Verlag (1991), pp 641-659, also: Technical
                Report AIB 90-16, RWTH Aachen, Germany (1990)

/Schuerr91b/    Schuerr A.: Operational Specifications with Programmed
                Graph Rewriting Systems (in German), Dissertation,
                RWTH Aachen, Deutscher Universitaetsverlag (1991)

/Schuerr94a/    Schuerr A.: Logic Based Structure Rewriting Systems, in
                Proc.  Dagstuhl-Seminar 9301 on Graph Transformation
                in Computer Science, LNCS 776, Springer Verlag (1994),
                pp 341-357

/Schuerr94b/*	Schuerr A.: PROGRES, A Visual Language and Environment for
		PROgramming with Graph REwrite Systems, Technical Report
		AIB 94-11, RWTH Aachen, Germany (1994)

/Schuerr94c/*	Schuerr A.: Specification of Graph Translators with Triple
		Graph Grammars, in Proc. WG 93, Int. Workshop on Graph-
 		Theoretic Concepts in Computer Science, LNCS ?, Springer
		Verlag, also: Technical Report AIB 94-12, RWTH Aachen,
		Germany (1994)

/Schuerr94d/*	Schuerr A.:  Logic Based Programmed Structure Rewriting
		Systems, Technical Report AIB 94-13, RWTH Aachen, Germany (1994)

/Schuerr94e/    Schuerr A.: Rapid Programming with Graph Rewrite Rules.
                In USENIX Symposium Proc. on Very High Level Languages
                (VHLL), USENIX Association (1994), pp. 83-100
 
/SW92/          Schuerr A., Westfechtel B.: Graph Grammars and Graph Rewriting
                Systems (in German), Course Book, Technical Report AIB
                92-15, RWTH Aachen, Germany (1992)

/SZ91/*         Schuerr A., Zuendorf A.: Nondeterministic Control Structures
		for Graph Rewriting Systems, in Proc. WG'91 Workshop in Graph-
                theoretic Concepts in Computer Science, LNCS 570, Springer 
                Verlag (1992), pp 48-62, also: Technical Report AIB 91-17,
		RWTH Aachen, Germany (1991)

/Westfe89/      Westfechtel B.: Extension of a Graph Storage for Software
                Documents with Primitives for Undo/Redo and Revision
                Control, Technical Report AIB Nr. 89-8, RWTH Aachen,
                Germany (1989)

/Westfe91/      Westfechtel B.: Revision Control in an Integrated Software
                Development Environment (in German), Dissertation,
                RWTH Aachen, Informatik-Fachberichte 280, Springer
                Verlag (1991)

/Zuendorf89/    Zuendorf A.: Control Structures for the Specification
                Language PROGRES (in German), Diploma Thesis, RWTH
                Aachen, Germany (1989)

/Zuendorf92/ *  Zuendorf A.: Implementation of the Imperative/Rule
                Based Language PROGRES, Technical Report AIB 92-38,
                RWTH Aachen, Germany (1992)

/Zuendorf93/ *  Zuendorf A.: A Heuristic Solution for the (Sub-) Graph
                Isomorphism Problem in Executing PROGRES, Technical
                Report AIB 93-5, RWTH Aachen, Germany (1993)

* : All reports marked with an asterisk are available via anonymous
    ftp from ftp.informatik.rwth-aachen.de in the directory
    /pub/reports/<year> under the file name <reportno>.ps.gz.


LAST REMARKS!
=============

This release of the PROGRES environment consists of binary code
only for SUN 4 workstations. The source code will be made available
upon request under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
But note that a large number of different free software libraries,
compilers, and generator tools have been used for producing the
final binary code (which must be available at your site for making
any "real" source code modifications).

This release of the PROGRES environment's binary code (and optionally
the complete source code) 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
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

In case of any troubles please contact 

    Dr. Andy Schuerr (or Andreas Winter, Albert Zuendorf)
    Lehrstuhl fuer Informatik III,
    University of Technology Aachen (RWTH Aachen),
    Ahornstr. 55,
    D-52074 Aachen

Email to

    andy@i3.informatik.rwth-aachen.de
    winter@i3.informatik.rwth-aachen.de
    albert@i3.informatik.rwth-aachen.de





