/*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,[]).