Я не знаю ничего конкретного, но вам нужны такие термины, как «специализированный компилятор», «специализация программы», «компиляция в направлении семантики» и «частичная оценка».Попробуйте их с и без "Пролог" в вашем запросе;Сообщество функционального программирования также провело много исследований в этой области.
Обратите внимание, что Пролог завершен по Тьюрингу, поэтому ни один подход не будет идеальным.Есть известные подмножества Пролога, такие как Datalog, но они не включают в себя ввод / вывод.Я считаю, что Даталог описан в «1003 * Искусство пролога» Стерлингом и Шапиро.(Тем не менее, в Datalog есть переменные, что достаточно для простых потоковых операций ввода-вывода.)
Если это не сработает, рассмотрите вопрос по cstheory .