Пример 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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: