DemonScript

DemonScript - язык, предназначенный для представления обыденных знаний и проведения логических выводов в условиях неполноты информации. Базовой конструкцией, с которой работает DemonScript является семантическая сеть, состоящая из узлов, соединённых направленными рёбрами. В задачах искусственного интеллекта узлы представляют конкретные или абстрактные сущности (ящик, птица, множество всех птиц и т.д.), а рёбра - отношения между сущностями.

В отличие от языка Prolog:

DemonScript доступен для различных платформ (Windows, Mac, Linux). Простые примеры Можно также запускать непосредственно на сайте.


Пример

Приведём пример простой программы на DemonScript. Пусть есть три ящика a, b и с. Известно, что ящик a находится внутри c, а ящик b не находится внутри c. Необходимо ответить на вопросы: находится ли b внутри a?; может ли a находится в b?; если может, то в каком случае?

edges in                                               // типы отношений

Mind.add(                                              // свойства отношения in:
  X !in X,                                             // антирефлексивность
  X in Z & Z in Y -> X in Y,                           // транзитивность
  Z in X & Z in Y -> X in Y | Y in X | X==Y            // образует дерево
)

nodes a, b, c;                                         // объекты
   
a  in c;                                               // ящик a внутри ящика c
b !in c;                                               // ящик b не внутри ящика c

Mind.set_graph(GRAPH)                                  // логический вывод

out b in a                                             //> False (нет)
out a in b                                             //> Undef (возможно)

if (a in b) == Undef {                                 // не запрещено, поэтому
   a in b;                                             // пусть a внутри b
   var Models = Mind.get_models(GRAPH, in)             // все возможные модели
   for M in Models:                                  
      out M                                            // выводим их
}
Результатом работы скрипта будет (восклицательный знак означает отрицание):
   False
   Undef
   GRAPH_1 {
      a {  in: [ c,!a, b]   },
      b {  in: [!c,!b,!a]   },
      c {  in: [!c,!a, b]   }
   }


Документация


Контакты

DemonScript можно использовать в любых некоммерческих проектах. Мы приглашаем к сотрудничеству по его тестированию и разработке различных алгоритмов описания обыденных знаний. Просим сообщать о любых замеченных ошибках, как на сайте, так и при работе с DemonScript. С нами можно связаться по адресу: ds@qudata.com