This release corresponds to CPM Report: 004, entitled "Efficient Forward Chaining for Declarative Rules in a Multi-Agent Modelling Language", except that "any" and "random" (etc.) are still used to make arbitrary and random choices. A release browser is provided, to facilitate filing in bug fixes and enhancements between releases. It also enables release notes (the features and list of known bugs) of a release to be accessed on-line. Release browsers can be opened via menus in the SDML launcher. An extra simulation group named "newStandard" has been added. Filing in enhancements and fixes may cause clause definitions to be placed in this group. Type "character" has been defined, with predefined instances 'char-0' to 'char-255' inclusive, where the suffix corresponds to the ASCII value of the character. Syntactic sugar is provided, so that is equivalent to 'char-65', (carriage return) is equivalent to 'char-13', and so on. Primitive "asciiValue" can be used to convert between characters and numbers. Type "string" has also been defined. A string is a list, every element of which is a character. Syntactic sugar is provided, using double quotes. All the list primitives are applicable to strings, and the extra primitives "parsed", "printed" and "symbolString" are provided for conversions to/from strings. The type "variableFreeTerm" and subtypes "variableFreeClause" and "variableFreeList" have also been defined. Some primitives which previously had dubious logical properties due to arbitrary terms being permitted as arguments, have been changed to require variable free terms. Four temporary user interface primitives have been added, to ask questions to the user: "userConfirmed", "userMenuChoice", "userOrderedList" and "userRequestedString". These primitives will not be supported in later releases which provide full user interface facilities. The menu option "evaluate" in agent database browsers has been replaced by "evaluate object" and "evaluate meta" (if appropriate), and works in the same way as "evaluate pre/post/set-up". Similarly, "perform" has been replaced by "perform object" and "perform meta". The group file out facilities have been modified so that the three predefined groups "standard", "newStandard" and "sectorModel" are not filed out. The "file out hierarchy" in the simulation group hierarchy browser can now be used to file out all groups except for these. This facility can be used to backup all groups, or to copy them from one image to another. The following primitives have been renamed: not --> notKnown reverseOf --> reversed partition --> subList Rules in models and groups which have been filed out from old releases are automatically translated to use the renamed primitives when they are filed in.