Программирование на языке Пролог для искусственного интеллекта



         

Создание и декомпозиция термов: =, functor, arg, name - часть 5


%

%    подставить( Подтерм, Терм, Подтерм1, Терм1)

%

%    состоит в следующем: если все вхождения Подтерм'а в Терм

%    заменить на Подтерм1, то получится Терм1.

%    Случай 1: Заменить весь терм

        подставить( Терм, Терм, Терм1, Терм1) :-  !.

%    Случай 2: нечего подставлять

        подставить( _, Терм, _, Терм) :-

                atomic( Терм),  !.

%    Случай 3: Проделать подстановку в аргументах

        подставить( Под, Терм, Под1, Терм1) :-

                Терм =.. [F | Арги],

                                        % Выделить аргументы

        подспис( Под, Арги, Под1, Арги1),

                                        % Выполнить над ними подстановку

        Терм1 =.. [F | Арги1].

        подспис( Под, [Терм | Термы], Под1, [Терм1 | Термы1]) :-

                 подставить( Под, Терм, Под1, Терм1),

                 подспис( Под, Термы, Под1, Термы1).

line();

Рис. 7. 3.  Процедура подстановки в терм вместо одного из его

подтермов некоторого другого подтерма.




Содержание  Назад  Вперед