Skip to content

Latest commit

 

History

History
97 lines (70 loc) · 3.9 KB

README.md

File metadata and controls

97 lines (70 loc) · 3.9 KB

GenEd

An Editor with Generic Semantics for Formal Reasoning About Visual Notations, written in Common Lisp & CLIM

About

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):

gened-orig1

gened-orig2

gened-orig3

gened-orig4

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):

gened-new1

gened-new2

gened-new3

gened-new4

gened-new5

gened-new6

gened-new7

gened-new8

Loading / Usage

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 ;-)