An Editor with Generic Semantics for Formal Reasoning About Visual Notations, written in Common Lisp & CLIM
Another piece of Common Lisp & CLIM (Common Lisp Interface Manager) legacy software from my quarter century-old Lisp archive :-) It still works flawlessly in 2021. Tested with LispWorks 6.1 & CLIM on Ubuntu, 32bit Motif port.
The program was written in 1996, as part of my bachelor thesis ("Studienarbeit") at Bernd Neumann's Cognitive Systems Lab, University of Hamburg, Computer Science Department. The work was supervised by Volker Haarslev, who had the idea to define the visual syntax and semantics (of visual formalisms, or formally specified visual languages) by means of Description Logics.
A key innovative feature was its capability to classify constellations of graphical objects by taking advantage of the ABox realization / ABox instance classification service of the CLASSIC Description Logic system. The visual syntax of graphical elements and constellations of such elements could be defined by loading a CLASSIC knowledge base into the system. Such a knowledge base would contain definitions for "visual formalisms", e.g., syntax definitions for Petri Nets, State Machines, and ER diagrams, with definitions referring to geometric and topological defining characteristics (e.g., a Transition in a Petri Net is a Rectangle that is connected to Places, etc.) Topological spatial relationships played a key role in these definitions.
Originally, Gened was hooked up to the CLASSIC Description Logic
System. However, I have disabled that part of Gened in this release,
because I am not sure about the status of CLASSIC. I don't have the
sources, don't know how to get them, and don't want to spend the time
to get it going again. I might rather hook it up to our Racer OWL &
Description Logic Rreasoner at some
point. So, the classification capabilities of Gened are not available
/ enabled in this release, but you can try hooking it up to CLASSIC
yourself if you like - uncomment the knowledge
subsystem in the
gened-sysdcl.lisp
if you manage to find the CLASSIC sources.
More details about Gened can found in this paper, and on my homepage.
Please note that this was my first complex Common Lisp / CLIM program, so the code is not very good, and my Lisp programming capabilities have matured and advanced considerably since these early days.
The original Gened was developed with Allegro Common Lisp CLIM 2, running on Sun (Classic, IPX and Sun-01) workstations. This pictures are showing the original version; admittedly, the ACL version of CLIM looks a bit nicer than the LispWorks one (see below):
Today, in 2021, I am able to run this with LispWorks 6.1 on Ubuntu
Xenial, using the Motif32 port of CLIM. It doesn't look as great as
the original, but is mostly working fine (as long as you don't try to
resize the window; apparently, LispWorks CLIM has an issue with
satisfying the geometric layout constraints for sub-panes specified in
the :layout
section of the application-frame
; the ACL CLIM constraint
solver works much better):
Adjust the logical pathname translations in gened-sysdcl.lisp
to
match your environment. Then, simply do a load, and start the program
with (gened::gened)
.
Enjoy! Lisp programs are written for eternity - 25 years are not that much for a Common Lisp / CLIM program ;-)