В § 8 книги "Программирование для математиков" А.Г. Кушниренко и Г.В. Лебедева вводится понятие индуктивной функции на конечных последовательностях. Пусть
есть алфавит и
обозначает множество конечных слов в
. Функция
называется индуктивной, если существует функция
, такая что
для любых
и
. Если провести аналогию с Haskell, то это функция на списках, вычисляемая с помощью левой свертки, то есть foldl.
В книге доказывается, что для любой функции
, не обязательно индуктивной, существует единственное так называемое минимальное индуктивное расширение, то есть индуктивная функция
, такая что
факторизуется через
, то есть
для некоторой функции
. Минимальность при этом означает, что
факторизуется через любое другое индуктивное расширение
.
Мой вопрос: что можно сказать про класс функций, выражаемых с помощью правой свертки (foldr в Haskell) на бесконечных последовательностях
? То есть меня интересуют функции
, для которых существует
и имеет место
для всех
и
. В частности,
может совпадать с
. Насколько я понимаю, в Haskell foldl не работает на бесконечных списках, поэтому я спрашиваю про foldr. Есть ли альтернативное описание такого класса функций? Есть ли для них результат, аналогичный утверждению про минимальное индуктивное расширение?