Did you know ... Search Documentation:
Pack logicmoo_cg -- test/prologPlusCG/NEWS.txt

Release notes for Prolog+CG

Release 2.0.11

  • This release is a bugfix release, fixing five bugs:
    • concOfCG(C,G) had an issue whereby if C was a free variable, the whole G would be unified with it, not the individual concepts of G. This has been fixed.
    • The following used to fail: eq(G, C-dummy->[MyConceptType]), at least when C was bound and G was free. An exception would be thrown, terminating the interpreter, and leaving the program "hanging". This has been fixed.
    • Sometimes, a cut would result in the same "hanging" behaviour, due to an exception being thrown. This has been fixed.
    • dif/2 used to have an issue whereby too much would be popped off the unification stack, thereby causing an exception and the same "hanging" behavior.
    • On Win32, when deploying an applet, the directory from which Prolog+CG attempted to get PPCGApplet.jar was not the right one. This has been fixed.
  • In addition, the rudiments of a test suite were added, including a command-line version of Prolog+CG. See the ChangeLog for how to use the command-line version. Hopefully this test suite will be developed into a full regression test suite some day.

Release 2.0.10

  • This release sees a major restructuring of the code and the directory structures.
  • The biggest change from a user-perspective is that the classpath has changed: It is no longer "." but "classes".
  • The default size when the program starts is now 800x600, and the main frame is maximized upon startup.
  • The debugger inside Prolog+CG now actually works.

Release 2.0.9

  • Bugfix: concat/3 had a bug whereby the second argument would be returned if the first argument was a free variable. Obviously, the first part of the string, not the second, ought to be returned, which it is now.
  • The manual has been completely redone in (PDF)LaTeX, with HTML being generated by latex2html. This means that there is now a "manual.pdf" in the root of the distribution.
  • The system of saving a compiled program to .obj files has been removed; now the program is always compiled rather than loaded from an .obj file. This was so as to save the hassle of fixing some annoying bugs. It simply was not an advantage any more, given today's fast computers and the advancement of the speed of the JVM.

Release 2.0.8 (April 6, 2005)

One bug was fixed:

  • Some built-in predicates, such as "show", "close", "maxComSubTypes", and "addInstance", had become unavailable. They are now available again.
  • Added two new built-in predicates and updated the manual accordingly: maxComSubTypes(Type1, Type2, ListOfTypes) and minComSuperTypes(Type1, Type2, ListOfTypes). If the type hierarchy is not a strict lattice, these can be useful. See the manual for more information on how they are defined.

Release 2.0.7 (April 6, 2005)

One set of bugs were fixed:

  • Fixed bugs in nl and clearConsole so that they do not cause premature stops in processing (i.e., an exception being thrown).

    Two feature-additions were made:

  • A new concat/3 operator was added. It takes two or three strings.
  • It is now possible to have 0 boxes in a PPCG applet. This is useful if you don't need any other input than something from buttons.

Release 2.0.6 (February 3, 2005)

This release sees a number of additions and changes:

  • PrologPlusCG can now be run as a web-based applet. See the manual for more information.
  • write/1 no longer emits a newline. Note that this makes your programs not backwards compatible if they use write.
  • There are three new built-in predicates: nl/0 (which emits a newline), writenl/1 (which writes its argument and emits a newline), and clearConsole/0 (which clears the console area).
  • write and writenl now treat string parameters specially, also when encapsulated in variables (but not in terms, CGs, concepts, or any other type). In particular, the beginning and ending "double quotes" are removed before printing. This should make it easier to communicate with the user, both in applets and in the usual applications.


    Ulrik Petersen Prolog+CG maintainer

Release 2.0.5 (October 16, 2004)

This release has a major bugfix and a feature addition.


The feature-addition is that concOfCG now performs variable-substition, just like branchOfCG. This means that you can do things like:

concOfCG([Proposition = P], _CG)

and expect P to be set.

This was done to solve the problem that when you do things like

branchOfCG([Proposition = P], _CG)

(which is valid, even if the first argument is not a branch), and _CG has a branch that says:

[Propositon = ...]-Relation->[Proposition = ...]

then you only get one of the propositions.

I do not believe that the correct way would be to return both propositions, since branchOfCG is meant to work on branches, not concepts. The addition of this feature for concOfCG solves the problem.


It used to be that built-ins such as branchOfCG would not return all solutions under certain circumstances. This has been fixed.

One way to trigger this was to attempt a match with the built-in against something that did not match (e.g., a CG that did not have such and such a branch). After that, no more matches could be generated with the same goal.

This would also sometimes cause the built-ins not to return more than one result.

This program would trigger it:

---------------- program begins -------------- // Type-hierarchy Universal > Physical. Physical > Process, Object. Process > Act. Act > Persuade, Speak, Eat. Object > Animal.

// Catalog of instances Animal = Wolf, Lamb.

// Graphs

// The wolf persuades the lamb. graph(gr1, [Animal: Wolf]<-agnt-[Persuade]-rcpt->[Animal: Lamb]).

// The lamb speaks to the wolf. graph(gr2, [Animal: Lamb]<-agnt-[Speak]-rcpt->[Animal: Wolf]).

// The wolf eats the lamb. graph(gr3, [Animal: Wolf]<-agnt-[Eat]-ptnt->[Animal: Lamb]).

// Wolf does something in which graph? // ERROR: gr3 does not appear. wolf(I) :- graph(I, G), branchOfCG([Animal : Wolf]<-agnt-[X], G).

---------------- program ends --------------

A few minor changes have been made in addition to this. See the ChangeLog for details.


Ulrik Petersen Prolog+CG maintainer

Release 2.0.4 (September 21, 2004)

This release has minor bugfixes:

  • variables that start with an underscore are now treated as such.
  • You can no longer have non-atoms in a type hierarchy rule or catalog-of-instances rule (e.g., before, you could have a variable, which was not good!)
  • PPCG now ignores carriage returns, meaning that you should no longer get problems with "error in line 1" just because you pressed return. This used to be a problem on Windows.
  • The caret in the console area is no longer repositioned every time you release the mouse. This should make it easier to select stuff with the mouse and copy it. This means that you should no longer need to hold down the mouse button while pressing "Ctrl-C" to copy.

Release 2.0.3 (July 16, 2004)

This release has one minor feature-enhancement:

You can now press Ctrl-C in the console area and put whatever is selected on the clipboard. Then you can paste it again with Ctrl-V. This is useful, e.g., when you want to run the same query over and over again.

You must select the piece of text you wish to copy, then, while holding down the mouse button, press Ctrl-C, then release the mouse button. You can then press Ctrl-V to paste what is on the clipboard.

Many thanks to Aldo de Moor for suggesting this change.


Ulrik Petersen Prolog+CG maintainer

Release 2.0.2 (July 8, 2004)

This is a bugfix release related to the manual. A number of missing files were added, and a number of broken links corrected.

In addition, some bugs were fixed in the HTMLFrame showing the manual. In particular:

1) moving the mouse over a link no longer instantly attempts to follow the link.

2) If for some reason an external URL cannot be loaded, this is now handled gracefully.

See ChangeLog for details.


Ulrik Petersen Prolog+CG maintainer

Release 2.0.1 (July 6, 2004)

This is the initial release of the Open Source version of Prolog+CG. Prof. Kabbaj, the original author of Prolog+CG, has graciously authorized me to release it as Open Source under the LGPL.

It is based on version 2.0 from August 2000, available from:


I, Ulrik Petersen, am the current maintainer. All bugreports and comments should go to me, not Prof. Kabbaj. Note that I cannot offer support for Prolog+CG. Instead, check out the resources at the website:


Note also that this is a legacy version, and that it is in maintenance mode, not development mode. Prof. Kabbaj is working on a new, better replacement, to be included in the Amine platform:


Please note: This software is in maintenance mode. This means that bugs will be fixed as time allows and as they are reported to the maintainer. However, evelopment of new features takes place in the new development branch for the Amine platform.

Changes over version 2.0:

  • Made it compile under Java 1.4.
  • Pretty-printed all Java sources.
  • Fixed bug: It used to be that you always had to select "New" after starting the program in order not to incur an error when compiling the program you just typed in. Now you don't need to.
  • Fixed an off-by-one error in the line-numbering when compiling: Error messages now report the correct line number, and not the correct number minus 1.
  • Fixed bug: Manual can now be shown from within the program, also on Unix platforms.
  • Fixed bug: Lower part of the split pane would sometimes not switch to query/console mode after a compile, when one clicked the mouse inside the lower part. It always does now.

    At the same time, the lower part is no longer switched when clicking the upper part.

    At the same time, the splitter of the split pane is set to the middle when one switches from console to compilation output. It also repositions to 3/4 of the size when one switches from compilation output to console. This was because Java 1.4 resized the panes such that the program text area had 0 height.

  • Removed "Windows | Clear text area", since it was buggy.
  • Added a "Go to line" menu-item to the "Edit" menu. This is handy when debugging, since you can jump to the line where the compiler had trouble.
  • Added a new Samples directory, called "AAU".
  • Changed the string "PROLOG+CG" to "PROLOG+CG 2.0" to differentiate it from the new version in Amine.
  • Updated the "About" box.
  • Converted all .gif files to .png due to patent restrictions.
  • Updated manual slightly You need Java 1.4 to run it.


    Ulrik Petersen Prolog+CG maintainer