next up previous index
Next: What Grace offers Up: Grace 1.0 User Previous: Grace 1.0 User

Prologue

I realised that I need some better debugging environment when I was trying to create a program to solve some quasigroup problems. The Prolog-style debugger was doing quite a good job when I wanted to concentrate on a particular predicate call, but it was hopelessly losing the global picture which is so crucial for constraint programs. I decided that instead of spending all my time figuring out what my program was currently doing, where it backtracked to and what values are stored in my variables, I might as well quickly set up a graphical display. Not surprisingly, after programming a graphical display I have found that there are many other features that could be added to make the debugging easier. As the time passed, the initially small program became bigger and bigger and it occurred to me that it is in fact general enough to be useful for everyone, not just to debug one particular program.

Then I have started to build a good interface to the various functions and to provide a simpler way of achieving the most frequent tasks which occur during program debugging. I realised that in fact the system can also be used during program development, because it imposes a simple structure on the program and on its data. Soon thereafter, fortunately, I also realised that if I kept on adding new features and functions, Grace will never be ready and no-one will ever be able to use it. The first version of Grace is the result of all these considerations, reflections and long hours over the laptop in various places in Europe (I had to travel a lot in the past year).

It is very likely that everyone who has tried to write some finite domain constraint logic programs has experienced similar problems like me, problems which are caused by the mismatch of the programming paradigm and the programming environment. Constraint programming is in its nature totally different from the classical algorithmic programming and it requires a different approach to both programming and debugging. Grace , the Graphical Constraint Environment, is a first step in this direction, it provides an environment for the development and debugging of finite domain constraint programs. In its version 1.0, Grace offers the user an active graphical display of data and program execution state, it provides various functions to control the search and it also has rudimentary facilities to support constraint program development. The future versions of Grace will provide more support for low-level debugging, like e.g. visualising constraint propagation, displaying selected constraints as active objects and also more support for program development.

This manual is a mixture of a user introduction, a reference manual and an index. We first briefly describe the main Grace features on a simple example, a detailed description of Grace execution follows next. Finally, all Grace windows are described in full detail. The Appendix contains the description of all Grace predicates, options and utility predicates.



next up previous index
Next: What Grace offers Up: Grace 1.0 User Previous: Grace 1.0 User



Micha Meier
Tue Jul 2 10:07:34 MET DST 1996