?-knk(a->b,X).
X=not a or b
?-knk(a->b->c,X).
?-kehtestatav(A->B).
A=false ;
B=true ;
no
?-kummutatav(A->B).
A=true,
B=false
?-tautoloogia(A->(B->A)).
yes
?-tautoloogia((A and (B or C))<->((A and B) or (A and C))).
yes
Vihje: Moodustage predikaadiga term_variables/2 valemi lausemuutujate list.
Genereerige kõik selle listi väärtustused ja arvutage nendel valemi tõeväärtus.
Valem, milles on n lausemuutujat, on tautoloogia parajasti siis, kui tal on
2n kehtestavat väärtustust.
tabel2(6,8,8).
tabel2(6,4,6).
tabel2(6,-,6).
?-leia_valem(tabel2(a,b,c),Term).
Term = (max(a,b)=c)
tabel(6,8,8).
tabel(6,4,4).
tabel(6,-,6).
tabel(-,6,6).
tabel(-,-,-).
?-leia_valem(tabel(a,b,c),Term).
Vihje: Kasutage termi konstrueerimiseks süsteemseid predikaate
functor/3 ja arg/3.
| Predikaat | energia(A,B,C,D,E,F,G,H,I) on tõene parajasti siis, kui |
|
A on liikuja kaal ühikutes B, C on vahemiku pikkus ühikutes D, E on liikumisviis, F on aeg ühikutes G, H on kulunud energia hulk ühikutes I. |
?-energia(70,kg,10,km,jalgsi,X,min,Y,kcal).
X = 150, Y = 750
?-energia(70,kg,X,km,joostes,60,min,Y,kcal).
X = 12, Y = 1000
?-energia(100,kg,10,km,X,Y,Z,W,kcal).
X = jalgsi, Y = 150, Z = min, W = 1065 ;
X = joostes, Y = 50, Z = min, W = 1420 ;
Programm oskab leida kulunud energia järgi ka vajaliku tegevuse.
?-energia(70,kg,X,km,Y,_,_,1000,kcal).
X = 13, Y = jalgsi ;
X = 12, Y = joostes ;
Allikas:
http://www.treenitargalt.ee/kuidas-olla-lihtsalt-vormis/
Vihje: Auto kulutab umbes 6 liitrit bensiini 100 km läbimiseks. Ühe liitri bensiini kütteväärtus on umbes 10 kwh.
plokk1(X,kcal,Y,kj):-Y is f(X).
plokk2(X,kj,Y,kwh):-Y is g(X).
Predikaadi energia/9 sisuks on koostada olemasolevate plokkide
kasutuskirjeldustest (sisend- ja väljundparameetrite loetelu)
Prologi programm P ning see käivitada:
energia(A,B,C,D,E,F,G,H,I):
tee_programm(A,B,C,D,E,F,G,H,I,P),
call(P).
Programmi P võib salvestada käsuga assert/1 dünaamilisse mällu.
Näiteks päringu
?-energia(70,kg,10,km,jalgsi,150,min,X,kwh).
jaoks tehakse programm
programm(A,B,C,D,E,F,G,H,I):-
plokk0(A,B,C,D,E,X,kcal),
plokk1(X,kcal,Y,kj),
plokk2(Y,kj,H,I).
ja päringu
?-energia(70,kg,10,km,jalgsi,X,min,750,kcal).
jaoks tehakse programm
programm(A,B,C,D,E,F,G,H,I):-
plokk3(C,D,F,G).
Sarnaselt saab leida kilokalorite järgi kõnnitava maa pikkuse:
?-energia(70,kg,X,km,jalgsi,150,min,750,kcal).
programm(A,B,C,D,E,F,G,H,I):-
plokk4(A,B,E,H,I,C,D).
?-transleeri('summa.java','summa.pl').
?-[summa].
Sisestage N: 4.
Arvude 1..4 summa on 10
% summa compiled 0.00 sec, 44 bytes
true.