Jump to content

Оборка

Оборка
Парадигма Логическое программирование
Разработано Тревор Мартин
Впервые появился 1980 год ; 44 года назад ( 1980 )
Стабильная версия
4,984 / 23 августа 2011 г .; 12 лет назад ( 23 августа 2011 )
Лицензия Собственное программное обеспечение
Расширения имен файлов .frl
Под влиянием
микро-ПРОЛОГ [ ru ]

Fril язык программирования для исчисления предикатов первого порядка . Он включает в себя семантику Пролога и добавляет как подмножество, но берет свой синтаксис из микро-ПРОЛОГА [ es ] компании Logic Programming Associates поддержку нечетких множеств , логики поддержки и метапрограммирования .

Первоначально Fril был разработан Тревором Мартином и Джимом Болдуином в Бристольском университете примерно в 1980 году. В 1986 году его подхватила и доработала компания Equipu AI Research, которая позже стала Fril Systems Ltd. Первоначально название Fril было аббревиатурой от Fuzzy Relational. Язык вывода .

Сравнение Пролога и Фрила

[ редактировать ]

Помимо функций управления неопределенностью Fril, существуют некоторые незначительные различия в реализации стандартных функций Prolog во Fril.

Базовые типы в Fril аналогичны типам в Прологе , за одним важным исключением: составным типом данных Пролога является term со списками, определяемыми как вложенные термины с использованием . функтор; во Fril составной тип — это сам список, который составляет основу большинства конструкций. Переменные отличаются идентификаторами, содержащими только заглавные буквы и символы подчеркивания (тогда как Пролог требует, чтобы только первый символ был в верхнем регистре). Как и в Прологе, имя _ зарезервировано для обозначения «любого значения» с множественным появлением _ заменены отдельными переменными.

Синтаксис

[ редактировать ]

Пролог имеет синтаксис с типичным количеством знаков препинания, тогда как у Фрила чрезвычайно простой синтаксис, похожий на синтаксис Лиспа . (Пропозициональное) предложение — это список, состоящий из предиката, за которым следуют его аргументы (если таковые имеются). Среди типов конструкций верхнего уровня есть правила и команды прямого режима.

Правило — это список, состоящий из вывода, за которым следуют гипотезы ( цели ). Общие формы выглядят так:

(fact)
(conclusion goal_1 ... goal_n)

Они эквивалентны соответствующим конструкциям Пролога:

fact.
conclusion :- goal_1, ..., goal_n.

Например, рассмотрим member предикат в Прологе:

 member(E, [E|_]).
 member(E, [_|T]) :- member(E, T).

Во Фриле это выглядит так:

((member E (E|_)))
((member E (_|T)) (member E T))

Некоторые данные могут быть представлены в виде отношений . Отношение эквивалентно набору фактов с одинаковым именем предиката и постоянной арностью , за исключением того, что ни один из фактов не может быть удален (кроме как путем killв отношении); такое представление потребляет меньше внутренней памяти. Отношение записывается буквально как список, состоящий из имени предиката, за которым следуют один или несколько кортежей отношения (все аргументы эквивалентного факта без имени предиката). Предикат также можно объявить отношением, вызвав метод def_rel предикат; это работает только в том случае, если предложенное имя еще не существует в базе знаний . Если предикат является отношением, все, что обычно добавляет правило (и не нарушает ограничений отношений), вместо этого автоматически добавляет кортеж к отношению.

Вот пример. Следующий набор фактов:

((my-less-than 2 3))
((my-less-than 8 23))
((my-less-than 42 69))

можно переписать как соотношение:

(my-less-than
    (2 3)
    (8 23)
    (42 69))

Прямой режим

[ редактировать ]

Предикат может быть вызван ровно с одним аргументом, используя синтаксис:

predicate argument

Запросы отправляются с использованием этого синтаксиса, предикатом с ? (или один из других предикатов, связанных с запросом).

Нечеткие множества

[ редактировать ]

Fril поддерживает как непрерывные, так и дискретные нечеткие множества, каждое из которых имеет свой особый синтаксис. Дискретный набор ( dtype ) перечисляет дискретные значения и степени их членства, используя следующий синтаксис:

{value:dom value:dom ... value:dom}

value — атом или число, а dom — значение в интервале [0, 1].

Непрерывный набор ( itype ) перечисляет действительные числа и степени их принадлежности; функция степени принадлежности представляет собой линейную интерполяцию по этим отображениям. Синтаксис такой:

[value:dom value:dom ... value:dom]

где значения должны быть указаны в неубывающем порядке.

Каждый dtype и itype может быть ограничен юниверсом ( набором допустимых значений). Fril имеет предикаты для операций с нечеткими множествами (но не поддерживает напрямую управление через нечеткую логику ). Можно даже комбинировать типы и типы с помощью некоторых операций, если типы содержат только действительные числа.

Поддержка пар

[ редактировать ]

Любое правило может иметь интервал вероятности (называемый опорной парой), связанный с ним путем добавления :(min max) к нему, где min и max — минимальная и максимальная вероятности. Fril включает предикаты, которые вычисляют поддержку для данного запроса.

Дизъюнкция

[ редактировать ]

Хотя Пролог использует пунктуацию, а именно ; - для дизъюнкции внутри предложений у Fril вместо этого есть встроенный предикат orr.

Достоинства

[ редактировать ]

У этого более простого синтаксиса есть свои преимущества и недостатки. Положительным моментом является то, что он отображает предикаты, такие как Пролог. =.. (который сопоставляется между списками и предложениями) не нужен, поскольку предложение является списком. С другой стороны, читать сложнее.

Поведение

[ редактировать ]

Как среда логического программирования Fril очень похож на Пролог. Вот некоторые различия:

  • И Пролог, и Фрил имеют приложения- оболочки , которые служат стандартным способом взаимодействия с ними. Пролог читает команды в двух режимах: в режиме чтения исходного файла он принимает директивы и предложения; в режиме взаимодействия с пользователем он принимает только запросы (хотя можно указать Прологу читать директивы и предложения из стандартного ввода , используя consult(user).). Фрил не делает различий: все типы команд можно давать как из исходных файлов, так и в командной строке.
  • Оболочка Пролога автоматически печатает значения всех созданных переменных, которые появляются в запросе, а также ответ «да» или « нет» . Оболочка FRIL только дает ответ; Пользователь несет ответственность за печать переменных, если это необходимо.
[ редактировать ]
  • FRIL — загружаемые ресурсы , официальный сайт загрузки FRIL
  • [Лаборатория логического программирования (Fril) и искусственного интеллекта], Цзэнчан Цинь
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e5ab6420b263c1e138e9208e9f5bd565__1715547180
URL1:https://arc.ask3.ru/arc/aa/e5/65/e5ab6420b263c1e138e9208e9f5bd565.html
Заголовок, (Title) документа по адресу, URL1:
Fril - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)