CS152
Chris Pollett
Dec 1, 2021
sum_up(1,1) :-!. sum_up(N,X) :- N1 is N-1, sum_up(N1,X1), X is X1+N.
repeat. repeat :-repeat. some_predicate :- initialize, repeat, do_action, again?, !, shut_down. .../*code of rest of program */
natural(0). natural(N) :- natural(M), N is M+1.
my_for_loop(N) :- natural(I), write(I), nl, I = N, !.
min(X,Y,X) := X <= Y, !. min(X,Y,Y) := X > Y, !.
hd_of_state(bob,elbonia) :- !. hd_of_state(anne,outland) :- !. hd_of_state(gilbert,mordor) :- !. hd_of_state(sally,frisia) :- !.
my_for_loop(N) :- natural(I), write(I), nl, I < N, !.is red. With the cut, after returning one solution, it will terminate, without the cut it won't, so the output behaviors are different.
sentence(Input,AfterS) :- noun_phrase(Input,AfterNP), verb_phrase(AfterNP,AfterS). noun_phrase(Input,AfterNP) :- determiner(Input,AfterDet), noun(AfterDet,AfterNP). verb_phrase(Input,AfterVP) :- verb(Input,AfterVP). verb_phrase(Input,AfterVP) :- verb(Input,AfterVerb), noun_phrase(AfterVerb,AfterVP). determiner([the|AfterDet],AfterDet). determiner([a|AfterDet],AfterDet). noun([cat|AfterN],AfterN). noun([milk|AfterN],AfterN). verb([drinks|AfterV],AfterV). verb([licks|AfterV],AfterV).
sentence --> noun_phrase, verb_phrase. noun_phrase --> determiner, noun. verb_phrase --> verb. verb_phrase --> verb, noun_phrase. determiner --> [the]. determiner --> [a]. noun --> [cat]. noun --> [milk]. verb --> [drinks]. verb --> [licks].
verb_phrase --> verb. verb_phrase --> verb, noun_phrase.as
verb_phrase --> verb | verb, noun_phrase.
[non-terminal] --> list of [non-terminal]s and [terminal]s.
list of [terminal]s and [non-terminal]s -> list of [terminal]s and [non-terminal]s.
[non-terminal] -->list of [terminal]s, [non-terminal]s,and Prolog rules or of the form:
[non-terminal],[terminal] --> list of [terminal]s, [non-terminal]s, and Prolog goals.
num(0) --> [zero]. num(N) --> xx(N). xx(N) --> digit(N). xx(N) --> teens(N). xx(N) --> tens(T), digit(N1), {N is T+N1}. digit(0) --> []. digit(1) --> [one]. digit(2) --> [two]. digit(3) --> [three]. digit(4) --> [four]. digit(5) --> [five]. digit(6) --> [six]. digit(7) --> [seven]. digit(8) --> [eight]. digit(9) --> [nine]. teens(10) --> [ten]. teens(11) --> [eleven]. teens(12) --> [twelve]. teens(13) --> [thirteen]. teens(14) --> [fourteen]. teens(15) --> [fifteen]. teens(16) --> [sixteen]. teens(17) --> [seventeen]. teens(18) --> [eighteen]. teens(19) --> [nineteen]. tens(20) --> [twenty]. tens(30) --> [thirty]. tens(40) --> [forty]. tens(50) --> [fifty]. tens(60) --> [sixty]. tens(70) --> [seventy]. tens(80) --> [eighty]. tens(90) --> [ninety].