« А. П. Частиков Т. А. Гаврилова Д. Л.Белов РАЗРАБОТКА ЭКСПЕРТНЫХ СИСТЕМ. СРЕДА CLIPS Санкт-Петербург «БХВ-Петербург» 2003 ...»
Команда mem-used предназначена для определения объема памяти, используемой системой. Команда возвращает целое число, равное количеству байтов, используемых CLIPS в данный момент. Это число не включает в себя служебную память, необходимую операционной системе для управления процессом функционирования программы.
Определение 16.83. Команда mem-used
(mem-used)
С помощью команды mem-requests пользователь может определить число запросов, сделанных CLIPS к операционной системе для выделения дополнительной оперативной памяти.
Определение 16.84. Команда mem-requests
(mem-requests)
Использование команды release-mem позволяет системе возвращать освободившуюся память операционной системе. Это может помочь операционной системе более эффективно управлять свободной памятью. Обычно команда вызывается автоматически, в случае если для выполнения текущих задач CLIPS не нуждается в большом количестве памяти. Данная команда рекомендуется только опытным программистам, точно оценивающим потребности системы, т. к. чрезмерное освобождение памяти может отрицательно сказаться на скорости работы системы. После выполнения процедуры освобождения памяти команда release-mem возвращает объем освобожденной памяти в байтах.
Определение 16.85. Команда release-mem
(release-mem)
Команда conserve-mem предназначена для включения и выключения режима экономии памяти.
Определение 16.86. Команда conserve-mem
(conserve-mem on | off)
Экономия памяти осуществляется за счет неиспользования определений конструкторов, необходимых для вывода в диалоговое окно (например, с помощью команд ppdefrule, ppdeftemplate и т. д.). Это помогает сильно экономить память в достаточно больших системах. Включение данного режима следует выполнить до загрузки конструкторов в систему.
ЧАСТЬ VI.Приложения.
Приложение 1. Основные БНФ-определения
Приложение 2. Список основных сообщений об
ошибках системы CLIPS.
Приложение 3. Список основных предупреждений
системы CLIPS
Приложение 4. Зарезервированные имена CLIPS
Приложение 5. Глоссарий
ПРИЛОЖЕНИЕ1. Основные БНФ-определения
В данном приложении собраны БНФ-определения наиболее важных определений и конструкторов среды CLIPS.
Определение П1.1. Представление целого числа
<целое> ::=[+ -] <цифра>+
<цифра> ::=0123456789
Определение П1.2. Представление вещественного числа
<вещественное>: := <целое> <экспонента> |
<целое>. [экспонента] |
<беззнаковое-целое> [экспонента] |
<целое>. <беззнаковое-целое> [экспонента]
<беззнаковое-целое> : : = <цифра>+
<экспонента>: := е | Е <целое>
Определение П1.3. Упорядоченный факт
( данное_типа_symbol [ поле ] * )
Определение П1.4. Синтаксис конструктора deftemplate
(deftemplate <имя-шаблона> [<необязательные-комментарии>]
[<определение-слота>*])
<определение-слота> ::= <определение-простого-слота>
<определение-составного-слота
<определение-простого-слота> ::= (slot <имя-поля>
<атрибуты-шаблона>)
<определение-составного-слота> ::= (multislot <имя-поля>
<атрибуты-шаблона>)
<атрибуты-шаблона> ::= <атрибут-значение-по-умолчанию>|
<атрибут-ограничения>
<атрибут-значение-по-умолчанию> ::= (default ?DERIVE|?NONE |
<Выражение>)|
(default-dynamic <Выражение>)
Определение П1.5. Синтаксис конструктора deffacts
(deffacts <имя-списка-фактов> [<необязательные-комментарии>]
[<факт>*])
Определение П1.6. Предопределенные шаблоны и факты
(deftemplate initial-fact)
(deffacts initial-fact
(initial-fact))
Определение П1.7. Синтаксис конструктора defrule
(defrule
<имя-правила>
[<комментарии>]
[<определение-свойства-правила>]
<предпосьшки > ; левая часть правила
=>
<следствие> ; правая часть правила
)
Определение П1.8. Синтаксис свойств правил
<определение-свойства-правила> ::= (declare <свойство-правила>)
<свойство-правила> ::= (salience <целочисленное выражение>)
(auto-focus TRUE|FALSE)
Определение П1.9. Синтаксис условного элемента
<условный-элемент> ::= <pattern-CE>
<assigned-pattern-CE> |
<not-CE> |
<and-CE> |
<or-CE>
<logical-CE>
<test-CE> |
<exists-CE>
<forall-CE>
Определение П1.10. Синтаксис символьных ограничений для неупорядоченного факта
(<ограничение-1>... <ограничение-n>)
Определение П1.11. Синтаксис символьных ограничений для шаблона
(<имя-шаблона > (<имя-слота-1> <ограничение-1>)
...
(<имя-слота-n> <ограничение-n>))
Определение П1.12. Синтаксис связывающих ограничений
<элемент-1>& <элемент-2>... & элемент -n>
<элемент-1> <элемент-2>... | <элемент -n>
~ <элемент>
Определение П1.13. Синтаксис предикатного ограничения
:<вызов-функции>
Определение П 1.14. Синтаксис ограничения, возвращающего значение
=<вызов-функции>
Определение П 1.15. Синтаксис понятия "элемент"
<элемент> ::= <константа>
<простая-переменная>
<составная-переменная>|
:<вызов-функции>
=<вызов-функции>
Определение П1.16. Синтаксис ограничений
<ограничение> ::= <символьное-ограничение >
? |
$?
<связанное-ограничение>
<связанное-ограничение> ::= <простое-ограничение>
<простое-ограничение>&<связанное-ограничение>
<простое-ограничение> | <связанное-ограничение>
<простое-ограничение> ::= <элемент>|~ <элемент>
<элемент> ::= <константа>|
<простая-переменная>
<составная-переменная>
Определение П1.17. Синтаксис образцов объектов
<образец объекта> ::= (object <атрибуты-ограничения>)
<атрибуты-ограничения> ::= (is-a <ограничение>)
(name <ограничение>)
(slot <ограничение>)
Определение П1.18. Синтаксис адреса образца
<адрес-образца> ::= ?<имя-переменной> <- <образец>
Определение П1.19. Синтаксис условного элемента test
<ycлoвный-элeмeнт-test > :: = (test <вызов-функиии>)
Определение П1.20. Синтаксис условного элемента or
<условный-элемент-ог > :: = (or <условный-элемент>+)
Определение П1.21. Синтаксис условного элемента and
<условный –элемент- and> :: =(and <условный элемент>+)
Определение П 1.22. Синтаксис условного элемента not
<ycлoвный-элeмeнт-not> ::= (not <условный-элемент>)
Определение П 1.23. Синтаксис условного элемента exists
<yсловный-элемент-exists> :: = (exists <условный-элемент>+)
Определение П 1.24. Синтаксис условного элемента forall
<условный-элемент-forall> ::= (forall <условный-элемент>
<условный-элемент>+)
Определение П1.25. Синтаксис условного элемента logical
<условный-элемент-1ogiса1> ::= (logical <условный-элемент>+)
Определение П 1.26. Синтаксис предопределенного факта и объекта
(initial-fact)
(object (is-a INITIAL-OBJECT) (name [initial-object]))
Определение П 1.27. Синтаксис конструктора defglobal
(defglobal [<имя-модуля>] <определение-переменной>*)
<определение-переменной> ::= <имя-переменной> = <выражение>
<имя-переменной> ::= ?*<значение-типа-зутЬо1>*
Определение П 1.28. Синтаксис конструктора def function
(deffunction <имя-функции>
[<комментарии>]
<обязательные-параметры>
[<групповой-параметр>] <действия>)
<обязательные-параметры> ::= <выражение-простое-поле>
<групповой-параметр> ::= <выражение-составное-поле>
Определение П1.29. Синтаксис конструктора defgeneriс
(defgeneric <имя-функции> [комментарии])
Определение П1.30. Синтаксис конструктора defmethod
(defmethod <имя-функции>
[<индекс>]
[<комментарии>]
(<ограничения-параметра>*
[<групповой-параметр>])
<действие>*)
<ограничения-параметров> ::= <простая-переменная>
(<простая-переменная>
<ограничение-по-типу>*
[<ограничение-по-запросу>])
<групповой-параметр> ::= <составная-переменная>
(<составная-переменная>
<ограничение-по-типу>*
[<ограничение-по-запросу >])
<ограничение-по-типу> ::= <имя-класса>
<ограничение-по-запросу> ::= <глобальная-переменная> |
<вызов-функции>
Определение П1.31. Синтаксис конструктора defclass
(defclass <имя-класса> [<комментарии>]
(is-a <список-суперклассов>+)
[<роль-класса>]
[<активность~класса >]
<слот>*
<объявление-обработчика-сообщений>*)
<роль-класса> ::= (role concrete | abstract)
<активность-класса> ::= (pattern-match reactive I non-reactive)
<слот> ::= (slot <имя> <грани>*) |
(single-slot <имя> <грани>*) |
(multislot <имя> <грани>*)
<грань> ::= < значение-по-умолчанию > |
<грань-хранения> |<грань-доступа> |
<грань-распространения>
<грань-источника>
<грань-сопоставления-образцов> |
<грань-видимости> |
<грань-создания-аксессоров> |
<грань-переопределения-сообщений> |
<ограничения-атрибутов>
<значение-по-умолчанию> ::=(default ?DERIVE | ?NONE |
<выражение>*) |
(default-dynamic <выражение>*)
<грань-хранения> ::=(storage local | shared)
<грань-доступа> ::=(access read-write | read-only initialize-only)
<грань-распространения> ::=(propagation inherit no-inherit)
<грань-источника> ::=(source exclusive | composite)
<грань-сопоставления-образцов> ::=(pattern-match reactive | non-reactive)
<грань-видимости> ::=(visibility private public)
<грань-создания-аксессоров> ::=(create-accessor ?NONE | read | write| read – write)
<грань-переопределения-сообщений>::=(override-message ?DEFAULT | <имя-сообщения>)
<объявление-обработчика-сообщений>::=(message-handler <имя-обработчика> [тип-обработчика])
< тип-обработчика > ::=primaryaroundbeforeafter
Определение П 1.32. Синтаксис конструктора defmessage-handler
defmessage-handler <имя-класса>
<имя-сообщения>
[<тип-обработчика>]
[<комментарии>]
(<обязательные-параметры>
[<групповой-параметр>])
<действия>)
< тип-обработчика > ::= aroundbefore primaryafter
<обязательный-параметр>::=<простое-значение>
<групповой-параметр>::=<составное-значение>
Определение П 1.33. Синтаксис системных обработчиков класса user
(defmessage-handler USER init primary ())
(defmessage-handler USER delete primary ())
(defmessage-handler USER print primary ())
(defmessage-handler USER direct-modify primary
(?slot-override-expressions))
(defmessage-handler USER message-modify primary
(?slot-override-expressions)
(defmessage-handler USER direct-duplicate primary
(?new-instance-name ?slot-override-expressions))
(defmessage-handler USER message-duplicate primary
(?new-instance-name ?slot-override-expressions)
Определение П 1.34. Синтаксис конструктора def instances
(definstances <имя> [active] [<комментарии>]
<шаблоны-объектов>)
<шаблон-объекта> ::= (<определение-объекта>)
Определение П 1.35. Синтаксис предопределенного класса и экземпляра этого класса
(defclass INITIAL-OBJECT
(is-a USER)
(role concrete)
(pattern-match reactive))
(definstances initial-object
(initial-object of INITIAL-OBJECT))
Определение П 1.36. Синтаксис шаблона набора объектов
<шаблон-набора-объектов> ::= (<члены-шаблона-наборов-объекта>)
<член-шаблона-наборов-объекта> ::=(<переменная-набора-объектов> <ограничения-классов>)
<переменная-набора-объектов> ::= <простая-переменная>
<ограничения-классов> ::= <имена-классов>
Определение П 1.37. Синтаксис запроса
<запрос> ::= (<логическое-выражение>)
Определение П1.38. Синтаксис обращения к переменным
<переменная-набора-объектов>:<имя-слота>
Определение П 1.39. Синтаксис определения действия
<действие> :: = <функция>
Определение П1.40. Синтаксис функции any-instancep
(any-instancep <шаблон-набора-объектов> <запрос>)
Определение П1.41. Синтаксис функции find-instance
(find-instance <шаблон-набора-объектов> <запрос>)
Определение П 1.42. Синтаксис функции find-all-instance
(find-all-instance <шаблон-набора-объектов> <запрос>)
Определение П 1.43. Синтаксис функции do-for-instance
(do-for-instance <шаблон-набора-объектов> <запрос> <действие>)
Определение П 1.44. Синтаксис функции do-for-all-instance
(do-for-all-instanco <шаблон-набора-объектов> <запрос> <действие>)
Определение П 1.45. Синтаксис функции delayed-do-for-all-inatancе
(delayed-do-for-all-instance
<шаблон-набора-объектов> <запрос> <действие>)
Определение П 1.46. Синтаксис конструктора defmodule
(defmodule <имя-модуля>
[<комментарии>] <спецификации-импорта-экспорта>*)
<спецификация-импорта-экспорта> ::=
(export <элемент-спецификации>) |
(import <имя-модуля> <элемент-спецификации>)
<элемент-спецификации> ::= ?ALL
?NONE |
<конструктор> ?ALL |
<конструктор> ?NONE |
<конструктор> <имя-конструктора>
<конструкция> ::= deftemplate | defclass |
defglobal | deffunction |
defgeneric
Определение П 1.47. Предопределенный конструктор модуля main
(defmodule MAIN)
Определение П 1.48. Синтаксис атрибутов ограничений
<атрибуты-ограничений> ::= <атрибут-типа> |
<константный-атрибут>
<атрибут-диапазона>
<атрибут-мощности>
Определение П1.49. Синтаксис атрибута ограничения типа
<атрибут-типа> ::= (type <спецификация-типа>)
<спецификация-типа> ::= <допустимые-типы> | ?VARIABLE
<допустимый-тип> ::= SYMBOL | STRING | LEXEME |
INTEGER I FLOAT | NUMBER |
INSTANCE-NAME | INSTANCE-ADDRESS
INSTANCE | EXTERNAL-ADDRESS | FACT-ADDRESS
Определение П 1.50. Синтаксис константного атрибута
<константный-атрибут> ::=
(allowed-symbols <список-зутЬо1-значений>) |
(allowed-strings <cпиcoк-string-знaчeний>) |
(allowed-lexemes <список-1ехете-значений> |
(allowed-integers <cпиcoк-integer-знaчeний>) |
(allowed-floats <список-f1оаt-значений>)
(allowed-numbers <список-number-значений>)
(allowed-instance-names <cписок-instance-значений>)
(allowed-values <список-значений>)
<список-symbо1-значений> ::= <symbol>+ | ?VARIABLE
<список-string-значений> ::= <string>+ ?VARIABLE
<список-1ехеmе-значений> ::= <lexeme>+ ?VARIABLE
<список-integer-значений> ::=<integer>+ I ?VARIABLE
<список-float -значений> ::=<float>+ | ?VARIABLE
<список-number-значений> ::=<number>+ | ?VARIABLE
<cnисок-instance-значений> ::=<instance-name>+ | ?VARIABLE
<список-значений> ::=<constant>+ | ?VARIABLE
Определение П 1.51. Синтаксис атрибута диапазона
<атрибут-диалазона> ::= (range <граница-диапазона>
<граница-диапазона>)
<граница-диапазона> ::= <число> | ?VARIABLE
Определение П 1.52. Синтаксис атрибута мощности
<атрибут-мощности> ::= (cardinality <граница-мощности>
<граница-мощности>)
<граница-мощности> ::= <целое-значение> | ?VARIABLE
ПРИЛОЖЕНИЕ 2 Список основных сообщений об ошибках системы CLIPS
Сообщения об ошибках, возникающие при работе с системой CLIPS, делятся на два типа. Первому типу принадлежат ошибки, возникающие при создании различных конструкторов, ко второму относятся ошибки, возникающие при работе этих конструкторов. Данное приложение содержит список наиболее важных сообщений об ошибках сообщений системы CLIPS.
Каждое сообщение об ошибке имеет уникальный идентификатор, заключенный в квадратные скобки, после которого следует описание возникшей ситуации.
[AGENDAl] Salience value must be an integer value.
[AGENDA2] Salience value out of range <min> to <max>
[AGENDA3] This error occurred while evaluating the salience [for rule <name>]
[ANALYSISl] Duplicate pattern-address <variable name> found in CE <CE number>.
[ANALYSIS2] Pattern-address <variable name> used in CE #2 was previously bound within a pattern CE.
[ANALYSIS3] Variable <variable name> is used as both a single and multifield variable.
[ANALYSIS4] Variable <variable name> [found in the expression <expression>] was referenced in CE <CE number> <field or slot identifier> before being defined
[ARGACCES1] Function <name> expected at least <minimum> and no more than <maximum> argument(s)
[ARGACCES2] Function <function-name> was unable to open file <file-name>
[ARGACCES3] Function -enamel> received a request from function <name2> for argument #<number> which is non-existent
[ARGACCES4] Function <name> expected exactly <number> argument(s)
[ARGACCES4] Function <name> expected at least <number> argument(s)
[ARGACCES4] Function <name> expected no more than <number> argument(s)
[ARGACCES5] Function <name> expected argument #<number> to be of type <data-type>
[ARGACCES6] Function <namel> received a request from function <name2> for argument #<number> which is not of type <data-type>
[BLOAD1] Cannot load <construct type> construct with binary load in effect.
[BLOAD2] File <file-name> is not a binary construct file
[BLOAD3] File <file-name> is an incompatible binary construct file
[BLOAD4] The CLIPS environment could not be cleared. Binary load cannot continue.
[BLOAD5] Some constructs are still in use by the current binary image:
<construct-name 1>
<construct-name 2>
…
<construct-name N>
Binary <operation> cannot continue.
[BLOAD6] The following undefined functions are referenced by this binary image:
<function-name 1>
<function-name 2>
…
<function-name N>
[BSAVE1] Cannot perform a binary save while a binary load is in effect.
[CLASSEXM1] Inherited slot <slot-name> from >
[CLASSFUN1] Unable to find >
[CLASSFUN2] Maximum number of simultaneous >
[CLASSPSR1] An abstract>
[CLASSPSR2] Cannot redefine a predefined system>
[CLASSPSR3] <name>>
[CLASSPSR4] Class <attribute> already declared.
[CLSLTPSR1] Duplicate slots not allowed.
[CLSLTPSR2] <name> facet already specified.
[CLSLTPSR3] Cardinality facet can only be used with multifield slots
[CLSLTPSR4] read-only slots must have a default value
[CLSLTPSR5] read-only slots cannot have a write accessor
[CLSLTPSR6] no-inherit slots cannot also be public
[COMMLINE1] Expected a '(', constant, or global variable
[COMMLINE2] Expected a command.
[CONSCOMP1] Invalid file name <fileName> contains '.'
[CONSTRCT1] Some constructs are still in use. Clear cannot continue.
[CSTRCPSR1] Expected the beginning of a construct.
[CSTRCPSR2] Missing name for <construct-type> construct
[CSTRCPSR3] Cannot define <construct-type> <construct-name> because of an import/export conflict.
[CSTRCPSR3] Cannot define defmodule <defmodule-name> because of an import/export conflict cause by the <construct-type> <construct-name>.
[CSTRCPSR4] Cannot redefine <construct-type> <construct-name> while it is in use.
[CSTRNCHK1] Message Varies
[CSTRNPSR1] The <first attribute name> attribute conflicts with the <second attribute name> attribute.
[CSTRNPSR2] Minimum <attribute> value must be less than or equal to the maximum <attribute> value.
[CSTRNPSR3] The <first attribute name> attribute cannot be used in conjunction with the <second attribute name> attribute.
[CSTRNPSR4] Value does not match the expected type for the <attribute name> attribute.
[CSTRNPSR5] The cardinality attribute can only be used with multifield slots.
[DEFAULT1] The default value for a single field slot must be a single field value
[DFFNXPSR1] Deffunctions are not allowed to replace constructs.
[DFFNXPSR2] Deffunctions are not allowed to replace external functions.
[DFFNXPSR3] Deffunctions are not allowed to replace generic functions.
[DFFNXPSR4] Deffunction <name> may not be redefined while it is executing.
[DFFNXPSR5] Defgeneric <name> imported from module <module name> conflicts with this deffunction.
[DRIVE1] This error occurred in the join network Problem resides in join #<pattern-number> in rule(s): <problem-rules>+
[EMATHFUN1] Domain error for <function-name> function
[EMATHFUN2] Argument overflow for <function-name> function
[EMATHFUN3] Singularity at asymptote in <function-name> function
[EVALUATN1] Variable <name> is unbound
[EVALUATN2] No function, generic function or deffunction of name <name> exists for external call.
[EXPRNPSR1] A function name must be a symbol
[EXPRNPSR2] Expected a constant, variable, or expression
[EXPRNPSR3] Missing function declaration for <name>
[EXPRNPSR4] $ Sequence operator not a valid argument for <name>.
[FACTMCH1] This error occurred in the pattern network Currently active fact: <newly assert fact> Problem resides in slot <slot name> Of pattern #<pattern-number> in rule(s): <problem-rules>+
[FACTMNGR1] Facts may not be retracted during pattern-matching
[FACTMNGR2] Facts may not be retracted during pattern-matching
[FACTRHS1] Template <name> does not exist for assert.
[GENRCCOM1] No such generic function <name> in function undefmethod.
[GENRCCOM2] Expected a valid method index in function undefmethod.
[GENRCCOM3] Incomplete method specification for deletion.
[GENRCCOM4] Cannot remove implicit system function method for generic function <name>.
[GENRCEXE1] No applicable methods for <name>.
[GENRCEXE2] Shadowed methods not applicable in current context.
[GENRCEXE3] Unable to determine>
[GENRCEXE4] Generic function <name> method |<index> is not applicable to the given arguments.
[GENRCFUN1] Defgeneric <name> cannot be modified while one of its methods is executing.
[GENRCFUN2] Unable to find method <name> tt<index> in function <name>.
[GENRCFUN3] Unable to find generic function <name> in function <name>.
[GENRCPSR1] Expected ')' to complete defgeneric.
[GENRCPSR2] New method #<indexl> would be indistinguishable from method I<index2>.
[GENRCPSR3] Defgenerics are not allowed to replace constructs.
[GENRCPSR4] Deffunction <name> imported from module <module name> conflicts with this defgeneric.
[GENRCPSR5] Generic functions are not allowed to replace deffunctions.
[GENRCPSR6] Method index out of range.
[GENRCPSR7] Expected a '(' to begin method parameter restrictions.
[GENRCPSR8] Expected a variable for parameter specification.
[GENRCPSR9] Expected a variable or '(' for parameter specification.
[GENRCPSR10] Query must be last in parameter restriction.
[GENRCPSRll] Duplicate >
[GENRCPSR12] Binds are not allowed in query expressions.
[GENRCPSR13] Expected a valid class/type name or query.
[GENRCPSR.14] Unknown>
[GENRCPSR15] <name>>
[GENRCPSR16] The system function <name> cannot be overloaded.
[GENRCPSR17] Cannot replace the implicit system method #<integer>.
[GLOBLDEF1] Global variable <variable name> is unbound.
[GLOBLPSR1] Global variable <variable name> was referenced, but is not defined.
[INCRRSET1] The incremental reset behavior cannot be changed with rules loaded.
[INHERPSR1] A>
[INHERPSR2] A>
[INHERPSR3] A >
[INHERPSR4] Must have at least one superclass.
[INHERPSR5] Partial precedence list formed: <classa> <classb>... <classc> Precedence loop in superclasses: <classl> <class2>... <classn> <classl>
[INHERPSR6] A user-defined>
[INSCOM1] Undefined type in function <name>.
[INSFILE1] Function <function-name> could not completely process file <name>.
[INSFILE2] <file-name> file is not a binary instances file.
[INSFILE3] <file-name> file is not a compatible binary instances file.
[INSFILE4] Function bload-instances unable to load instance <instance-name>.
[INSFUN1] Expected a valid instance in function <name>.
[INSFUN2] No such instance <name> in function <name>.
[INSFUN3] No such slot <name> in function <name>.
[INSFUN4] Invalid instance-address in function <name>.
[INSFUN5] Cannot modify reactive instance slots while pattern-matching is in process.
[INSFUN6] Unable to pattern-match on shared slot <name> in>
[INSFUN7] <multifield-value> illegal for single-field slot <name> of instance <name> found in <function-call or message-handler>.
[INSFUN8] Void function illegal value for slot <name> of instance <name> found in <function-call or message-handler>.
[INSMNGR1] Expected a valid name for new instance.
[INSMNGR2] Expected a valid>
[INSMNGR3] Cannot create instances of abstract>
[INSMGNR4] The instance <name> has a slot-value which depends on the instance definition.
[INSMNGR5] Unable to delete old instance <name>.
[INSMNGR6] Cannot delete instance <name> during initialization.
[INSMNGR7] Instance <name> is already being initialized.
[INSMNGR8] An error occurred during the initialization of instance <name>.
[INSMNGR9] Expected a valid slot name for slot-override.
[INSMNGR10] Cannot create instances of reactive>
[INSMNGRll] Invalid module specifier in new instance name.
[INSMNGR12] Cannot delete instances of reactive >
[INSMNGR13] Slot <slot-name> does not exist in instance <instance-name>.
[INSMNGR14] Override required for slot <slot-name> in instance <instance-name>.
[INSMNGR15] init-slots not valid in this context.
[INSMODDP1] Direct/message-modify message valid only in modify-instance.
[INSMODDP2] Direct/message-duplicate message valid only in duplicate-instance.
[INSMODDP3] Instance copy must have a different name in duplicate-instance.
[INSMULT1] Function <name> cannot be used on single-field slot <name> in instance <name>.
[INSQYPSR1] Duplicate instance-set member variable name in function <name>.
[INSQYPSR2] Binds are not allowed in instance-set query in function <name>.
[INSQYPSR3] Cannot rebind instance-set member variable <name> in function <name>.
[IOFUN1] Illegal logical name used for <function name> function.
[IOFUN2J Logical name <logical name> already in use.
[MEMORY1] Out of memory
[MEMORY2] Release error in genfree
[MEMORY3] Unable to allocate memory block > 32K
[MISCFUN1] expand? must be used in the argument list of a function call.
[MODULDEF1] Illegal use of the module specifier. '
[MODULPSR1] Module <module name> does not export any constructs.
[MODULPSR1] Module <module name> does not export any <construct type> constructs.
[MODULPSR1] Module <module name> does not export the <construct type> <construct name>.
[MSGCOMl] Incomplete message-handler specification for deletion.
[MSGCOM2] Unable to find message-handler <name> <type> for>
[MSGCOM3] Unable to delete message-handlers.
[MSGFUN1] No applicable primary message-handlers found for <message>.
[MSGFUN2] Message-handler <name> <type> in >
[MSGFUN3] <name> slot in instance <name>: write access denied.
[MSGFUN4] <function> may only be called from within message-handlers.
[MSGFUN5] <function> operates only on instances.
[MSGFUN6] Private slot <slot-name> of >
[MSGFUN7] Unrecognized message-handler type in defmessage-handler.
[MSGFUN8] Unable to delete message-handler(s) from>
[MSGPASS1] Shadowed message-handlers not applicable in current context.
[MSGPASS2] No such instance <name> in function <name>.
[MSGPASS3] Static reference to slot <narne> of >
[MSGPSR1] A >
[MSGPSR2] Cannot (re)define message-handlers during execution of other message-handlers for the same>
[MSGPSR3] System message-handlers may not be modified. [MSGPSR4] Illegal slot reference in parameter list.
[MSGPSR5] Active instance parameter cannot be changed.
[MSGPSR6] No such slot <name> in class <name> for ?self reference.
[MSGPSR7] Illegal value for ?self reference.
[MSGPSR8] Message-handlers cannot be attached to the>
[MULTIFUN1] Multifield index <index> out of range l..<end range> in function <name>
[MULTIFUN1] Multifield index range <start>...<end> out of range l..<end range> in function <name>
[MULTIFUN2] Cannot rebind field variable in function progn$.
[OBJRTBLD1] No objects of existing classes can satisfy pattern.
[OBJRTBLD2] No objects of existing classes can satisfy <attribute-name> restriction in object pattern.
[OBJRTBLD3] No objects of existing classes can satisfy pattern #<pattern-num>.
[OBJRTBLD4] Multiple restrictions on attribute <attribute-name> not allowed.
[OBJRTBLD5] Undefined>
[OBJRTMCH1] This error occurred in the object pattern network Currently active instance: <instance-name> Problem resides in slot <slot name> field l<field-index> Of pattern #<pattern-number> in rule(s): <problem-rules>+
[PATTERN1] The symbol <symbol name> has special meaning and may not be used as a <use name>.
[PATTERN2] Single and multifield constraints cannot be mixed in a field constraint
[PRCCODE1] Attempted to call a <construct> which does not exist.
[PRCCODE2] Functions without a return value are illegal as <construct> arguments.
[PRCCODE3] Undefined variable <name> referenced in <where>. [PRCCODE4] Execution halted during the actions of <construct> <name>. [PRCCODE5] Variable <name> unbound [in <construct> <name>].
[PRCCODE6] This error occurred while evaluating arguments for the <construct> <name>.
[PRCCODE7] Duplicate parameter names not allowed.
[PRCCODE8] No parameters allowed after wildcard parameter.
[PRCDRPSR1J Cannot rebind count variable in function loop-for-count.
[PRCDRPSR2] The return function is not valid in this context.
[PRCDRPSR2] The break function is not valid in this context.
[PRCDRPSR3] Duplicate case found in switch function.
[PRNTUTIL1] Unable to find <item> <item-name>
[PRNTUTIL2] Syntax Error: Check appropriate syntax for <item>
[PRNTUTIL3]
*** CLIPS SYSTEM ERROR ***
ID = <error-id>
CLIPS data structures are in an inconsistent or corrupted state.
This error may have occurred from errors in user defined code.
[PRNTUTIL4] Unable to delete <item> <item-name>
[PRNTUTIL5] The <item> has already been parsed.
[PRNTUTIL6] Local variables cannot be accessed by <function or construct>.
[PRNTUTIL7] Attempt to divide by zero in <function-name> function.
[ROUTER1] Logical name <logical_name> was not recognized by any routers
[RULECSTR1] Variable <variable name>.in CE t<integer> slot <slot name> has constraint conflicts which make the pattern unmatchable.
[RULECSTR1] Variable <variable name> in CE #<integer> field #<integer> has constraint conflicts which make the pattern unmatchable.
[RULECSTR1] CE l<integer> slot <slot name> has constraint conflicts which make the pattern unmatchable.
[RULECSTR1] CE tt<integer> field #<integer> has constraint conflicts which make the pattern unmatchable
[RULECSTR2] Previous variable bindings of <variable name> caused the type restrictions for argument #<integer> of the expression <expression> found in CE#<integer> slot <slot name> to be violated.
[RULECSTR3] Previous variable bindings of <variable name> caused the type restrictions for argument #<integer> of the expression <expression> found in the rule's RHS to be violated.
[RULELHS1] The logical CE cannot be used with a not/exists/forall CE.
[RULELHS2] A pattern CE cannot be bound to a pattern-address within a not CE
[RULEPSR1] Logical CEs must be placed first in a rule
[RULEPSR2] Gaps may not exist between logical CEs
STRNGFUN1] Function build does not work in run time modules.
[STRNGFUN1] Function eval does not work in run time modules.
[STRNGFUN2] Some variables could not be accessed by the eval function.
[SYSDEP1] No file found for -f option.
[TEXTPR01] Unable to access help file.
[TEXTPRO2] Unable to load file. Explanatory text>.
[TMPLTDEF1] Invalid slot <slot name> not defined in corresponding deftemplate <deftemplate name>
[TMPLTDEF2] The single field slot <slot name> can only contain a single field value.
[TMPLTFUN1] Fact-indexes can only be used by <command name> as a top level command.
[TMPLTFUN2] Attempted to assert a multifield value into the single field slot <slot name> of deftemplate <deftemplate name>.
[TMPLTRHS1] Slot <slot name> requires a value because of its (default 7NONE) attribute.
ПРИЛОЖЕНИЕ 3 Список основных предупреждений системы CLIPS
Предупреждающие сообщения CLIPS делятся на два типа. К первому типу предупреждающих сообщений относятся потенциально ошибочные ситуации, складывающиеся при выполнении различных конструкций среды. Второй тип представляют собой сообщения, возникающие при не критических ошибках загрузки конструкторов в CLIPS. Данное приложение содержит список наиболее важных предупреждающих сообщений системы.
Каждое сообщение имеет уникальный идентификатор, заключенный в квадратные скобки, после которого следует ключевое слово warning и описание возникшей ситуации.
[CONSCOMPl] WARNING: Base file name exceeds 3 characters. This may cause files to be overwritten if file name length is limited on your platform.
[CONSCOMP2] WARNING: Array name <arrayName> exceeds б characters in length. This variable may be indistinguishable from another by the linker.
[CSTRNBIN1] WARNING: Constraints are not saved with a binary image when dynamic constraint checking is disabled.
[CSTRNCMP1] WARNING: Constraints are not saved with
a constructs-to-c image when dynamic constraint checking is disabled
[DFFNXFUN1] WARNING: Deffunction <name> only partially deleted due to usage by other constructs.
[GENRCBIN1] WARNING: COOL not installed! User-defined >
[OBJBIN1] WARNING: Around message-handlers are not supported in this environment.
[OBJBIN1] WARNING: Around message-handlers are not supported in this environment.
ПРИЛОЖЕНИЕ 4 Зарезервированные имена CLIPS
В данном приложении приводится полный список имен системных функций CLIPS. Имена, перечисленные здесь, нельзя использовать в качестве имен пользовательских функций, за исключением случаев перегрузки с помощью родовых функций.
!=
*
**
+
-/
<
<=
<>
=
>
>=
abs
acos
acosh
acot
acoth
acsc
acsch
active-duplicate-instance
active-initialize-instance
active-make-instance
active-message-duplicate-instance
active-message-modify-instance
active-modify-instance
agenda
and
any-instancep
apropos
asec
asech
asin
asinh
assert
assert-string
atan
atanh
batch
batch*
bind
bload
bload-instances
break
browse-classes
bsave
bsave-instances
build
call-next-handler
call-next-method
call-specific-method
class
class-abstractp
class-existp
class-reactivep
class-slots
class-subclasses
class-superclasses
clear
clear-focus-stack
close
conserve-mem
constructs-to-c
cos
cosh
cot
coth
create$
esc
csch
defclass-module
deffacts-module
deffunction-module
defgeneric-module
defglobal-module
definstances-module
defrule-module
deftemplate-module
deg-grad
deg-rad
delayed-do-for-all-instances
delete$
delete-instance
dependencies
dependents
describe-class
direct-mv-delete
direct-mv-insert
direct-mv-replace
div
do-for-all-instances
do-for-instance
dribble-off
dribble-on
duplicate
duplicate-instance
dynamic-get
dynamic-put
edit
eq
eval
evenp
exit
exp
expand$
explode$
fact-existp
fact-index
fact-relation
fact-slot-names
fact-slot-value
facts
fetch
find-all-instances
find-instance
first$
float
floatp
focus
format
gensym
gensym*
get
get-auto-float-dividend
get-current-module
get-defclass-list
get-deffacts-list
get-deffunction-list
get-defgeneric-list
get-defglobal-list
get-definstances-list
get-defmessage-handler-list
get-defmethod-list
get-defmodule-list
get-defrule-list
get-deftemplate-list
get-dynamic-constraint-checking
get-fact-duplication
get-fact-list
get-focus
get-focus-stack
get-function-restrictions
get-incremental-reset
get-method-restrictions
get-reset-globals
get-salience-evaluation
get-sequence-operator-recognition
get-static-constraint-checking
get-strategy
grad-deg
halt
help
help-path
if
implode$
init-slots
initialize-instance
insert$
instance-address
instance-addressp
instance-existp
instance-name
instance-name-to-symbol
instance-namep
instancep
instances
integer
integerp
length
length$
lexemep
list-defclasses
list-deffacts
list-deffunctions
list-defgenerics
list-defglobals
list-definstances
list-defmessage-handlers
list-defmethods
list-defmodules
list-defrules
list-deftemplates
list-focus-stack
list-watch-items
load
load*
load-facts
load-instances
log
loglO
loop-for-count
lowcase
make-instance
matches
max
mem-requests
mem-used
member
member$
message-duplicate-instance
message-handler-existp
message-modify-instance
min
mod
modify
modify-instance
multifieldp
mv-append
mv-delete
mv-replace
mv-slot-delete
mv-slot-insert
mv-slot-replace
mv-subseq
neq
next-handlerp
next-methodp
not
nth
nth$
numberp
object-pattern-ntatch-delay
oddp
open
options
or
override-next-handier
override-next-method
Pi
pointerp
pop-focus
ppdefclass
ppdeffacts
ppdeffunction
ppdefgeneric
ppdefglobal
ppdefinstances
ppdefmessage-handler
ppdefmethod
ppdefmodule
ppdefrule
ppdeftemplate
ppinstance
preview-generic
preview-send
primitives-info
print-region
printout
progn
progn$
put
rad-deg
random
read
readline
refresh
refresh-agenda
release-mem
remove
remove-break
rename
replace$
reset
rest$
restore-instances
retract
return
round
rule-complexity
rules
run
save
save-facts
save-instances
sec
sech
seed
send
sequencep
set-auto-float-dividend
set-break
set-current-module
set-dynamic-constraint-checking
set-fact-duplication
set-incremental-reset
set-reset-globals
set-salience-evaluation
set-sequence-operator-recognition
set-static-constraint-checking
set-strategy
setgen
show-breaks
show-defglobals
show-fht
show-fpn
show-joins
show-opn
sin
sinh
slot-allowed-values
slot-cardinality
slot-delete$
slot-direct-accessp
slot-direct-delete$
slot-direct-insert$
slot-direct-replace$
slot-existp
slot-facets
slot-initablep
slot-insertS
slot-publicp
slot-range
slot-replace$
slot-sources
slot-types
slot-writablep
sqrt
str-assert
str-cat
str-compare
str-explode
str-implode
str-index
str-length
stringp
sub-string
subclassp
subseq$
subset
subsetp
superclassp
switch
sym-cat
symbol- to-instance-name
symbolp
system
tan
tanh
time
toss
type
undefclass
undef facts
undef function
undef generic
undef global
undef instances
undef message-handler
undefmethod
undef rule
undef template
unmake-instance
unwatch
upcase
watch
while
wordp
ПРИЛОЖЕНИЕ 5 Глоссарий
Abstraction (Абстракция)
Способ представления данных на определенном уровне некоторой конкретной предметной области.
Action (Действие)
Функция, выполняемая произвольным конструктором (например, правой частью правила), которая обычно не возвращает никакого значения, но выполняет некоторое полезное действие (например, вывод на печать).
Activation (Активация)
Процесс помещения правила, все условия которого удовлетворены, но которое еще не было выполнено, в план решения задачи.
Active instance (Активный объект)
Текущий объект. Фактически понятие активного объекта было введено для реализации возможности объекта посылки сообщений самому себе.
Agenda (План решения задачи)
Список активированных правил с данными, вызвавшими эту активацию, готовых в настоящий момент к запуску. Правила сортируются согласно заданному приоритету и текущей выбранной стратегии разрешения конфликтов. Правило, находящееся на вершине списка, будет запущено первым.
Antecedent (Предпосылка)
Левая часть правила.
Bind (Связывание)
Действие по сохранению (присваиванию) значения в переменной.
Class (Класс)
Шаблон для описания общих свойств (слоты) и поведения (обработчики сообщений) группы объектов, называемых экземплярами данного класса.
Class precedence list (Список предшествования классов)
Линейное упорядочение суперклассов, которое описывает порядок наследованию свойств и поведения.
Command (Команда)
Функция, которая вводится пользователем в среду при помощи клавиатуры. Обычно такая функция не возвращает никакого значения.
Command prompt (Командная строка)
Подсказка интерактивной среды CLIPS, которая говорит о том, что CLIPS готов к работе.
Condition (Условие)
Логический элемент.
Conditional element (Условный элемент)
Ограничение, определяемое в левой части правила, которое должно быть соблюдено для активации правила.
Conflict resolution strategy (Стратегия разрешения конфликтов)
Метод для определения порядка, в котором правила должны запускаться, среди правил с одинаковым приоритетом. В CLIPS существует семь стратегий разрешения конфликтов: стратегия глубины (depth strategy), стратегия ширины (breadth strategy), стратегия упрощения (simplicity strategy), стратегия усложнения (complexity strategy), LEX (LEX strategy), MEA (iMEA strategy) и случайная стратегия (random strategy).
Consequent (Следствие)
Правая часть правила.
Constant (Константа)
Выражение с не изменяющимся значением.
Constraint (Ограничение)
Дополнительное условие, которое налагается на значение поля факта или объекта.
Construct (Конструктор)
Элемент CLIPS, используемый для добавления в базу знаний новых элементов.
Current focus (Текущий фокус)
Модуль, находящийся на вершине стека фокусов.
Current module (Текущий модуль)
Модуль, к которому добавляются конструкции, не имеющие спецификатора модуля, используемый по умолчанию для команд, которые поддерживают использование произвольного параметра в имени модуля.
Daemon (Демон)
Обработчик сообщений, который выполняется неявно всякий раз, когда над объектом производится некоторое действие, например такое, как инициализация, удаление или изменение в слота.
DeiTunction (Функция, определенная пользователем)
Функция, созданная пользователем в среде CLIPS с помощью соответствующего конструктора.
Deftemplate fact (Шаблон)
Определяет набор именованных слотов определенного типа.
Deftemplate pattern (Образец шаблона)
Ограничения, накладываемые на факты, принадлежащие некоторому шаблону.
Delimiter (Разделитель)
Знак, который указывает на конец элемента одного из примитивных типов данных. Обычно в качестве разделителей используются следующие знаки: любой непечатаемый знак ASCII (включая пробелы, табуляцию, возвраты каретки и переводы строки), двойные кавычки, открывающая и закрывающая круглые скобки "(" и ")", амперсанд "&", вертикальная черта "", меньше чем "<", точка с запятой ";", и тильда "~".
Dynamic binding (Динамическое связывание)
Связывание обработчика сообщения с объектом во время выполнения программы.
Encapsulation (Инкапсуляция)
Скрытие деталей реализации класса.
External-address (Внешний адрес)
Адрес внешней структуры данных, возвращенной функцией (написанной на языке типа С или Ada), интегрированной с CLIPS.
External function (Внешняя функция)
Функция, написанная на внешнем языке (например, С) и подключенная к среде CLIPS.
Facet (Грань)
Компонент, определяющий свойства слота класса.
Fact (Факт)
Единица представления данных в экспертной системе.
Fact-address (Адрес факта)
Указатель на факт, полученный в левой части правила.
Fact-identifier (Идентификатор факта)
Сокращенное описание факта. Состоит из символа "f", следующей за ним черты и индекса факта.
Fact-index (Индекс факта)
Уникальный целочисленный индекс, используемый для идентификации факта.
Fact-list (Список фактов)
Набор фактов, присутствующий в рабочей памяти системы.
Field (Поле)
Место для хранения некоторого значения.
Fire (Запуск правила)
Процедура выполнения правила, все предпосылки которого удовлетворены.
Float (Вещественное значение)
Вещественное значение, заданное в экспоненциальной форме или с помощью числа фиксированной точкой.
Function (Функция)
Участок исполняемого программного кода, идентифицируемый при помощи имени.
Generic dispatch (Родовое связывание)
Процесс определения конкретного метода родовой функции, применимого к заданному набору аргументов.
Generic function (Родовая функция)
Функция, написанная в CLIPS, позволяющая выполнять различные действия, в зависимости от числа и типа заданных аргументов.
Inference engine (Механизм логического вывода)
Механизм, поддерживаемый CLIPS, который автоматически производит сопоставление текущего состояния списка фактов с существующими в системе правилами.
Inheritance (Наследование)
Процесс приобретения подклассом свойств и поведения суперкласса.
Instance (Объект)
Экземпляр некоторого класса.
Instance-address (Адрес образца)
Адрес объекта класса, созданного пользователем.
Instance-name (Имя образца)
Символьный идентификатор объекта.
Instance-set (Набор объектов)
Упорядоченный набор объектов, созданный в результате выполнения некоторого запроса.
Instance-set distributed action (Действие над набором объектов)
Определяемое пользователем действие, которое выполняется над каждым членом заданного набора объектов.
Instance-set query (Запрос)
Определяемое пользователем логическое выражение, используемое для формирования набора объектов.
Integer (Целое)
Целочисленное значение.
LHS (Левая часть правила)
Набор условий, которые должны быть удовлетворены для выполнения действий, заданных в правой части правила.
Logical name (Логическое имя)
Символическое имя устройства ввода/вывода.
Message (Сообщение)
Механизм, позволяющий управление объектом.
Message dispatch (Связывание сообщений)
Процесс, посредством которого для сообщения выбирается и запускается соответствующий обработчик сообщения.
Message-handler (Обработчик сообщений)
Участок кода, активизирующийся при получении объектом соответствующего сообщения.
Message-handler precedence (Приоритет обработчиков сообщений)
Свойство, позволяющее выбирать порядок выполнения обработчиков сообщения.
Method (Метод)
Один из вариантов поведения родовой функции при получении соответствующего набора сообщений.
Method index (Индекс метода)
Целочисленный идентификатор метода.
Method precedence (Приоритет методов)
Свойство, использующее конкретный метод некоторой группы, способной обработать заданный набор аргументов.
Module (Модуль)
Рабочее пространство, позволяющее группировать конструкторы базы знаний и управлять доступом к ним.
Module specifier (Спецификатор модуля)
Способ идентификации модуля в определении различных конструкторов системы.
Multifield value (Составная величина)
Последовательность неименованных данных.
Non- ordered fact (Неупорядоченный факт)
Шаблонный факт.
Number (Число)
Целое число или число с плавающей точкой.
Ordered fact (Упорядоченный факт)
Факт, состоящий из последовательности неименованных полей.
Overload (Перегрузка)
Процесс, в результате которого родовая функция позволяет выполнять различные действия в зависимости от числа и типа аргументов.
Pattern (Образец)
Условный элемент в левой части правила, который используется для сопоставления с фактами из списка фактов.
Pattern entity (Сопоставленный образец)
Элемент, подошедший определенному образцу, заданному в левой части правила.
Pattern-matching (Сопоставление образцов)
Процесс сопоставления фактов или объектов с образцами, заданными в левой части правил.
Polymorphism (Полиморфизм)
Способность разных объектов реагировать на одно и то же сообщение различным образом.
RHS (Правая часть правила)
Действия, выполняемые правилом при его запуске.
Rule (Правило)
Набор условий и действий, выполняемых в случае, если все условия удовлетворены.
Shadowed message-handler (Неявный обработчик сообщений)
Обработчик сообщения, который для выполнения должен быть явно вызван другим обработчиком сообщений.
Shadowed method (Неявный метод)
Метод, который для выполнения должен быть явно вызван другим методом.
Single-field value (Простая величина)
Один из примитивных типов данных: символ, строка, целое число или число с плавающей точкой, внешний адрес, имя или адрес.
Slot (Слот)
Именованная простая или составная величина, содержащаяся в некотором шаблоне или классе.
Slot-accessor (Акцессор, аксессор)
Средство доступа к слоту, неявный обработчик сообщений, который предоставляет доступ к слоту для чтения и записи данных.
Subclass (Подкласс)
Если первый класс является наследником второго класса, то он является и его подклассом.
Superclass (Суперкласс)
Если первый класс является наследником второго класса, то второй класс, в свою очередь, является суперклассом первого.
Value (Значение)
Простое или составное значение.