/*engelska substantiv*/

elex([dolphins],m(dolphin,animal),n,pl,_,obj).

elex([centuries],m(century,count),n,pl,_,nom).

elex([whales],m(whale,animal),n,pl,_,_).

elex([porpoises],m(porpoise,animal),n,pl,_,_).

elex([family],m(family,count),n,sg,_,_).

elex([mammals],m(mammal,animal),n,pl,_,_).

elex([cetaceans],m(cetacean,animal),n,pl,_,_).

elex([blowhole],m(blowhole,count),n,sg,_,_).

elex([head],m(head,count),n,sg,_,_).

elex([bodies],m(body,count),n,pl,_,_).

elex([fish],m(fish,animal),n,pl,_,_).

elex([motorboats],m(motorboat,count),n,pl,_,_).

elex([schools],m(school,count),n,pl,_,_).

elex([tuna],m(tuna,animal),n,_,_,_).

elex([men],m(men,count),n,pl,_,_).

elex([nature],m(nature),n,_,_,obj).

elex([members],m(member,count),n,pl,_,_).

elex([air],m(air),n,_,_,_).

elex([top],m(top,count),n,_,_,_).

elex([waters],m(water),n,pl,_,_).

elex([worlds],m(world),n,pl,_,_).

elex([oceans],m(ocean),n,pl,_,_).

elex([swimmers],m(svimmer),n,pl,_,_).

elex([pace],m(pace),n,_,_,_).

 

/*engelska adjektiv*/

elex([playful],m(playful),a,_,_).

elex([stunning],m(stunning),a,_,_).

elex([intelligence],m(intelligence),a,_,_).

elex([known],m(know,perf_part),a,_,_).

elex([warm_blooded],m(warm_blooded),a,_,_).

elex([warm],m(warm),a,_,_).

elex([cool],m(cold),a,_,_).

elex([muscular],m(muscular),a,_,_).

elex([streamlined],m(streamlined),a,_,_).

elex([fast],m(fast),a,_,_).

elex([agile],m(agile),a,_,_).

elex([high_speed],m(high_speed),a,_,_).

/*engelska pronomen*/

elex([they],m(p(3),subj),pron,pl,p3,_).

elex([their],m(p(3),foren),posspron,pl,p3,_).

elex([that],m(that,_),relpron,_,_,_).

elex([like],m(like,_),ppron,_,p3,_).

/*engelska verb*/

elex([have],m(have,pres),v,_,_).

elex([enchanted],m(enchant,past),v,_,_).

elex([displays],m(display,pres),v,pl,_).

elex([breathe],m(breathe,pres),v,_,_).

elex([located],m(located,imper),v,_,_).

elex([inhabit],m(inhabit,pres),v,_,_).

elex([can],m(can,pres),v,_,_).

elex([seen],m(see,perf_part),v,_,_).

elex([keeping],m(keep,pres),v,_,_).

elex([travel],m(travel,pres),v,_,_).

elex([out_race],m(out_race,pres),v,_,_).

elex([like],m(like,pres),v,_,_).

elex([bear],m(bear,pres),v,_,_).

/*coppula verb*/

elex([are],m(be,pres),copv,pl,_).

elex([am],m(be,pres),copv,sg,p1).

elex([is],m(be,pres),copv,sg,p3).

/*engelska prepositioner*/

elex([for],m(for),prep,_,_).

elex([with],m(with),prep,_,_).

elex([through],m(through),prep,_,_).

/*engelska konjunktioner*/

elex([and],m(and,kopp),k,_,_).

/*adverb*/

elex([both],m(both),adv,_,_).

elex([around],m(around),adv,_,_).

elex([undersea],(undersea),adv,_,_).

elex([easily],m(easy),adv,_,_).

elex([often],m(often),adv,_,_).

elex([together],m(together),adv,_,_).

elex([beneath],m(beneath),adv,_,_).

elex([oceangoing],m(oceangoing),adv,_,_).

elex([most],m(much),adv,_,_).

elex([a],m(a),art,_,_).

esent(d,[advlp(P,Q),agent(X),pred(Y),obj(m(Part,past,O)),prep(C,D),advlp(E,F),advlp(H,I,J)])-->

{elex(Form,Y,v,Nb,Person)},

eadvlp(P,Nb,Person,Q),

enp(X,Nb,Person,obj),

evp(Y,Nb,Person),

evp(m(Part,past),Nb,Person,O),

eprep(C,_,_,D),

eadjp(E,Nb,Person,F),

ekonj(G,_,_),

eadjp(H,Nb,Person,I,J).

esent(d,[agent(X),subjattr(A,B,C,D),pred(Y),predattr(O),advlp(E,F,G),advlp(H,I)])-->

{elex(Form,Y,copv,Nb,Person)},

enp(X,Nb,Person,Case),

epron(A,ppron,_,_),

enp(B,Nb,Person,Case,C,D),

ecop(Y,Nb,Person),

enp(O,Nb,Persom,Case),

enp(E,Nb,Person,Case,F,G),

eadj(H,Nb,Person),

[Prep],

enp(I,Nb,Person,Case).

esent(d,[agent(X),pred(Y),advl(Z),pred(A),obj(B),advl(C,Q,D),advl(E,F,G,L),pred(I),obj(J,K)])-->

{elex(Form,Y,copv,Nb,Person)},

epron(X,Nb,Person,Case),

ecop(Y,Nb,Person),

eadj(Z,Nb,Person),

evp(A,_,_),

enp(B,Nb,Person,Case),

eprep(C,Nb,Person,Q,D),

evp(E,_,_),

[at],

enp(F,_,_,_),

[of],

epron(G,_,_,_),

enp(L,_,_,_),

ekonj(H,_,_),

evp(I,_,_,J,K).

esent(d,[agent(X),pred(Y),advl(Z,Q,W),obj(A),advl(B,C,D)])-->

{elex(Form,Y,v,Nb,Person)},

enp(X,Nb,Person,Case),

evp(Y,Nb,Person),

eadvp(Z,Nb,Person,Q,W),

enp(A,Nb,Person,Case),

eadvp(B,_,_,C,D).

esent(d,[prep(F,G),prepobj(C,D,E),agent(X),pred(Y),obj(Z,Q,A,B)])-->

{elex(Form,Y,copv,Nb,Person)},

eprep(F,_,_,G),

eadj(C,_,_,D),

enp(E,Nb,Person,Case),

enp(X,Nb,Person,Case),

ecop(Y,Nb,Person),

eadj(Z,_,_,Q),

eadvlp(A,_,_,B).

esent(d,[agent(X),pred(Y),predadvl(A),advl(B),obj(C,D),pred(F),advl(G,H),obj(I,J),prep(K,L,M)])-->

{elex(Form,Y,v,Nb,Person)},

epron(X,Nb,Person,Case),

evp(Y,Nb,Person),

eadv(A,Nb,Person),

evp(B,Nb,Person),

eadvlp(C,_,_,D),

ekonj(E,_,_),

ecop(F,_,_),

eadvlp(G,_,_,H),

evp(I,_,_,J),

eprep(K,_,_,L,M).

 

 

eadvlp(X,_,_,Z)-->[Y],{elex([Y],X,prep,_,_)},enp(Z,_,_,nom).

eadvlp(X,_,_,Z)-->[Y],{elex([Y],X,prep,_,_)},epron(Z,_,_,_).

eadvlp(X,_,_,Z)-->[Y],{elex([Y],X,adv,_,_)},enp(Z,_,_,_).

eadvlp(X,_,_,Z)-->[Y],{elex([Y],X,adv,_,_)},evp(Z,_,_).

eprep(X,_,_,Z,Q)-->[Y],{elex([Y],X,prep,_,_)},eadj(Z,_,_),enp(Q,_,_,_).

eprep(X,_,_,Z)-->[Y],{elex([Y],X,prep,_,_)},epron(Z,posspron,_,_).

eprep(X,_,_)-->[Y],{elex([Y],X,prep,_,_)}.

ecop(X,Nb,Person)-->[Y],{elex([Y],X,copv,Nb,Person)}.

enp(X,Nb,Person,Case,Z,Q)-->[Y],{elex([Y],X,n,Nb,Person,Case)},ekonj(Z,_,_),enp(Q,_,_,_).

enp(X,Nb,Person,Case)-->[Y],{elex([Y],X,n,Nb,Person,Case)}.

enp(X,Nb,Person,Case,Z,Q)-->[of],[the],[Y],{elex([Y],X,n,_,_,_)},[of],eadv(Z,_,_),enp(Q,_,_,_).

enp(X,Nb,Person,Case)-->[the],[Y],{elex([Y],X,n,Nb,Person,Case)}.

evp(X,Nb,Person)-->[Y],{elex([Y],X,v,Nb,Person)}.

evp(X,Nb,Person,Z)-->[Y],{elex([Y],X,v,Nb,Person)},enp(Z,_,_,_).

evp(X,Nb,Person,Z,Q)-->[Y],{elex([Y],X,v,Nb,Person)},eadj(Z,_,_),enp(Q,Nb,Person,Case).

eadjp(X,_,_,Z,W)-->[Y],{elex([Y],X,a,_,_)},evp(Z,Nb,Person),[of],eadj(W,_,_).

eadjp(X,_,_,Z)-->[Y],{elex([Y],X,a,_,_)},enp(Z,_,_,obj).

eadj(X,_,_,Z)-->[Y],{elex([Y],X,a,_,_)},eadj(Z,_,_).

eadj(X,_,_)-->[Y],{elex([Y],X,a,_,_)}.

epron(X,Nb,Person,Case)-->[Y],{elex([Y],X,ppron,Nb,Person,Case)}.

epron(X,Nb,Person,Case)-->[Y],{elex([Y],X,pron,Nb,Person,Case)}.

epron(X,_,_,_)-->[Y],{elex([Y],X,posspron,Nb,Person,Case)}.

ekonj(X,_,_)-->[Y],{elex([Y],X,k,_,_)}.

eadv(X,_,_)-->[Y],{elex([Y],X,adv,_,_)}.

eadvp(X,_,_,Q,Z)-->[Y],{elex([Y],X,adv,_,_)},eadj(Q,_,_),[Konj],eadj(Z,_,_).

eadvp(X,_,_,Q,Z)-->[Y],{elex([Y],X,adv,_,_)},[the],enp(Q,Nb,Person,Case),enp(Z,Nb,Person,Case).

eprep(X,Nb,Person,Q,Z)-->[Y],{elex([Y],X,prep,_,_)},ebestart(Q,_,_),enp(Z,_,_,_).

ebestart(X,_,_)-->[Y],{elex([Y],X,art,_,_)}.

enp(X,Nb,Person,Case)-->[Prep],[the],[Y],{elex([Y],X,n,Nb,Person,Case)}.

/* substantiv*/

slex([delfiner],m(dolphin,animal),n,pl,_,obj).

slex([arhundraden],m(century,count),n,pl,_,nom).

slex([valar],m(whale,animal),n,pl,_,_).

slex([tumlare],m(porpoise,animal),n,pl,_,_).

slex([familjen],m(family,count),n,sg,_,_).

slex([daggdjur],m(mammal,animal),n,pl,_,_).

slex([cetaceans],m(cetacean,animal),n,pl,_,_).

slex([blashal],m(blowhole,count),n,sg,_,_).

slex([huvud],m(head,count),n,sg,_,_).

slex([kroppar],m(body,count),n,pl,_,_).

slex([fiskar],m(fish,animal),n,pl,_,_).

slex([motorbotarna],m(motorboat,count),n,pl,_,_).

slex([manniskor],m(men,count),n,pl,_,_).

slex([natur],m(nature),n,_,_,obj).

slex([medlemmar],m(member,count),n,pl,_,_).

slex([luft],m(air),n,_,_,_).

slex([toppen],m(top,count),n,_,_,_).

slex([vatten],m(water),n,_,_,_).

slex([varldens],m(world),n,_,_,_).

slex([hav],m(ocean),n,pl,_,_).

slex([simmare],m(svimmer),n,pl,_,_).

slex([fart],m(pace),n,_,_,_).

slex([ungar],m(young),n,pl,_,_).

/*adjektiv*/

slex([lekfulla],m(playful),a,_,_).

slex([forbluffande],m(stunning),a,_,_).

slex([intelligens],m(intelligence),a,_,_).

slex([kanda],m(know,perf_part),a,_,_).

slex([varmblodiga],m(warm_blooded),a,_,_).

slex([varma],m(warm),a,pl,_).

slex([kalla],m(cold),a,pl,_).

slex([muskulosa],m(muscular),a,_,_).

slex([stromlinjeformade],m(streamlined),a,_,_).

slex([snabba],m(fast),a,_,_).

slex([viga],m(agile),a,_,_).

slex([levande],m(live),a,_,_).

slex([snabb_gaende],m(high_speed),a,_,_).

 

/* pronomen*/

slex([deras],m(p(3),foren),posspron,pl,p3,_).

slex([som],m(like,_),ppron,_,_,_).

slex([de],m(p(3),subj),pron,pl,p3,_).

slex([som],m(that,_),relpron,_,_,_).

/*verb*/

slex([har],m(have,pres),v,_,_).

slex([fortrollat],m(enchant,past),v,_,_).

slex([forevisning],m(display,pres),v,pl,_).

slex([andas],m(breathe,pres),v,_,_).

slex([lokaliserad],m(located,imper),v,_,_).

slex([bebor],m(inhabit,pres),v,_,_).

slex([kan],m(can,pres),v,_,_).

slex([ses],m(see,perf_part),v,_,_).

slex([halla],m(keep,pres),v,_,_).

slex([reser],m(travel,pres),v,_,_).

slex([utklassa],m(out_race,pres),v,_,_).

slex([gillar],m(like,pres),v,_,_).

slex([simma],(swim,pres),v,_,_).

slex([foder],m(bear,pres),v,_,_).

/*coppula verb*/

slex([ar],m(be,pres),copv,_,_).

/* prepositioner*/

slex([i],m(for),prep,_,_).

slex([med],m(with),prep,_,_).

slex([genom],m(through),prep,_,_).

/*konjunktioner*/

slex([och],m(and,kopp),k,_,_).

/*adverb*/

slex([bade],m(both),adv,_,_).

slex([runt],m(around),adv,_,_).

slex([undervattens],(undersea),adv,_,_).

slex([latt],m(easy),adv,_,_).

slex([ofta],m(often),adv,_,_).

slex([tillsammans],m(together),adv,_,_).

slex([under],m(beneath),adv,_,_).

slex([oceangaende],m(oceangoing),adv,_,_).

slex([flesta],m(much),adv,_,_).

slex([ett],m(a),art,_,_).

ssent(d,[advlp(P,Q),agent(X),pred(Y),obj(m(Part,past,O)),prep(C,D),advlp(E,F),advlp(H,I,J)])-->

{slex(Form,Y,v,Nb,Person)},

sadvlp(P,Nb,Person,Q),

svp(Y,Nb,Person),

snp(X,Nb,Person,obj),

svp(m(Part,past),Nb,Person,O),

sprep(C,_,_,D),

sadjp(E,Nb,Person,F),

skonj(G,_,_),

sadjp(H,Nb,Person,I,J).

ssent(d,[agent(X),subjattr(A,B,C,D),pred(Y),predattr(O),advlp(E,F,G),advlp(H,I)])-->

{slex(Form,Y,copv,Nb,Person)},

snp(X,Nb,Person,Case),

spron(A,ppron,_,_),

snp(B,Nb,Person,Case,C,D),

scop(Y,Nb,Person),

snp(O,Nb,Persom,Case),

snp(E,Nb,Person,Case,F,G),

sadj(H,Nb,Person),

[som],

snp(I,Nb,Person,Case).

ssent(d,[agent(X),pred(Y),advl(Z),pred(A),obj(B),advl(C,Q,D),advl(E,F,G,L),pred(I),obj(J,K)])-->

{slex(Form,Y,copv,Nb,Person)},

spron(X,Nb,Person,Case),

scop(Y,Nb,Person),

sadj(Z,Nb,Person),

svp(A,_,_),

snp(B,Nb,Person,Case),

sprep(C,Nb,Person,Q,D),

svp(E,_,_),

[pa],

snp(F,Nb,Person,Case),

[av],

spron(G,_,_,_),

snp(L,_,_,_),

skonj(H,_,_),

svp(I,_,_,J,K).

ssent(d,[agent(X),pred(Y),advl(Z,Q,W),obj(A),advl(B,C,D)])-->

{slex(Form,Y,v,Nb,Person)},

snp(X,Nb,Person,Case),

svp(Y,Nb,Person),

sadvp(Z,Nb,Person,Q,W),

snp(A,Nb,Person,Case),

sadvp(B,_,_,C,D).

ssent(d,[prep(F,G),prepobj(C,D,E),agent(X),pred(Y),obj(Z,Q,A,B)])-->

{slex(Form,Y,copv,Nb,Person)},

sprep(F,_,_,G),

sadj(C,_,_,D),

snp(E,Nb,Person,Case),

scop(Y,Nb,Person),

snp(X,Nb,Person,Case),

sadj(Z,_,_,Q),

sadvlp(A,_,_,B).

ssent(d,[agent(X),pred(Y),predadvl(A),advl(B),obj(C,D),pred(F),advl(G,H),obj(I,J),prep(K,L,M)])-->

{slex(Form,Y,v,Nb,Person)},

spron(X,Nb,Person,Case),

svp(Y,Nb,Person),

sadv(A,Nb,Person),

svp(B,Nb,Person),

[de],

sadvlp(C,_,_,D),

skonj(E,_,_),

scop(F,_,_),

sadvlp(H,_,_,G),

svp(I,_,_,J),

sprep(K,_,_,L,M).

sprep(X,_,_,Z,Q)-->[Y],{slex([Y],X,prep,_,_)},[de],sadj(Z,_,_),snp(Q,_,_,_).

sprep(X,Nb,Person,Q,Z)-->[Y],{slex([Y],X,prep,_,_)},sbestart(Q,_,_),snp(Z,_,_,_).

sprep(X,Nb,Person,Z)-->[Y],{slex([Y],X,prep,_,_)},spron(Z,posspron,_,_).

sprep(X,Nb,Person,Z)-->[Y],{slex([Y],X,prep,_,_)},snp(Z,Nb,Person,Case).

sbestart(X,_,_)-->[Y],{slex([Y],X,art,_,_)}.

sadvlp(X,_,_,Z)-->[Y],{slex([Y],X,adv,_,_)},svp(Z,_,_).

sadvlp(X,_,_,Z)-->[Y],{slex([Y],X,adv,_,_)},snp(Z,_,_,_).

sadvlp(X,_,_,Z)-->[Y],{slex([Y],X,prep,_,_)},snp(Z,_,_,nom).

scop(X,Nb,Person)-->[Y],{slex([Y],X,copv,Nb,Person)}.

snp(X,Nb,Person,Case,Z,Q)-->[Y],{slex([Y],X,n,Nb,Person,Case)},skonj(Z,_,_),snp(Q,_,_,_).

snp(X,Nb,Person,Case,Z,Q)-->[i],[],[Y],{slex([Y],X,n,_,_,_)},[av],sadv(Z,_,_),snp(Q,_,_,_).

snp(X,Nb,Person,Case)-->[Y],{slex([Y],X,n,Nb,Person,Case)}.

svp(X,Nb,Person)-->[Y],{slex([Y],X,v,Nb,Person)}.

svp(X,Nb,Person,Z)-->[Y],{slex([Y],X,v,Nb,Person)},snp(Z,_,_,_).

svp(X,Nb,Person,Z,Q)-->[Y],{slex([Y],X,v,Nb,Person)},sadj(Z,_,_),snp(Q,Nb,Person,Case).

svp(X,_,_,Z)-->[Y],{slex([Y],X,v,Nb,Person)},sadv(Z,_,_).

sadjp(X,_,_,Z)-->[Y],{slex([Y],X,a,_,_)},snp(Z,_,_,obj).

sadjp(X,_,_,Z,W)-->[Y],{slex([Y],X,a,_,_)},svp(Z,_,_),[av],sadj(W,_,_).

sadj(X,_,_,Z)-->[Y],{slex([Y],X,a,_,_)},sadj(Z,_,_).

sadj(X,_,_)-->[Y],{slex([Y],X,a,_,_)}.

skonj(X,_,_)-->[Y],{slex([Y],X,k,_,_)}.

sadv(X,_,_)-->[Y],{slex([Y],X,adv,_,_)}.

sadvp(X,_,_,Q,Z)-->[Y],{slex([Y],X,adv,_,_)},sadj(Q,_,_),[och],sadj(Z,_,_).

sadvp(X,_,_,Q,Z)-->[Y],{slex([Y],X,adv,_,_)},[],snp(Q,Nb,Person,Case),snp(Z,Nb,Person,Case).

spron(X,_,_,_)-->[Y],{slex([Y],X,ppron,_,_,_)}.

spron(X,Nb,Person,Case)-->[Y],{slex([Y],X,pron,Nb,Person,Case)}.

spron(X,_,_,_)-->[Y],{slex([Y],X,posspron,_,_,_)}.

translate(E,S):-

esent(T,A,E,[]),ssent(T,A,S,[]).