Перенос программы с Turbo Prologa в Visual Prolog

Заказчик
[no-member:pro]Владислав[/no-member:pro]Владислав
Параметры проекта
Вариант сотрудничестваОдноразовый проект
РазделРазработка программ
Предоплатабез предоплат
Способы оплатыНаличные, Банковский перевод
Приём заявокзавершён
Описание проекта
Есть экспертная система обнаружение неполадок автомобиля для Turbo Prolog. Программа задаёт вопросы, человек отвечает, в итоге получаем ответ программы. Какая неполадка имеется в автомобиле, по её признакам.
И есть база знаний.
Вопрос стоит таков, помогите перенести программу на Visual Prolog консоль. Плачу монету!
Код программы на Turbo Prolog и база знаний.
[HIGHLIGHT="prolog"]
DOMAINS
I=integer
S=string
C=char
Li=i*
DATABASE - knowledge
Cond(i,s)
Rule(s,li)
DATABASE - dialog
Cond_is(i,c)
PREDICATES
Start
Cars
Check(li)
Test_cond(i)
Update
Add_cond(li)
Print_cond(i,li,li)
Read_cond(c,li,li)
Ex_cond(i,li,li,i)
Wr_cond(c,i,li,li)
New_cond(i,li,li)
Read_true_char(c)
Test(c,c)
CLAUSES
Start:-
consult("exp.DDB",knowledge),
nl,nl,nl,nl, write("***** Help cars ****"),nl,
write("Pomochnik obnaryzgenia nepoladki"),nl,
write("Ovetite na voprosi, a ya ykazgy ploblemy"),nl,
cars,
retractall(_,dialog),
retractall(_,knowledge),
nl,nl,write("Mogy snova vam pomoch? (1 - da, 2 - net)"),
read_true_char(C),
C=1,!,start.
Start:-
nl,nl,write("************************ Vsego dobrogo! Do novih vstrech"),
readchar(_).
Cars:-
rule(X,L),
check(L),
nl,nl,write("************************ Expert sistema Help Cars"),nl,
write("* Opredelila nepoladku: ",X),nl,
write("ya prav? (1 - da, 2 - net)"),
read_true_char(C),C=1,!.
Cars:-
nl,nl,write("************************ Ya ne znayu, chto eto za polomka"),nl,
nl,write("Davaite dobavim ee' v bazu znani"),nl,
update.
Update:-
nl,write("Vvedie nepoladky:"),
readln(S),
add_cond(L),
assert(rule(S,L),knowledge),
save("exp.ddb",knowledge).
Add_cond(L):-
cond_is(_,'1'),!,
nl,nl,write("************************ O nepoladki izvestni, prichina: "),
print_cond(1,[],L1),
nl,write("Izvestno li o nem esho chto-nibud? (1 - da, 2 - net)"),
read_true_char(C),
read_cond(C,L1,L).
Add_cond(L):-
read_cond('1',[],L).
Print_cond(H,L,L):-
not(cond(H,_)),!.
Print_cond(H,L,L1):-
cond_is(H,'1'),!,
cond(H,T),
H1=H+1,
nl,write(T),
print_cond(H1,[H|L],L1).
Print_cond(H,L,L1):-
H1=H+1,
print_cond(H1,L,L1).
Read_cond('1',L,L2):-
ex_cond(1,L,L1,N),
new_cond(N,L1,L2),!.
Read_cond(_,L,L):-!.
Ex_cond(N,L,L,N):-
not(cond(N,_)),!.
Ex_cond(N,L,L1,N2):-
cond_is(N,_),!,
N1=N+1,
ex_cond(N1,L,L1,N2).
Ex_cond(N,L,L1,N2):-
cond(N,S),
nl,write("Y nee ",S,"? (1 - da, 2 - net)"),
read_true_char(A),
wr_cond(A,N,L,L2),
N1=N+1,
ex_cond(N1,L2,L1,N2).
Wr_cond('1',N,L,[N|L]):-!.
Wr_cond('2',_,L,L):-!.
New_cond(N,L,L1):-
nl,write("Est' esho prichini? (1 - da, 2 - net)"),
read_true_char(A),
A=1,!,
nl,write("Ukaghite new svoistvo, polomki"),nl,
nl,write("New otlichintelinoe cvoistvo nepoladki '"), readln(S),
assertz(cond(N,S)),
N1=N+1,
new_cond(N1,[N|L],L1).
New_cond(_,L,L).
Check([H|T]):-
test_cond(H),
check(T).
Check([]).
Test_cond(H):-
cond_is(H,'1'),!.
Test_cond(H):-
cond_is(H,'2'),!,
fail.
test_cond(H):-
cond(H,S),
nl,nl,write("Y vas ",S,"? (1 - da, 2 - net)"),
read_true_char(A),
assert(cond_is(H,A)),
test_cond(H).
Read_true_char(C):-
readchar(C1),
test(C1,C).
Test(C,C):-
'1'
И есть база знаний.
Вопрос стоит таков, помогите перенести программу на Visual Prolog консоль. Плачу монету!
Код программы на Turbo Prolog и база знаний.
[HIGHLIGHT="prolog"]
DOMAINS
I=integer
S=string
C=char
Li=i*
DATABASE - knowledge
Cond(i,s)
Rule(s,li)
DATABASE - dialog
Cond_is(i,c)
PREDICATES
Start
Cars
Check(li)
Test_cond(i)
Update
Add_cond(li)
Print_cond(i,li,li)
Read_cond(c,li,li)
Ex_cond(i,li,li,i)
Wr_cond(c,i,li,li)
New_cond(i,li,li)
Read_true_char(c)
Test(c,c)
CLAUSES
Start:-
consult("exp.DDB",knowledge),
nl,nl,nl,nl, write("***** Help cars ****"),nl,
write("Pomochnik obnaryzgenia nepoladki"),nl,
write("Ovetite na voprosi, a ya ykazgy ploblemy"),nl,
cars,
retractall(_,dialog),
retractall(_,knowledge),
nl,nl,write("Mogy snova vam pomoch? (1 - da, 2 - net)"),
read_true_char(C),
C=1,!,start.
Start:-
nl,nl,write("************************ Vsego dobrogo! Do novih vstrech"),
readchar(_).
Cars:-
rule(X,L),
check(L),
nl,nl,write("************************ Expert sistema Help Cars"),nl,
write("* Opredelila nepoladku: ",X),nl,
write("ya prav? (1 - da, 2 - net)"),
read_true_char(C),C=1,!.
Cars:-
nl,nl,write("************************ Ya ne znayu, chto eto za polomka"),nl,
nl,write("Davaite dobavim ee' v bazu znani"),nl,
update.
Update:-
nl,write("Vvedie nepoladky:"),
readln(S),
add_cond(L),
assert(rule(S,L),knowledge),
save("exp.ddb",knowledge).
Add_cond(L):-
cond_is(_,'1'),!,
nl,nl,write("************************ O nepoladki izvestni, prichina: "),
print_cond(1,[],L1),
nl,write("Izvestno li o nem esho chto-nibud? (1 - da, 2 - net)"),
read_true_char(C),
read_cond(C,L1,L).
Add_cond(L):-
read_cond('1',[],L).
Print_cond(H,L,L):-
not(cond(H,_)),!.
Print_cond(H,L,L1):-
cond_is(H,'1'),!,
cond(H,T),
H1=H+1,
nl,write(T),
print_cond(H1,[H|L],L1).
Print_cond(H,L,L1):-
H1=H+1,
print_cond(H1,L,L1).
Read_cond('1',L,L2):-
ex_cond(1,L,L1,N),
new_cond(N,L1,L2),!.
Read_cond(_,L,L):-!.
Ex_cond(N,L,L,N):-
not(cond(N,_)),!.
Ex_cond(N,L,L1,N2):-
cond_is(N,_),!,
N1=N+1,
ex_cond(N1,L,L1,N2).
Ex_cond(N,L,L1,N2):-
cond(N,S),
nl,write("Y nee ",S,"? (1 - da, 2 - net)"),
read_true_char(A),
wr_cond(A,N,L,L2),
N1=N+1,
ex_cond(N1,L2,L1,N2).
Wr_cond('1',N,L,[N|L]):-!.
Wr_cond('2',_,L,L):-!.
New_cond(N,L,L1):-
nl,write("Est' esho prichini? (1 - da, 2 - net)"),
read_true_char(A),
A=1,!,
nl,write("Ukaghite new svoistvo, polomki"),nl,
nl,write("New otlichintelinoe cvoistvo nepoladki '"), readln(S),
assertz(cond(N,S)),
N1=N+1,
new_cond(N1,[N|L],L1).
New_cond(_,L,L).
Check([H|T]):-
test_cond(H),
check(T).
Check([]).
Test_cond(H):-
cond_is(H,'1'),!.
Test_cond(H):-
cond_is(H,'2'),!,
fail.
test_cond(H):-
cond(H,S),
nl,nl,write("Y vas ",S,"? (1 - da, 2 - net)"),
read_true_char(A),
assert(cond_is(H,A)),
test_cond(H).
Read_true_char(C):-
readchar(C1),
test(C1,C).
Test(C,C):-
'1'