Системы искусственного интеллекта, страница 2

append([N|L1],L2,[N|L3]) :-  append(L1,L2,L3).

% вывод списка на экран

print_list([]).

print_list([X|S]) :- write(X," "),print_list(S).

% определение агента, действия, объекта и остаточной части предложения

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S3),instrument(S3,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S3),instrument(S3,S4), position(S4,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S3),instrument(S3,S4), whentime(S4,S5),purpose(S5,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S3),instrument(S3,S4), purpose(S4,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S4), position(S4,S5),whentime(S5,S6),purpose(S6,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S4), position(S4,S5),whentime(S5,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S4), position(S4,S5),purpose(S5,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S4), whentime(S4,S6),purpose(S6,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S4), position(S4,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S4), purpose(S4,S0).

sentence(S,S0):-agent(S,S1),effect(S1,S2),object(S2,S5), whentime(S5,S6).                                       

% агент

agent(S,S0):-named_combination(S,S0).

agent([X|S],S):-pronoun(X).

% действие

effect(S,S0):- verb_named_combination(S,S0).

effect([X|S],S):-verb(X).

% объект = группа имени или группа сущуствительного

object(S,S0):-named_combination(S,S0).

object([X|S],S):-pronoun(X).

% средство или средство с предлогом

instrument([X|S],S0):-instrumental_preposition(X), instrument_named_combination(S,S0).

% время

whentime([X|S],S0):-time_preposition(X), time_named_combination(S,S0).

whentime(S,S0):-time_named_combination(S,S0). 

% место

position([X|S],S0):-local_preposition(X),local_named_combination(S,S0).

% цель или цель спредлогом

purpose([X|S],S0):-purpose_preposition(X),named_combination(S,S0).

% именное словосочетание

named_combination([X,Y|S],S):-adjective(X),noun(Y).

named_combination([X|S],S):-noun(X).

% локутивное именное словосочетание

local_named_combination([X,Y|S],S):-adjective(X),local_noun(Y).

local_named_combination([X|S],S):-local_noun(X).

% временное именное словосочетание

time_named_combination([X,Y|S],S):-adjective(X),time_noun(Y).

time_named_combination([X|S],S):-time_noun(X).

% глагольное именное словосочетание

verb_named_combination([X,Y|S],S):-adjective(X), verb(Y).

verb_named_combination([X|S],S):- verb(X).

% инстументальное именное словосочетание

instrument_named_combination([X,Y|S],S):-adjective(X), instrument_noun(Y).

instrument_named_combination([X|S],S):- instrument_noun(X).

% исходное утверждение

fact(["студент","решил","краевую","задачу","с использованием","Maple",

"в","весеннем","семестре","в","терминальном", "классе",