Пример 6.51. Преобразованное правило с условиями not перед test
(defrule example
(а ?х)
(test (> ?х 5))
(not (b ?x) )
=>)
Использование элемента not перед or
Если сразу перед условным элементом or использовался условный элемент not, то CLIPS автоматически заменяет комбинацию not/or на эквивалентную комбинацию and/not. Например, следующее правило (пример 6.52) будут изменено так, как показано в примере 6.53.
Пример 6.52. Правило с условиями not перед or
(defrule example
(а ?х)
(not (or (b ?x)
(с ?x)))
=>)
Пример 6.53. Преобразованное правило с условиями not перед or
(defrule example
(a ?x)
(and (not (b ?x))
(not (c ?x)))
=>)
Замечания об автоматическом добавлении и перегруппировке условных элементов
В завершение описания синтаксиса левой части правил CLIPS обратим внимание на следующие важные особенности:
1. Полная версия левой части правила содержит неявный условный элемент and.
2. Преобразование условных элементов forall и exists к эквивалентным выражениям с помощью not и and выполняется перед добавлением соответствующих образцов в левую часть правила.
3. Условный элемент test обычно не используется в качестве первого элемента в условии and.
4. Команды, выводящие информацию об условных элементах в левой части правила, отображают информацию об определении правила в виде, в котором ее задал пользователь. Информация о перегруппировке и добавлении образцов initial-fact и initial-object не выводится.
Команды и функции для работы с правилами
После того как мы полностью разобрались с представлением правил в CLIPS, рассмотрели внутренние алгоритмы обработки правил, стратегии разрешения конфликтов и синтаксис левой части правил, можно смело переходить к изучению функций и команд, предоставляемых CLIPS для работы с правилами. Полная спецификация этих функций будет дана в гл. 15 и 16, в данной главе мы рассмотрим лишь основные из них с примерами использования.
Просмотр и удаление существующих правил
После создания правил с помощью конструктора defrule вполне естественно возникает желание сделать что-нибудь с уже существующим правилом. CLIPS поддерживает множество различных команд, оперирующих с правилами. В данном разделе мы рассмотрим наиболее часто используемые команды: ppdefrule,list-defrules и undefrule.
С помощью команды ppdefrule можно просмотреть определение правила в том виде, в котором оно было создано с помощью конструктора defrule.
Определение 6.25. Синтаксис команды ppdefrule
(ppdefrule <имя-правила>)
Для того чтобы получить полный список правил, присутствующих в CLIPS в данный момент, используется команда list-def rules.
Дата добавления: 2021-12-14; просмотров: 296;