Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
PL/10_1_a.pl nu(X,Y) :- \+ X=Y. PL/10_1_b.pl nu(X,Y) :- ( X=Y -> fail ; true ). PL/10_1_c.pl nu(X,X) :- !,fail. nu(_,_) :- !. PL/10_2.pl unifiable([],_,[]). unifiable([X|Xs],Term,[X|Result]) :- \+(\+ X=Term), unifiable(Xs,Term,Result). unifiable([X|Xs],Term,Result) :- \+ X=Term, unifiable(Xs,Term,Result). PL/11_1.pl subset([],[]). subset([X|Xs],[X|Ys]) :- subset(Xs,Ys). subset(X,[_|Ys]) :- subset(X,Ys). PL/11_2.pl subset([],[]). subset([X|Xs],[X|Ys]) :- subset(Xs,Ys). subset(X,[_|Ys]) :- subset(X,Ys). powerset(X,Y) :- findall(Z,subset(Z,X),Y). PL/3_1.pl connected(1,2). connected(3,4). connected(5,6). connected(7,8). connected(9,10). connected(12,13). connected(13,14). connected(15,16). connected(17,18). connected(19,20). connected(4,1). connected(6,3). connected(4,7). connected(6,11). connected(14,9). connected(11,15). connected(16,12). connected(14,17). connected(16,19). path(X,Y) :- connected(X,Y). path(X,Y) :- connected(X,Z), path(Z,Y). PL/3_2.pl byCar(auckland,hamilton). byCar(hamilton,raglan). byCar(valmont,saarbruecken). byCar(valmont,metz). byTrain(metz,frankfurt). byTrain(saarbruecken,frankfurt). byTrain(metz,paris). byTrain(saarbruecken,paris). byPlane(frankfurt,bangkok). byPlane(frankfurt,singapore). byPlane(paris,losAngeles). byPlane(bangkok,auckland). byPlane(losAngeles,auckland). travel(X,Y) :- byCar(X,Y). travel(X,Y) :- byTrain(X,Y). travel(X,Y) :- byPlane(X,Y). travel(X,Y) :- travel(X,Z), travel(Z,Y). PL/3_3.pl byCar(auckland,hamilton). byCar(hamilton,raglan). byCar(valmont,saarbruecken). byCar(valmont,metz). byTrain(metz,frankfurt). byTrain(saarbruecken,frankfurt). byTrain(metz,paris). byTrain(saarbruecken,paris). byPlane(frankfurt,bangkok). byPlane(frankfurt,singapore). byPlane(paris,losAngeles). byPlane(bangkok,auckland). byPlane(losAngeles,auckland). travel(X,Y) :- byCar(X,Y). travel(X,Y) :- byTrain(X,Y). travel(X,Y) :- byPlane(X,Y). travel(X,Y) :- travel(X,Z), travel(Z,Y). travel(X,Y,go(X,Y)) :- byCar(X,Y). travel(X,Y,go(X,Y)) :- byTrain(X,Y). travel(X,Y,go(X,Y)) :- byPlane(X,Y). travel(X,Y,go(X,Z,G)) :- travel(X,Z,go(X,Z)), travel(Z,Y,G). PL/3_4.pl byCar(auckland,hamilton). byCar(hamilton,raglan). byCar(valmont,saarbruecken). byCar(valmont,metz). byTrain(metz,frankfurt). byTrain(saarbruecken,frankfurt). byTrain(metz,paris). byTrain(saarbruecken,paris). byPlane(frankfurt,bangkok). byPlane(frankfurt,singapore). byPlane(paris,losAngeles). byPlane(bangkok,auckland). byPlane(losAngeles,auckland). travel(X,Y) :- byCar(X,Y). travel(X,Y) :- byTrain(X,Y). travel(X,Y) :- byPlane(X,Y). travel(X,Y) :- travel(X,Z), travel(Z,Y). travel(X,Y,go(X,Y,car)) :- byCar(X,Y). travel(X,Y,go(X,Y,train)) :- byTrain(X,Y). travel(X,Y,go(X,Y,plane)) :- byPlane(X,Y). travel(X,Y,go(X,Z,V,G)) :- travel(X,Z,go(X,Z,V)), travel(Z,Y,G). PL/4_1.pl combine1([],[],[]). combine1([X|Xs],[Y|Ys],[X,Y|Zs]) :- combine1(Xs,Ys,Zs). PL/4_2.pl combine2([],[],[]). combine2([X|Xs],[Y|Ys],[[X,Y]|Zs]) :- combine2(Xs,Ys,Zs). PL/4_3.pl combine3([],[],[]). combine3([X|Xs],[Y|Ys],[join(X,Y)|Zs]) :- combine3(Xs,Ys,Zs). PL/4_4.pl mysubset([],_). mysubset([X|Xs],Y) :- member(X,Y), mysubset(Xs,Y). PL/4_5.pl mysuperset(_,[]). mysuperset(X,[Y|Ys]) :- member(Y,X), mysuperset(X,Ys). PL/5_1.pl accMin([],Acc,Acc). accMin([X|Xs],Acc,Min) :- X < Acc, accMin(Xs,X,Min). accMin([X|Xs],Acc,Min) :- X >= Acc, accMin(Xs,Acc,Min). min(List,Min) :- List = [X|_], accMin(List,X,Min). PL/5_2.pl scalarMult(_,[],[]). scalarMult(N,[X|Xs],[Y|Ys]) :- Y is N*X, scalarMult(N,Xs,Ys). PL/5_3.pl dot([],[],Acc,Acc). dot([X|Xs],[Y|Ys],Acc,Result) :- NewAcc is X*Y+Acc, dot(Xs,Ys,NewAcc,Result). dot(List1,List2,Result) :- dot(List1,List2,0,Result). PL/6_1.pl is_member(X,Y) :- append(_,[X|_],Y). PL/6_2.pl set([],Acc,Acc). set([H|Tail],Acc,OutList) :- member(H,Acc), set(Tail,Acc,OutList). set([H|Tail],Acc,OutList) :- set(Tail,[H|Acc],OutList). set([H|Tail],OutList) :- set(Tail,[H],OutList). PL/6_3.pl flatten([], Acc, Acc). flatten(X, Acc, [X|Acc]) :- X\=[], X\=[_|_]. flatten([X|Xs], Acc, Result) :- flatten(Xs, Acc, NewAcc), flatten(X, NewAcc, Result). flatten(List,Flat) :- flatten(List,[],Flat). PL/7_1.pl s --> []. s --> a, a, s. a --> [a]. PL/7_2.pl s --> x. s --> a, s, d. x --> []. x --> b, b, x, c, c. a --> [a]. b --> [b]. c --> [c]. d --> [d]. PL/7_3.pl prop --> [p]. prop --> [q]. prop --> [r]. prop --> not, prop. prop --> lparen, prop, and, prop, rparen. prop --> lparen, prop, or, prop, rparen. prop --> lparen, prop, implies, prop, rparen. not --> [not]. lparen --> ['(']. rparen --> [')']. and --> [and]. or --> [or]. implies --> [implies]. PL/8_1.pl s(s(NP,VP)) --> np(NP,X,subject), vp(VP,X). np(np(DET,N),X,_) --> det(DET,X), n(N,X). np(np(PRO),X,Y) --> pro(PRO,X,Y). vp(vp(V,NP),X) --> v(V,X), np(NP,_,object). vp(vp(V),X) --> v(V,X). det(det(DET),X) --> [DET], {lex(DET,det,X)}. n(n(N),X) --> [N], {lex(N,n,X)}. pro(pro(PRO),X,Y) --> [PRO], {lex(PRO,pro,X,Y)}. v(v(V),X) --> [V], {lex(V,v,X)}. lex(he,pro,singular,subject). lex(she,pro,singular,subject). lex(they,pro,plural,subject). lex(him,pro,singular,object). lex(her,pro,singular,object). lex(them,pro,plural,object). lex(the,det,_). lex(a,det,singular). lex(man,n,singular). lex(woman,n,singular). lex(men,n,plural). lex(women,n,plural). lex(shoots,v,singular). lex(shoot,v,plural). PL/8_2.pl s(s(NP,VP)) --> np(NP,X,Y,subject), vp(VP,X,Y). np(np(DET,NBAR,PP),X,Y,_) --> det(DET,X), nbar(NBAR,X,Y), pp(PP). np(np(DET,NBAR),X,Y,_) --> det(DET,X), nbar(NBAR,X,Y). np(np(PRO),X,Y,Z) --> pro(PRO,X,Y,Z). vp(vp(V),X,Y) --> v(V,X,Y). vp(vp(V,NP),X,Y) --> v(V,X,Y), np(NP,_,_,object). nbar(nbar(JP),X,3) --> jp(JP,X). pp(pp(PREP,NP)) --> prep(PREP), np(NP,_,_,object). jp(N,X) --> n(N,X). jp(jp(ADJ,JP),X) --> adj(ADJ), jp(JP,X). det(det(DET),X) --> [DET], {lex(DET,det,X)}. pro(pro(PRO),X,Y,Z) --> [PRO], {lex(PRO,pro,X,Y,Z)}. v(v(V),X,Y) --> [V], {lex(V,v,X,Y)}. prep(prep(PREP)) --> [PREP], {lex(PREP,prep)}. n(n(N),X) --> [N], {lex(N,n,X)}. adj(adj(ADJ)) --> [ADJ], {lex(ADJ,adj)}. lex(i,pro,singular,1,subject). lex(you,pro,singular,2,subject). lex(he,pro,singular,3,subject). lex(she,pro,singular,3,subject). lex(it,pro,singular,3,subject). lex(we,pro,plural,1,subject). lex(you,pro,plural,2,subject). lex(they,pro,plural,3,subject). lex(me,pro,singular,1,object). lex(you,pro,singular,2,object). lex(him,pro,singular,3,object). lex(her,pro,singular,3,object). lex(it,pro,singular,3,object). lex(us,pro,plural,1,object). lex(you,pro,plural,2,object). lex(them,pro,plural,3,object). lex(shoot,v,singular,1). lex(shoot,v,singular,2). lex(shoots,v,singular,3). lex(shoot,v,plural,_). lex(the,det,_). lex(a,det,singular). lex(man,n,singular). lex(woman,n,singular). lex(table,n,singular). lex(cow,n,singular). lex(shower,n,singular). lex(on,prep). lex(under,prep). lex(men,n,plural). lex(women,n,plural). lex(small,adj). lex(frightened,adj). lex(big,adj). lex(fat,adj). PL/9_1.pl pptree(s(NP,VP)) :- write('s('), nl,tab(4), pptree(NP,4), nl,tab(4), pptree(VP,4),write(')'). pptree(det(DET)) :- write('det('), write(DET), write(')'). pptree(n(N)) :- write('n('), write(N), write(')'). pptree(v(V)) :- write('v('), write(V), write(')'). pptree(np(N),I) :- Indent is I+4, write('np('), nl, tab(Indent), pptree(N), write(')'). pptree(np(DET,N),I) :- Indent is I+4, write('np('), nl, tab(Indent), pptree(DET), nl, tab(Indent), pptree(N), write(')'). pptree(vp(V),I) :- Indent is I+4, write('vp('), nl, tab(Indent), pptree(V), write(')'). pptree(vp(V,NP),I) :- Indent is I+4, write('vp('), nl, tab(Indent), pptree(V), nl, tab(Indent), pptree(NP,Indent), write(')'). PL/9_2.pl :- op(100, fx, not). :- op(200, xfy, and). :- op(300, xfy, or). :- op(400, xfy, implies).