SWI Prolog, например. Именно так я его и использовал: подключал к внешней программе. Там можно было двояко поступать: либо встраивать Prolog в прграмму, либо создавать внешние функции и импортировать их в Prolog.
Да, и там (в SWI Prolog) есть API, который позволяет из внешней программы конструировать клаузальные формы и добавлять их в базу данных Пролога прямо в процессе работы.
P.S. Очень давно не смотрел, как там дела. Последний раз его щупал десять лет назад. И SWI был очень популярной реализацией.
>А вот Swi, увы, не тянет - согласно немногочисленным тестам тормозной он, что важно, ибо пролог сам по себе небыстр.
Во-первых, тест тесту рознь. Противоречивых тестов по сети ходит множество относительно многих программных продуктов. Во-вторых, даже если и поверить тесту, у тебя такая задача, которая спотыкается на скорость? Ты бы испытал сначала сам, прежде чем делать суждения. SWI имеет необходимую функциональность для встраивания, что имеет далеко не каждая реализация Пролога. А то вдруг окажется, что среди встраиваемых, он самый быстрый. Рекомендую не выносить суждения заранее. Вот.
>Противоречивых тестов по сети ходит множество относительно многих программных продуктов.
По сравнению ,к примеру, с gprolog и yap, он тормозит на всех нагуглённых тестах. А до аквариуса ему вообще ещё расти и расти. Увы.
>Во-вторых, даже если и поверить тесту, у тебя такая задача, которая спотыкается на скорость?
Да, планируется создание большой базы знаний. И не хотелось бы, чтобы рано или поздно она начала тормозить. Пролог сам по себе и так тормозной, а в SWI ещё и тормоза в реализации. Я уже давно выбрал для себя gprolog как почти самый быстрый из свободных, но увы, у него в доке неопределённость по плюсам и по возможности создавать БЗ внутри них.
>А то вдруг окажется, что среди встраиваемых, он самый быстрый.
А вот это, увы, проверить пока не могу, но и гадать тоже не есть выход.
Еще есть вариант. Запасной. Можно использовать Prolog, реализованный на Common Lisp. Ты получаешь не только Prolog, но и Lisp. А получаешь REPL, в который можешь добавлять знания в любой момент в процессе работы. REPL -- неотъемлемая часть системы. Причем методы встраивания могут быть весьма разными. А можно и вообще все делать на Common Lisp, а реализацию Prolog на нем использовать, как одну из подсистем. Весьма мощный иинтересный подход.
Реализация Prolog на Common Lisp есть в книге Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, написанной тов. Peter Norvig, который ныне является Director of Reasearch в Google. На основе его работы компания Franz выпустила Allegro Prolog, который работает поверх Allegro Common Lisp.