ALPDOC

1412
ALP DOCUMENTA TION FILE ************************** A. Michiels, University of Lièe !"ichiels#$l.!c.%e &&&&&&&&&&&&&&&&&&&&&&&& P'OLO( P'O('AM &&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & ALP, A L!tin P! rser &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & "ore s)ecific!lly & A +!t!+riven fe!t$re$nific!tion )!rser for ! "icros$%set of cl!ssic!l L!tin & L!test U)+!te Fe%r$!ry -/0 & 1 Archi%!l+ Michiels, University of Lièe, 2eli$" &&&&&&& & DECLA'ATION3 &&&&&&& set4)rolo4fl!5+o$%le46$otes, co+es7. & only necess!ry if ho"e"!+e 8etsentence8 is $se+ 5e6$iv!lent of re!+ln7  & 8etsentence8 I3 "!+e $se of in the )resent version 9999999999999999999 style4chec:5sinleton7. style4chec:5+isconti$o$s7. +yn!"ic5le;<=7. & the 8le;8 )re+ic!te is )!rtly fe+ %y "!croe;)!nsion cl!$ses e;ec$te+ !t r$nti"e & !n+ "$st therefore %e +ecl!re+ +yn!"ic & o)er!tor +ecl!r!tion o)5>,;f;,?7. & $se+ in r$les r$le4n!"e ? r$le4%o+y 5@list of 8!ctions8 to %e t!:en7 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & e")ty chec: )oint for 6$ic: +e%$in c!ll s)y5chec:)oint7 & !fter insertin ! c!ll or sever!l c!lls to 8chec:)oint5/78 & ... 8chec:)oint5n78 Bherever !))ro)ri!te & Then st!rt ste))in thro$h the o!ls chec:)oint547. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

description

Documentation file for a Prolog program, ALP, A Latin Parser,a data-driven feature-unification parser for a subset of Classical Latin by Archibald Michiels, University of Liège

Transcript of ALPDOC

  • ALP DOCUMENTATION FILE**************************

    A. Michiels, University of [email protected]

    %%%%%%%%%%%%%%%%%%%%%%%%PROLOG PROGRAM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ALP, A Latin Parser%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % more specifically :% A data-driven feature-unification parser for a micro-subset of classical Latin

    % Latest Update : February 2016% Archibald Michiels, University of Lige, Belgium

    %%%%%%%% DECLARATIONS%%%%%%%

    :- set_prolog_flag(double_quotes, codes). % only necessary if home-made 'getsentence' is used (equivalent of readln)

    % 'getsentence' IS made use of in the present version !!!!!!!!!!!!!!!!!!!

    :- style_check(-singleton).:- style_check(-discontiguous).

    :- dynamic(lex/3).

    % the 'lex' predicate is partly fed by macro-expansion clauses executed at run-time% and must therefore be declared dynamic

    % operator declaration:

    :- op(800,xfx,--->).

    % used in rules : rule_name ---> rule_body (=list of 'actions' to be taken)

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% empty check point for quick debugging; call : spy(checkpoint)% after inserting a call or several calls to 'checkpoint(1)'% ... 'checkpoint(n)' wherever appropriate% Then start stepping through the goals

    checkpoint(_).

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  • % better readability in the programmer's eye ;-)

    ifthen(Condition,Goal) :- Condition -> Goal ; true.ifthenelse(Condition, ThenGoal, ElseGoal) :- Condition -> ThenGoal ; ElseGoal.

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GO STEP%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    go :- nl, protocola(alp), % protocol file stored in the current directory write('ALP, a data-driven feature-unification parser for a micro-subset of classical Latin' ),nl, write('-----------------------------------------------------------------------------------'), nl,nl, write('A.Michiels, University of Lige'),nl,nl, write('Expanding the lexical macros...'),nl, mkthem,mkmore, % generating the morphological variants nl,nl, write('Input file? [stdin. or file_name.] --> '), read(Input), dealwith(Input,HandleIn), write('Output file? [file_name.] --> '), read(Output), concat(Output,'.lst',Outlist), % writing a file VOCFILE containing the vocabulary in expanded format: open(vocfile,write,Voc), tell(Voc), listing(lex/3), told, tell(user), % to be used for debugging purposes after sorting with 'sort' (e.g. sort vocfile > vc) % the file should never sport a variable as % first arg of a lex/3 clause - trouble on the way... !, start(Outlist,HandleIn,Input).

    % Input is from stdin(user's terminal) or from file%%%%%%%%%%%%%%%%%%%%%%%%%%

    dealwith(stdin,_):- !. % nothing to be done, no file to be opened - % standard input (from the user's terminal)

    dealwith(FileIn,HandleIn):- open(FileIn,read,HandleIn). % open(File_Name,Mode,Stream)

    start(Outlist,_,stdin) :- open(Outlist,write,Lists), recorda(out,Lists,_),

  • recorda(alltime,0,_), repeat, clear, % clearing the data base statistics(cputime,TB), recorda(time,TB), % record starting time nl, nl, write('Key in your sentence or stop. to quit'), nl, getsentence(Sentence, % list of words corresponding to string user, % where the string is to be found ".?!", % sentence delimiters : final dot / question mark / exclamation mark ",:", % word delimiters : comma / colon ",:", % returned punctuation signs : comma / colon nocaps, % decapitalize or leave alone (nocaps - caps) _), % end-of-file capture % getsentence is also responsible for the v/u distinction to be dropped % it turns all v's into u's eraseall(pos), % clearing database eraseall(fin), deque(Sentence, Clean), % getting rid of enclitic -que (and other minor text manipulations) process(Clean,Lists).

    start(Outlist,HandleIn,Input) :- Input \= stdin, open(Outlist,write,Lists), % open(File_Name,Mode,Stream) recorda(out,Lists,_), nl, recorda(alltime,0,_), repeat, clear, statistics(cputime,TB), recorda(time,TB), nl, getsentence(Sentence,HandleIn, ".?!", ",:", ",:", nocaps, _), % see above

    Sentence\=['%'|_], % comment line % these lines silently fail

    % this failure sends us back to the beginning of

    % the repeat-fail loop write(Sentence),nl, eraseall(pos), eraseall(fin), deque(Sentence, Clean), process(Clean,Lists).

  • % start the whole thing%%%%%%%%%%%%

    process(Sentence,Stream) :- positions(Sentence,0,L), nl,nl(Stream),write(L),writeq(Stream,L),nl(Stream),nl, runs.

    /* 'positions' computes word positions starting from zero;the sentence with the word positions fed in (the L list) is thenprinted on screen and in the results file

    'runs' calls a quartet of run(Pass), where Pass is " stop ",then " lex "(icon), then (passes making up) " gr "(ammar), then " output "

    each run is supposed to be independent - we do not come back to it when it has done its jobso we have to make sure that a run *** never *** requires information that one of the next runs provides

    'run(Pass)' recursively calls itself, going through allthe 'rule_name ---> rule_body' pairs for that passwhen no new info is found, it fails,because all the clauses for '--->' have a condition(a 'not recorded' check included in the definition ofthe predicate 'build') which will lead to failure

    before failing, the last pass, run(output), gets a chance to print(once each) one or more parses spanning the whole S

    the failing of 'runs' causes backtracking to the repeat goal in 'start';the db is cleared and the process relaunched with a new S from the user

    if the S happens to be 'stop.' the process halts by abortion (abort). */

    % computing string positions%%%%%%%%%%%%%%%

    % each word in the list is assigned a starting and an ending position% not that the first word spans from position 0 to position 1

    positions([Head|Tail],Pos,Listofwords) :-

    phrase_words(Phrase_words), % list of phrasewords, i.e. words which belong only to phrases such as 'pili' % this list is to be carefully updated whenever a new phrase is entered

    ifthenelse( ((lex(Head,_,_), NewHead=Head); % the word is known and is to be entered as such

    (member(Head,Phrase_words), NewHead=Head) ; % OR the word is a member of the list of phrase words

  • (atom_concat(First1,ne,Head), % OR we have 'ne' attached to a word registered as suche.g. 'romamne' lex(First1,_,_), First1\=non, % we keep particle 'nonne' as a single lex NewHead=First1,Part=yes); % we keep track of the fact that there WAS a particle attached

    (atom_concat(First,Second,Head), % only Head is known - atom divisions are putforward by atom_concat (atom_concat(First,u,FirstExpand) ; atom_concat(First,ui,FirstExpand); atom_concat(First,ue,FirstExpand) ), % contracted pft atom_concat(FirstExpand,Second,Known), lex(Known,v,FS), % the full form is registered as a verb form NewHead=Known); % OR the word is a contracted form of a verb; we register the non-contracted form

    % OR the word bears a suffix with established meaning and function: % we register the suffix in a suffix box which keeps track of the position of the word % to which the suffix is attached (Pos,Posand1) % the suffix must be attached to a registered word - otherwise we let it go % the suffixes concerned are: % cumque / nam / piam / dam / uis / libet / quisque / que ????????? % code to be added here !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    (Head=stop,NewHead=Head) % OR the word is the word Stop ), % IF % we register only known words (lex items or phrase members) or the stop. command

    (Posand1 is Pos + 1, % THEN ifthenelse(var(Part), % no particle detected (no attached 'ne') (recorda(pos,position(Pos,Posand1,NewHead),_), Next=Posand1,Listofwords=[Pos/NewHead|Tails]), % THEN only one word added to the word list (Next is Posand1 +1, % OR ELSE recorda(pos,position(Pos,Posand1,ne_int),_), % record the particle recorda(pos,position(Posand1,Next,NewHead),_), % record the word Listofwords=[Pos/ne_int,Posand1/NewHead|Tails] % add both particle and word to the word list )), % we record the word, expanded if necessary positions(Tail,Next,Tails)), % we start from Next, which is either Posand1 or

    % succ(Posand1)

    (positions(Tail,Pos,Tails),recorda(unknown,Head,_))

  • % ELSE word is unknown and is recorded as such in the 'unknown' box ).

    % position of the last word indicates string end

    positions([],X,[endpos(X)]) :- recorda(fin,fin(X),_). % the 'fin' box records the end positition of the string,

    % which will be used by the 'path' procedure to ensure% that the proposed parse covers the whole string

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% meta-interpreter%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % Stopping...%%%%%%%runs :- run(stop).

    % vocabulary%%%%%%%runs :- run(lex). % words and fixed phrases (in ius, in dubium)

    % GRAMMAR RUNS%%%%%%%%%%%%%%%%%%%

    % adjective phrases and verbs

    runs :- run(adv).runs :- run(adj).runs :- run(verb).

    % nps

    runs :- run(core). % core nps % full nps, i.e. with args or genitives attached or nps with relative clauses % must be dealt with later, in the 'finite' run % the information is simply not available yet...

    % clauses and complex nps and pps (which can hold nps with finite rel clauses...)% sentence level : nonfinite and finite% most of the grammatical parsing occurs at this level

    runs :- run(finite).

    % Outputting results

  • %%%%%%%%%%

    runs :- run(output).

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    run(Pass) :- Pass \= output, % THIS CHECK TO BE REMOVED BEFORE USING THE DEBUGGING OUTPUT PROCEDURES !!! [Pass,Rule_name] ---> Condition_Action, testexec(Condition_Action), run(Pass).

    % OUTPUT %%%%%%%%%%%

    run(output) :- [Pass,Rule_name] ---> Condition_Action, testexec(Condition_Action), fail. % FAIL GOAL TO BE REMOVED BEFORE USING THE DEBUGGING OUTPUT PROCEDURES !!!

    % the output needs to be executed only once, and then fail to allow% the processing of the following S

    % the [Pass,Rule_name] part does not give rise to any action ;% it is there only for guiding the process (through Pass)% and for documentation and debugging purposes

    testexec([]).testexec([First|Rest]) :- call(First), testexec(Rest).

    % testexec is simply a list traversal with execution% of each element as a Prolog goal

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% the lexicon%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % An awful amount of morphological generation is involved here.% It should be realised that while a parser is being developped, tested and debugged,% it is far better to have an EXACT account of the information associated with each morphological variant% and to be able to modify at will the information carried by each variant.

    % The vocabulary file (called 'vocfile') produced as a byproduct of running the parser,% once sorted, gives us a very simple way of inspecting that information% for any wordform the parser works with.

  • % A morphological analyser is better left aside until the parsing procedures % are felt to be accurate and robust.% That time is, I'm afraid, not around the corner.

    % Sorting the vocfile is achieved by a call to a unix-like 'sort' procedure :% e.g. 'sort vocfile > vf.pl'% vf, being a Prolog file, can then be examined by Prolog calls % as well as inspected as the text file it is by any textual inspector program.

    % pattern:

    % lex(Textual_form,Record_Box_in_db,Feature_List)

    %%%%%%%%%% macro expansion%%%%%%%%%

    % These are the procedures responsible for wordform generation

    % repeat-fail loop through the fail in the macroprocedures

    mkthem :- repeat, macro_verb, % 'standard' verbs macro_dep, % deponent verbs macro_aux, % auxiliaries macro_imp, % impersonal verbs macro_adj_1, % bonus macro_adj_1a, % unus (unius,uni...) macro_adj_2, % fortis macro_adj_2a, % ingens macro_adj_all, % comparatives and superlatives macro_noun_1, % regina macro_noun_2, % dominus macro_noun_2_n, % templum macro_noun_3_mf, % miles macro_noun_3_n, % nomen macro_noun_4_mf, % exercitus macro_noun_5, % res write('Done').

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % five verb types%%%%%%%%%

    % standard (std)%%%%%%%%

  • % amo, amas, amatverb_endings(1, o,as,at,amus,atis,ant, are, % indicative present / infinitive present em,es,et,emus,etis,ent, % subjunctive present er,eris,etur,emur,emini,entur, % subjunctive present passive a,ate, % imperative active ato,ato,atote,anto, % imperative future 2nd and 3rd person, sg and pl abam,abas,abat,abamus,abatis,abant, % imperfect indicative abar,abaris,abatur,abamur,abamini,abantur, % imperfect indicative passive abo,abis,abit,abimus,abitis,abunt, % future indicative abor,aberis,abitur,abimur,abimini,abuntur, % future indicative passive arem,ares,aret,aremus,aretis,arent, % subj imperfect active arer,areris,aretur,aremur,aremini,arentur, % subjunctive imperfect passive i, isti, it, imus, istis, erunt,ere, % perfect indicative isse,and,ans,ant, % perfect infinitive / gerund root / present participle nom / pr part root or,aris,atur,amur,amini,antur,ari, % present indicative passive eram, eras,erat,eramus,eratis,erant, % pluperfect indicative ero,eris,erit,erimus,eritis,erint, % future perfect indicative erim,eris,erit,erimus,eritis,erint, % future perfect subjunctive issem,isses,isset,issemus,issetis,issent). % pluperfect subjunctive

    % habeo, habes, habetverb_endings(2, o,s,t,mus,tis,nt, re, am,as,at,amus,atis,ant, ar,aris,atur,amur,amini,antur, '',te, to,to,tote,nto, bam,bas,bat,bamus,batis,bant, bar,baris,batur,bamur,bamini,bantur, bo,bis,bit,bimus,bitis,bunt, bor,beris,bitur,bimur,bimini,buntur, rem,res,ret,remus,retis,rent, rer,reris,retur,remur,remini,rentur, i, isti, it, imus, istis, erunt,ere, isse,nd,ns,nt, or,ris,tur,mur,mini,ntur,ri, eram, eras,erat,eramus,eratis,erant, ero,eris,erit,erimus,eritis,erint, erim,eris,erit,erimus,eritis,erint, issem,isses,isset,issemus,issetis,issent).

    % mitto, mittis, mittitverb_endings(3, o, is, it, imus, itis, unt, ere, am,as,at,amus,atis,ant, ar,aris,atur,amur,amini,antur, e,ite, ito,ito,itote,unto, ebam,ebas,ebat,ebamus,ebatis,ebant, ebar,ebaris,ebatur,ebamur,ebamini,ebantur, am,es,et,emus,etis,ent, ar,eris,etur,emur,emini,entur, erem,eres,eret,eremus,eretis,erent,

  • erer,ereris,eretur,eremur,eremini,erentur, i, isti, it, imus,istis, erunt,ere, isse,end,ens,ent, or,eris,itur,imur,imini,untur,i, eram, eras,erat,eramus,eratis,erant, ero,eris,erit,erimus,eritis,erint, erim,eris,erit,erimus,eritis,erint, issem,isses,isset,issemus,issetis,issent).

    % insanio, insanis, insanitverb_endings(4, o,s,t,mus,tis,unt,re, am,as,at,amus,atis,ant, ar,aris,atur,amur,amini,antur, '',te, to,to,tote,unto, ebam,ebas,ebat,ebamus,ebatis,ebant, ebar,ebaris,ebatur,ebamur,ebamini,ebantur, am,es,et,emus,etis,ent, ar,eris,etur,emur,emini,entur, rem,res,ret,remus,retis,rent, rer,reris,retur,remur,remini,rentur, i,isti,it,imus,istis,erunt,ere, isse,end,ens,ent, or,ris,tur,mur,mini,untur,ri, eram, eras,erat,eramus,eratis,erant, ero,eris,erit,erimus,eritis,erint, erim,eris,erit,erimus,eritis,erint, issem,isses,isset,issemus,issetis,issent).

    % capio, capis, capitverb_endings(5, io,is,it,imus,itis,iunt,ere, iam,ias,iat,iamus,iatis,iant, iar,iaris,iatur,iamur,iamini,iantur, i,ite, ito,ito,itote,iunto, iebam,iebas,iebat,iebamus,iebatis,iebant, iebar,iebaris,iebatur,iebamur,iebamini,iebantur, iam,ies,iet,iemus,ietis,ient, iar,ieris,ietur,iemur,iemini,ientur, erem,eres,eret,eremus,eretis,erent, erer,ereris,eretur,eremur,eremini,erentur, i,isti,it,imus,istis,erunt,ere, isse,iend,iens,ient, ior,eris,itur,imur,imini,iuntur,i, eram, eras,erat,eramus,eratis,erant, ero,eris,erit,erimus,eritis,erint, erim,eris,erit,erimus,eritis,erint, issem,isses,isset,issemus,issetis,issent).

    % deponent (dep)%%%%%%%%

  • % hortorverb_endings_d(1, or,aris,atur,amur,amini,antur, % present indicative er,eris,etur,emur,emini,entur, % present subjunctive abar,abaris,abatur,abamur,abamini,abantur, % imperfect indicative abor,aberis,abitur,abimur,abimini,abuntur, % future indicative arer,areris,aretur,aremur,aremini,arentur, % subjunctive imperfect ari,and,ans,ant, % infinitive / gerund root / present part nom / pr part root are,amini). % imperative

    % uereorverb_endings_d(2, or,ris,tur,mur,mini,ntur, ar,aris,atur,amur,amini,antur, bar,baris,batur,bamur,bamini,bantur, bor,beris,bitur,bimur,bimini,buntur, rer,reris,retur,remur,remini,rentur, ri,nd,ns,nt, re,mini).

    % sequorverb_endings_d(3, or,eris,itur,imur,imini,untur, ar,aris,atur,amur,amini,antur, ebar,ebaris,ebatur,ebamur,ebamini,ebantur, ar,eris,etur,emur,emini,entur, erer,ereris,eretur,eremur,eremini,erentur, i,end,ens,ent, ere,imini).

    % largiorverb_endings_d(4, or,ris,tur,mur,mini,untur, ar,aris,atur,amur,amini,antur, ebar,ebaris,ebatur,ebamur,ebamini,ebantur, ar,eris,etur,emur,emini,entur, rer,reris,retur,remur,remini,rentur, ri,end,ens,ent, re,mini).

    % patiorverb_endings_d(5,ior,eris,itur,imur,imini,iuntur, iar,iaris,iatur,iamur,iamini,iantur, iebar,iebaris,iebatur,iebamur,iebamini,iebantur, iar,ieris,ietur,iemur,iemini,ientur, erer,ereris,eretur,eremur,eremini,erentur, i,iend,iens,ient, ere,imini).

    % auxiliaries and impersonal%%%%%%%%%%%%%%

    % most of their conjugated forms are entered as such in the verb entry fed to lex

    % fui, fuisti, fuit, etc

  • verb_endings(aux, i,isti,it,imus,istis,erunt,ere, % perfect indicative isse, % perfect infinitive eram, eras,erat,eramus,eratis,erant, % pluperfect indicative ero,eris,erit,erimus,eritis,erint, % future perfect indicative erim,eris,erit,erimus,eritis,erint, % future perfect subjunctive issem,isses,isset,issemus,issetis,issent). % pluperfect subjunctive

    % decuit, decuisse, etc.verb_endings(imp, it,isse,erat,erit,isset). % impersonal verbs

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MACROS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    macro_verb :-

    verb([v(Lex,Conj,RootPr,RootPft,RootSup)],Class,Kind),

    verb_endings(Conj, Pr1sg,Pr2sg,Pr3sg,Pr1pl,Pr2pl,Pr3pl, PrInf, Pr1sgsubj,Pr2sgsubj,Pr3sgsubj,Pr1plsubj,Pr2plsubj,Pr3plsubj, PPr1sgsubj,PPr2sgsubj,PPr3sgsubj,PPr1plsubj,PPr2plsubj,PPr3plsubj, Imp2sg,Imp2pl, Imp2sgfut,Imp3sgfut,Imp2plfut,Imp3plfut, Pr1sgimpft,Pr2sgimpft,Pr3sgimpft,Pr1plimpft,Pr2plimpft,Pr3plimpft, PPr1sgimpft,PPr2sgimpft,PPr3sgimpft,PPr1plimpft,PPr2plimpft,PPr3plimpft, Pr1sgfut,Pr2sgfut,Pr3sgfut,Pr1plfut,Pr2plfut,Pr3plfut, PPr1sgfut,PPr2sgfut,PPr3sgfut,PPr1plfut,PPr2plfut,PPr3plfut, Pr1sgimpfts,Pr2sgimpfts,Pr3sgimpfts,Pr1plimpfts,Pr2plimpfts,Pr3plimpfts, Pr1sgimpftsp,Pr2sgimpftsp,Pr3sgimpftsp,Pr1plimpftsp,Pr2plimpftsp,Pr3plimpftsp, Pft1sg,Pft2sg,Pft3sg,Pft1pl,Pft2pl,Pft3pl,Pft3plbis, PftInf,Ger,PrParts,PrPart, Prp1sg,Prp2sg,Prp3sg,Prp1pl,Prp2pl,Prp3pl, PrPInf, PluPft1sg,PluPft2sg,PluPft3sg,PluPft1pl,PluPft2pl,PluPft3pl, FPft1sg,FPft2sg,FPft3sg,FPft1pl,FPft2pl,FPft3pl, Pft1sgs,Pft2sgs,Pft3sgs,Pft1pls,Pft2pls,Pft3pls, PluPft1sgs,PluPft2sgs,PluPft3sgs,PluPft1pls,PluPft2pls,PluPft3pls),

    % first declension adj endings used for past participles and gerundives

    declension_endings(adj,1,[_,Acmsg,Genmsg,Datmsg,Ablmsg, Nfsg,Acfsg,Genfsg,Datfsg,Ablfsg, Nnsg,Acnsg,Gennsg,Datnsg,Ablnsg, Nmpl,Acmpl,Genmpl,Datmpl,Ablmpl, Nfpl,Acfpl,Genfpl,Datfpl,Ablfpl,

  • Nnpl,Acnpl,Gennpl,Datnpl,Ablnpl]),

    % for present participles

    declension_endings(partpr,[Accmfsg2,Geng3sg2,Datg3sg2,Abl1g3sg2,Abl2g3sg2, Nommfpl2,Accmfpl2,Nomnpl2,Accnpl2, Geng3pl2, Datg3pl2,Ablg3pl2]),

    ifthen(RootPr \= xxx, % the verb does have the required root

    % present participles

    (atom_concat(RootPr,PrParts,PrPartB), % am+ans -> amans, etcatom_concat(RootPr,PrPart,PrPartA), % am+ant- -> amant-, etc

    % PrPartB (amans, etc) : Nominative masc fem neuter sg + acc neuter sg

    atom_concat(PrPartA,Accmfsg2,PrPAccmfsg), % acc masc fem sgatom_concat(PrPartA,Geng3sg2,PrPGeng3sg), % gen 3 genders sgatom_concat(PrPartA,Datg3sg2,PrPDatg3sg), % dat 3 genders sgatom_concat(PrPartA,Abl1g3sg2,PrPAbl1g3sg), % i-abl 3 genders sgatom_concat(PrPartA,Abl2g3sg2,PrPAbl2g3sg), % e-abl 3 genders sg

    atom_concat(PrPartA,Nommfpl2,PrPNommfpl),atom_concat(PrPartA,Accmfpl2,PrPAccmfpl),atom_concat(PrPartA,Nomnpl2,PrPNomnpl),atom_concat(PrPartA,Accnpl2,PrPAccnpl),atom_concat(PrPartA,Geng3pl2,PrPGeng3pl),atom_concat(PrPartA,Datg3pl2,PrPDatg3pl),atom_concat(PrPartA,Ablg3pl2,PrPAblg3pl),

    % indicative present active

    atom_concat(RootPr,Pr1sg,V1sg),atom_concat(RootPr,Pr2sg,V2sg),atom_concat(RootPr,Pr3sg,V3sg),atom_concat(RootPr,Pr1pl,V1pl),atom_concat(RootPr,Pr2pl,V2pl),atom_concat(RootPr,Pr3pl,V3pl),

    % infinitive present active

    atom_concat(RootPr,PrInf,Inf),

    % subjunctive present active

    atom_concat(RootPr,Pr1sgsubj,V1sgsubj),atom_concat(RootPr,Pr2sgsubj,V2sgsubj),atom_concat(RootPr,Pr3sgsubj,V3sgsubj),atom_concat(RootPr,Pr1plsubj,V1plsubj),atom_concat(RootPr,Pr2plsubj,V2plsubj),

  • atom_concat(RootPr,Pr3plsubj,V3plsubj),

    % indicative imperfect active

    atom_concat(RootPr,Pr1sgimpft,V1sgimpft),atom_concat(RootPr,Pr2sgimpft,V2sgimpft),atom_concat(RootPr,Pr3sgimpft,V3sgimpft),atom_concat(RootPr,Pr1plimpft,V1plimpft),atom_concat(RootPr,Pr2plimpft,V2plimpft),atom_concat(RootPr,Pr3plimpft,V3plimpft),

    % subjunctive imperfect active

    atom_concat(RootPr,Pr1sgimpfts,V1sgimpfts),atom_concat(RootPr,Pr2sgimpfts,V2sgimpfts),atom_concat(RootPr,Pr3sgimpfts,V3sgimpfts),atom_concat(RootPr,Pr1plimpfts,V1plimpfts),atom_concat(RootPr,Pr2plimpfts,V2plimpfts),atom_concat(RootPr,Pr3plimpfts,V3plimpfts),

    % indicative futur active

    atom_concat(RootPr,Pr1sgfut,V1sgfut),atom_concat(RootPr,Pr2sgfut,V2sgfut),atom_concat(RootPr,Pr3sgfut,V3sgfut),atom_concat(RootPr,Pr1plfut,V1plfut),atom_concat(RootPr,Pr2plfut,V2plfut),atom_concat(RootPr,Pr3plfut,V3plfut),

    % imperative present active

    atom_concat(RootPr,Imp2sg,V2sgimp),atom_concat(RootPr,Imp2pl,V2plimp),

    % imperative future

    atom_concat(RootPr,Imp2sgfut,V2sgimpfut),atom_concat(RootPr,Imp2plfut,V2plimpfut),atom_concat(RootPr,Imp3sgfut,V3sgimpfut),atom_concat(RootPr,Imp3plfut,V3plimpfut),

    % gerunds

    atom_concat(RootPr,Ger,Gerbase),atom_concat(Gerbase,um,Gerundum),atom_concat(Gerbase,i,Gerundum_gen),atom_concat(Gerbase,o,Gerundum_abl),

    % third person middle or passive : monetur, insanitur, etc.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    atom_concat(RootPr,Prp3sg,V3Psg), % insanitur

  • atom_concat(RootPr,PPr3sgsubj,PV3sgsubj), % insaniaturatom_concat(RootPr,PPr3sgimpft,PV3sgimpft), % insaniebaturatom_concat(RootPr,PPr3sgfut,PV3sgfut))), % insanietur

    ifthen(RootPft \= xxx, % we do have a 'perfect' root% perfect active

    (atom_concat(RootPft,Pft1sg,V1sgpft),atom_concat(RootPft,Pft2sg,V2sgpft),atom_concat(RootPft,Pft3sg,V3sgpft),atom_concat(RootPft,Pft1pl,V1plpft),atom_concat(RootPft,Pft2pl,V2plpft),atom_concat(RootPft,Pft3pl,V3plpft),atom_concat(RootPft,Pft3plbis,V3plpftbis),

    atom_concat(RootPft,PftInf,Infp),

    % indicative pluperfect active

    atom_concat(RootPft,PluPft1sg,PluV1sgpft),atom_concat(RootPft,PluPft2sg,PluV2sgpft),atom_concat(RootPft,PluPft3sg,PluV3sgpft),atom_concat(RootPft,PluPft1pl,PluV1plpft),atom_concat(RootPft,PluPft2pl,PluV2plpft),atom_concat(RootPft,PluPft3pl,PluV3plpft),

    % future perfect active

    atom_concat(RootPft,FPft1sg,FV1sgpft),atom_concat(RootPft,FPft2sg,FV2sgpft),atom_concat(RootPft,FPft3sg,FV3sgpft),atom_concat(RootPft,FPft1pl,FV1plpft),atom_concat(RootPft,FPft2pl,FV2plpft),atom_concat(RootPft,FPft3pl,FV3plpft),

    % subjunctive perfect active

    atom_concat(RootPft,Pft1sgs,V1sgpfts),atom_concat(RootPft,Pft2sgs,V2sgpfts),atom_concat(RootPft,Pft3sgs,V3sgpfts),atom_concat(RootPft,Pft1pls,V1plpfts),atom_concat(RootPft,Pft2pls,V2plpfts),atom_concat(RootPft,Pft3pls,V3plpfts),

    % subjunctive pluperfect active

    atom_concat(RootPft,PluPft1sgs,PluV1sgpfts),atom_concat(RootPft,PluPft2sgs,PluV2sgpfts),atom_concat(RootPft,PluPft3sgs,PluV3sgpfts),atom_concat(RootPft,PluPft1pls,PluV1plpfts),atom_concat(RootPft,PluPft2pls,PluV2plpfts),atom_concat(RootPft,PluPft3pls,PluV3plpfts) )),

  • ifthen(RootSup \= xxx, % we have a supine(atom_concat(RootSup,um,Supin), atom_concat(RootSup,ur,PartFut),

    % future participle

    atom_concat(PartFut,us,PFFNmsg),atom_concat(PartFut,Acmsg,PFFAcmsg),atom_concat(PartFut,Genmsg,PFFGenmsg),atom_concat(PartFut,Datmsg,PFFDatmsg),atom_concat(PartFut,Ablmsg,PFFAblmsg),atom_concat(PartFut,Nfsg,PFFNfsg),atom_concat(PartFut,Acfsg,PFFAcfsg),atom_concat(PartFut,Genfsg,PFFGenfsg),atom_concat(PartFut,Datfsg,PFFDatfsg),atom_concat(PartFut,Ablfsg,PFFAblfsg),atom_concat(PartFut,Nnsg,PFFNnsg),atom_concat(PartFut,Acnsg,PFFAcnsg),atom_concat(PartFut,Gennsg,PFFGennsg),atom_concat(PartFut,Datnsg,PFFDatnsg),atom_concat(PartFut,Ablnsg,PFFAblnsg),atom_concat(PartFut,Nmpl,PFFNmpl),atom_concat(PartFut,Acmpl,PFFAcmpl),atom_concat(PartFut,Genmpl,PFFGenmpl),atom_concat(PartFut,Datmpl,PFFDatmpl),atom_concat(PartFut,Ablmpl,PFFAblmpl),atom_concat(PartFut,Nfpl,PFFNfpl),atom_concat(PartFut,Acfpl,PFFAcfpl),atom_concat(PartFut,Genfpl,PFFGenfpl),atom_concat(PartFut,Datfpl,PFFDatfpl),atom_concat(PartFut,Ablfpl,PFFAblfpl),atom_concat(PartFut,Nnpl,PFFNnpl),atom_concat(PartFut,Acnpl,PFFAcnpl),atom_concat(PartFut,Gennpl,PFFGennpl),atom_concat(PartFut,Datnpl,PFFDatnpl),atom_concat(PartFut,Ablnpl,PFFAblnpl) )),

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ifthen( (Class=tr_cod;Class=tr_cod_coi;Class=tr_cod_cplt; Class=tr_cod_prep_cplt;Class=tr_inf), % transitive verbs, the only ones to sport gerundives

    % GERUNDIVES % listing of transitive classes to be revised regularly !!!!!!% THEN-CLAUSE( ifthen(RootPr \= xxx,(atom_concat(Gerbase,us,FNmsg),atom_concat(Gerbase,Acmsg,FAcmsg),atom_concat(Gerbase,Genmsg,FGenmsg),atom_concat(Gerbase,Datmsg,FDatmsg),atom_concat(Gerbase,Ablmsg,FAblmsg),

  • atom_concat(Gerbase,Nfsg,FNfsg),atom_concat(Gerbase,Acfsg,FAcfsg),atom_concat(Gerbase,Genfsg,FGenfsg),atom_concat(Gerbase,Datfsg,FDatfsg),atom_concat(Gerbase,Ablfsg,FAblfsg),atom_concat(Gerbase,Nnsg,FNnsg),atom_concat(Gerbase,Acnsg,FAcnsg),atom_concat(Gerbase,Gennsg,FGennsg),atom_concat(Gerbase,Datnsg,FDatnsg),atom_concat(Gerbase,Ablnsg,FAblnsg),atom_concat(Gerbase,Nmpl,FNmpl),atom_concat(Gerbase,Acmpl,FAcmpl),atom_concat(Gerbase,Genmpl,FGenmpl),atom_concat(Gerbase,Datmpl,FDatmpl),atom_concat(Gerbase,Ablmpl,FAblmpl),atom_concat(Gerbase,Nfpl,FNfpl),atom_concat(Gerbase,Acfpl,FAcfpl),atom_concat(Gerbase,Genfpl,FGenfpl),atom_concat(Gerbase,Datfpl,FDatfpl),atom_concat(Gerbase,Ablfpl,FAblfpl),atom_concat(Gerbase,Nnpl,FNnpl),atom_concat(Gerbase,Acnpl,FAcnpl),atom_concat(Gerbase,Gennpl,FGennpl),atom_concat(Gerbase,Datnpl,FDatnpl),atom_concat(Gerbase,Ablnpl,FAblnpl),

    % SING

    % nominative masc singasserta(lex(FNmsg,gdiv,[pos:gdiv,txt:FNmsg ,case:nom, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % accusative masc singasserta(lex(FAcmsg,gdiv,[pos:gdiv,txt:FAcmsg , case:acc, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% genitive masc singasserta(lex(FGenmsg,gdiv,[pos:gdiv,txt:FGenmsg , case:gen, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% dative masc singasserta(lex(FDatmsg,gdiv,[pos:gdiv,txt:FDatmsg , case:dat, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% ablative masc singasserta(lex(FAblmsg,gdiv,[pos:gdiv,txt:FAblmsg , case:abl, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % nominative fem singasserta(lex(FNfsg,gdiv,[pos:gdiv,txt:FNfsg , case:nom, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% accusative fem singasserta(lex(FAcfsg,gdiv,[pos:gdiv,txt:FAcfsg , case:acc, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% genitive fem sing

  • asserta(lex(FGenfsg,gdiv,[pos:gdiv,txt:FGenfsg , case:gen, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% dative fem singasserta(lex(FDatfsg,gdiv,[pos:gdiv,txt:FDatfsg , case:dat, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% ablative fem singasserta(lex(FAblfsg,gdiv,[pos:gdiv,txt:FAblfsg , case:abl, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % nominative n singasserta(lex(FNnsg,gdiv,[pos:gdiv,txt:FNnsg , case:nom, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% accusative n singasserta(lex(FAcnsg,gdiv,[pos:gdiv,txt:FAcnsg , case:acc, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% genitive n singasserta(lex(FGennsg,gdiv,[pos:gdiv,txt:FGennsg , case:gen, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% dative n singasserta(lex(FDatnsg,gdiv,[pos:gdiv,txt:FDatnsg , case:dat, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% ablative n singasserta(lex(FAblnsg,gdiv,[pos:gdiv,txt:FAblnsg , case:abl, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % PLURAL

    % nominative masc plasserta(lex(FNmpl,gdiv,[pos:gdiv,txt:FNmpl , case:nom, gender:masc, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% accusative masc plasserta(lex(FAcmpl,gdiv,[pos:gdiv,txt:FAcmpl , case:acc, gender:masc, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% genitive masc plasserta(lex(FGenmpl,gdiv,[pos:gdiv,txt:FGenmpl , case:gen, gender:masc, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% dative masc plasserta(lex(FDatmpl,gdiv,[pos:gdiv,txt:FDatmpl , case:dat, gender:masc, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% ablative masc plasserta(lex(FAblmpl,gdiv,[pos:gdiv,txt:FAblmpl , case:abl, gender:masc, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % nominative fem plasserta(lex(FNfpl,gdiv,[pos:gdiv,txt:FNfpl , case:nom, gender:fem, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% accusative fem plasserta(lex(FAcfpl,gdiv,[pos:gdiv,txt:FAcfpl , case:acc, gender:fem, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% genitive fem plasserta(lex(FGenfpl,gdiv,[pos:gdiv,txt:FGenfpl , case:gen, gender:fem, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

  • % dative fem plasserta(lex(FDatfpl,gdiv,[pos:gdiv,txt:FDatfpl , case:dat, gender:fem, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% ablative fem plasserta(lex(FAblfpl,gdiv,[pos:gdiv,txt:FAblfpl , case:abl, gender:fem, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % nominative n plasserta(lex(FNnpl,gdiv,[pos:gdiv,txt:FNnpl , case:nom, gender:neuter, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% accusative n plasserta(lex(FAcnpl,gdiv,[pos:gdiv,txt:FAcnpl , case:acc, gender:neuter, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% genitive n plasserta(lex(FGennpl,gdiv,[pos:gdiv,txt:FGennpl , case:gen, gender:neuter, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% dative n plasserta(lex(FDatnpl,gdiv,[pos:gdiv,txt:FDatnpl , case:dat, gender:neuter, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),% ablative n plasserta(lex(FAblnpl,gdiv,[pos:gdiv,txt:FAblnpl , case:abl, gender:neuter, number:pl,lex:Lex, class:Class,type:gdiv,kind:Kind,mood:gerund,person:3])),

    % indicative present passive%%%%%%%%%%%%%%atom_concat(RootPr,Prp1sg,V1Psg),atom_concat(RootPr,Prp2sg,V2Psg),

    % third person : see above (also necessary for intransitives on account of middle voice)

    atom_concat(RootPr,Prp1pl,V1Ppl),atom_concat(RootPr,Prp2pl,V2Ppl),atom_concat(RootPr,Prp3pl,V3Ppl),

    % indicative present passive voice%%%%%%%%%%%%%%%%%

    % third person singular present tenseasserta(lex(V3Psg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V3Psg ,tense:present,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person pl present tenseasserta(lex(V3Ppl,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V3Ppl ,tense:present,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular present tenseasserta(lex(V1Psg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V1Psg ,tense:present,kind:Kind,mood:indicative, number:sing,person:1])),

  • % second person singular present tenseasserta(lex(V2Psg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V2Psg ,tense:present,kind:Kind,mood:indicative, number:sing,person:2])),

    % first person plural present tenseasserta(lex(V1Ppl,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V1Ppl ,tense:present,kind:Kind,mood:indicative, number:pl,person:1])),

    % second person plural present tenseasserta(lex(V2Ppl,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V2Ppl ,tense:present,kind:Kind,mood:indicative, number:pl,person:2])),

    % subjunctive present passive

    atom_concat(RootPr,PPr1sgsubj,PV1sgsubj),atom_concat(RootPr,PPr2sgsubj,PV2sgsubj),

    % third person : see above - also necessary for intransitives because of middle voice

    atom_concat(RootPr,PPr1plsubj,PV1plsubj),atom_concat(RootPr,PPr2plsubj,PV2plsubj),atom_concat(RootPr,PPr3plsubj,PV3plsubj),

    % subjunctive present passive%%%%%%%%%%%%%%%

    % third person singular present tense subj passasserta(lex(PV3sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV3sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:3])),

    % third person pl present tense subj passasserta(lex(PV3plsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV3plsubj ,tense:present,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular present tense subj passasserta(lex(PV1sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV1sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:1])),

    % second person singular present tense subj passasserta(lex(PV2sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV2sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:2])),

    % first person plural present tense subj pass

  • asserta(lex(PV1plsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV1plsubj ,tense:present,kind:Kind,mood:subjunctive, number:pl,person:1])),

    % second person plural present tense subj passasserta(lex(PV2plsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV2plsubj ,tense:present,kind:Kind,mood:subjunctive, number:pl,person:2])),

    % infinitive present passive%%%%%%%%%%%%%%%

    atom_concat(RootPr,PrPInf,PInf),

    % present infinitive passiveasserta(lex(PInf,v,[pos:v,class:Class,type:nonfinite,lex:Lex, voice:pass,txt:PInf ,tense:present,kind:Kind,mood:infinitive, number:Nb,person:P])),

    % subjunctive imperfect passive

    atom_concat(RootPr,Pr1sgimpftsp,V1sgimpftsp),atom_concat(RootPr,Pr2sgimpftsp,V2sgimpftsp),atom_concat(RootPr,Pr3sgimpftsp,V3sgimpftsp),atom_concat(RootPr,Pr1plimpftsp,V1plimpftsp),atom_concat(RootPr,Pr2plimpftsp,V2plimpftsp),atom_concat(RootPr,Pr3plimpftsp,V3plimpftsp),

    % indicative imperfect passive

    atom_concat(RootPr,PPr1sgimpft,PV1sgimpft),atom_concat(RootPr,PPr2sgimpft,PV2sgimpft),

    % third person sg see above - necessary for middle

    atom_concat(RootPr,PPr1plimpft,PV1plimpft),atom_concat(RootPr,PPr2plimpft,PV2plimpft),atom_concat(RootPr,PPr3plimpft,PV3plimpft),

    % indicative imperfect passive voice%%%%%%%%%%%%%%%%%%

    % third person singular impftasserta(lex(PV3sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV3sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person pl impftasserta(lex(PV3plimpft,v,[pos:v,class:Class,type:finite,lex:Lex,

  • voice:pass,txt:PV3plimpft ,tense:imperfect,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular impftasserta(lex(PV1sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV1sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:1])),

    % second person singular impftasserta(lex(PV2sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV2sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:2])),

    % first person plural impftasserta(lex(PV1plimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV1plimpft ,tense:imperfect,kind:Kind,mood:indicative, number:pl,person:1])),

    % second person plural impftasserta(lex(PV2plimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV2plimpft ,tense:imperfect,kind:Kind,mood:indicative, number:pl,person:2])),

    % subjunctive imperfect passive%%%%%%%%%%%%%%%%

    % third person singular impftasserta(lex(V3sgimpftsp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V3sgimpftsp ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:3])),

    % third person pl impftasserta(lex(V3plimpftsp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V3plimpftsp ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular impftasserta(lex(V1sgimpftsp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V1sgimpftsp ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:1])),

    % second person singular impftasserta(lex(V2sgimpftsp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V2sgimpftsp ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:2])),

    % first person plural impftasserta(lex(V1plimpftsp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V1plimpftsp ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:1])),

  • % second person plural impftasserta(lex(V2plimpftsp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:V2plimpftsp ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:2])),

    % indicative futur passive

    atom_concat(RootPr,PPr1sgfut,PV1sgfut),atom_concat(RootPr,PPr2sgfut,PV2sgfut),

    % third person - see above

    atom_concat(RootPr,PPr1plfut,PV1plfut),atom_concat(RootPr,PPr2plfut,PV2plfut),atom_concat(RootPr,PPr3plfut,PV3plfut),

    % indicative future passive%%%%%%%%%%%%%%

    % third person singular fut passasserta(lex(PV3sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV3sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person pl fut passasserta(lex(PV3plfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV3plfut ,tense:future,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular fut passasserta(lex(PV1sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV1sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:1])),

    % second person singular fut passasserta(lex(PV2sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV2sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:2])),

    % first person plural fut passasserta(lex(PV1plfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV1plfut ,tense:future,kind:Kind,mood:indicative, number:pl,person:1])),

    % second person plural fut passasserta(lex(PV2plfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:pass,txt:PV2plfut ,tense:future,kind:Kind,mood:indicative, number:pl,person:2])) )),

    % PAST PARTICIPLES%%%%%%%%%%ifthen(RootSup \= xxx,

  • (atom_concat(RootSup,us,PPFNmsg),atom_concat(RootSup,Acmsg,PPFAcmsg),atom_concat(RootSup,Genmsg,PPFGenmsg),atom_concat(RootSup,Datmsg,PPFDatmsg),atom_concat(RootSup,Ablmsg,PPFAblmsg),atom_concat(RootSup,Nfsg,PPFNfsg),atom_concat(RootSup,Acfsg,PPFAcfsg),atom_concat(RootSup,Genfsg,PPFGenfsg),atom_concat(RootSup,Datfsg,PPFDatfsg),atom_concat(RootSup,Ablfsg,PPFAblfsg),atom_concat(RootSup,Nnsg,PPFNnsg),atom_concat(RootSup,Acnsg,PPFAcnsg),atom_concat(RootSup,Gennsg,PPFGennsg),atom_concat(RootSup,Datnsg,PPFDatnsg),atom_concat(RootSup,Ablnsg,PPFAblnsg),atom_concat(RootSup,Nmpl,PPFNmpl),atom_concat(RootSup,Acmpl,PPFAcmpl),atom_concat(RootSup,Genmpl,PPFGenmpl),atom_concat(RootSup,Datmpl,PPFDatmpl),atom_concat(RootSup,Ablmpl,PPFAblmpl),atom_concat(RootSup,Nfpl,PPFNfpl),atom_concat(RootSup,Acfpl,PPFAcfpl),atom_concat(RootSup,Genfpl,PPFGenfpl),atom_concat(RootSup,Datfpl,PPFDatfpl),atom_concat(RootSup,Ablfpl,PPFAblfpl),atom_concat(RootSup,Nnpl,PPFNnpl),atom_concat(RootSup,Acnpl,PPFAcnpl),atom_concat(RootSup,Gennpl,PPFGennpl),atom_concat(RootSup,Datnpl,PPFDatnpl),atom_concat(RootSup,Ablnpl,PPFAblnpl),

    % SING

    % nominative masc singasserta(lex(PPFNmsg,p_p,[pos:p_p,txt:PPFNmsg ,case:nom, gender:masc, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),

    % accusative masc singasserta(lex(PPFAcmsg,p_p,[pos:p_p,txt:PPFAcmsg , case:acc, gender:masc, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% genitive masc singasserta(lex(PPFGenmsg,p_p,[pos:p_p,txt:PPFGenmsg , case:gen, gender:masc, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% dative masc singasserta(lex(PPFDatmsg,p_p,[pos:p_p,txt:PPFDatmsg , case:dat, gender:masc, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% ablative masc singasserta(lex(PPFAblmsg,p_p,[pos:p_p,txt:PPFAblmsg , case:abl, gender:masc, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),

  • % nominative fem singasserta(lex(PPFNfsg,p_p,[pos:p_p,txt:PPFNfsg , case:nom, gender:fem, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% accusative fem singasserta(lex(PPFAcfsg,p_p,[pos:p_p,txt:PPFAcfsg , case:acc, gender:fem, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% genitive fem singasserta(lex(PPFGenfsg,p_p,[pos:p_p,txt:PPFGenfsg , case:gen, gender:fem, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% dative fem singasserta(lex(PPFDatfsg,p_p,[pos:p_p,txt:PPFDatfsg , case:dat, gender:fem, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% ablative fem singasserta(lex(PPFAblfsg,p_p,[pos:p_p,txt:PPFAblfsg , case:abl, gender:fem, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),

    % nominative n singasserta(lex(PPFNnsg,p_p,[pos:p_p,txt:PPFNnsg , case:nom, gender:neuter, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% accusative n singasserta(lex(PPFAcnsg,p_p,[pos:p_p,txt:PPFAcnsg , case:acc, gender:neuter, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% genitive n singasserta(lex(PPFGennsg,p_p,[pos:p_p,txt:PPFGennsg , case:gen, gender:neuter, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% dative n singasserta(lex(PPFDatnsg,p_p,[pos:p_p,txt:PPFDatnsg , case:dat, gender:neuter, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% ablative n singasserta(lex(PPFAblnsg,p_p,[pos:p_p,txt:PPFAblnsg , case:abl, gender:neuter, number:sing,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),

    % PLURAL

    % nominative masc plasserta(lex(PPFNmpl,p_p,[pos:p_p,txt:PPFNmpl , case:nom, gender:masc, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% accusative masc plasserta(lex(PPFAcmpl,p_p,[pos:p_p,txt:PPFAcmpl , case:acc, gender:masc, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% genitive masc plasserta(lex(PPFGenmpl,p_p,[pos:p_p,txt:PPFGenmpl , case:gen, gender:masc, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% dative masc plasserta(lex(PPFDatmpl,p_p,[pos:p_p,txt:PPFDatmpl , case:dat, gender:masc, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% ablative masc plasserta(lex(PPFAblmpl,p_p,[pos:p_p,txt:PPFAblmpl , case:abl, gender:masc, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),

  • % nominative fem plasserta(lex(PPFNfpl,p_p,[pos:p_p,txt:PPFNfpl , case:nom, gender:fem, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% accusative fem plasserta(lex(PPFAcfpl,p_p,[pos:p_p,txt:PPFAcfpl , case:acc, gender:fem, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% genitive fem plasserta(lex(PPFGenfpl,p_p,[pos:p_p,txt:PPFGenfpl , case:gen, gender:fem, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% dative fem plasserta(lex(PPFDatfpl,p_p,[pos:p_p,txt:PPFDatfpl , case:dat, gender:fem, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% ablative fem plasserta(lex(PPFAblfpl,p_p,[pos:p_p,txt:PPFAblfpl , case:abl, gender:fem, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),

    % nominative n plasserta(lex(PPFNnpl,p_p,[pos:p_p,txt:PPFNnpl , case:nom, gender:neuter, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% accusative n plasserta(lex(PPFAcnpl,p_p,[pos:p_p,txt:PPFAcnpl , case:acc, gender:neuter, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% genitive n plasserta(lex(PPFGennpl,p_p,[pos:p_p,txt:PPFGennpl , case:gen, gender:neuter, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% dative n plasserta(lex(PPFDatnpl,p_p,[pos:p_p,txt:PPFDatnpl , case:dat, gender:neuter, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])),% ablative n plasserta(lex(PPFAblnpl,p_p,[pos:p_p,txt:PPFAblnpl , case:abl, gender:neuter, number:pl,lex:Lex, class:Class,type:p_p,kind:Kind,mood:participle,person:3])) ))

    )), % END THEN-CLAUSE

    % END OF TREATMENT OF TRANSITIVE VERBS ALONE

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    ifthen(RootPr \= xxx,

    % third person middle%%%%%%%%%%%

    % third person singular present tense(asserta(lex(V3Psg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:middle,txt:V3Psg ,tense:present,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person singular present tense subjasserta(lex(PV3sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex,

  • voice:middle,txt:PV3sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:3])),

    % third person singular future tenseasserta(lex(PV3sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:middle,txt:PV3sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person singular imperfectasserta(lex(PV3sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:middle,txt:PV3sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:3])),

    atom_concat(Gerbase,um,Gerundum), % amandumatom_concat(Gerbase,i,Gerundum_gen), % amandiatom_concat(Gerbase,o,Gerundum_abl), % amando

    % gerund -UMasserta(lex(Gerundum,v,[pos:v,class:Class,type:gerund,lex:Lex, txt:Gerundum, kind:Kind,mood:gerund, person:3,case:acc])),

    % genitive gerund -Iasserta(lex(Gerundum_gen,v,[pos:v,class:Class,type:gerund,lex:Lex, txt:Gerundum_gen ,kind:Kind,mood:gerund, person:3,case:gen])),% dative abl -Oasserta(lex(Gerundum_abl,v,[pos:v,class:Class,type:gerund,lex:Lex, txt:Gerundum_abl ,kind:Kind,mood:gerund, person:3,case:abl])),

    % indicative present tense active%%%%%%%%%%%%%%%%%

    % third person singular present tenseasserta(lex(V3sg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sg ,tense:present,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person pl present tenseasserta(lex(V3pl,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3pl ,tense:present,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular present tenseasserta(lex(V1sg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sg ,tense:present,kind:Kind,mood:indicative, number:sing,person:1])),

    % second person singular present tense

  • asserta(lex(V2sg,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sg ,tense:present,kind:Kind,mood:indicative, number:sing,person:2])),

    % first person plural present tenseasserta(lex(V1pl,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1pl ,tense:present,kind:Kind,mood:indicative, number:pl,person:1])),

    % second person plural present tenseasserta(lex(V2pl,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2pl ,tense:present,kind:Kind,mood:indicative, number:pl,person:2])),

    % subjunctive present active%%%%%%%%%%%%%%

    % third person singular present tense subjasserta(lex(V3sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:3])),

    % third person pl present tense subjasserta(lex(V3plsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plsubj ,tense:present,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular present tense subjasserta(lex(V1sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:1])),

    % second person singular present tense subjasserta(lex(V2sgsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgsubj ,tense:present,kind:Kind,mood:subjunctive, number:sing,person:2])),

    % first person plural present tense subjasserta(lex(V1plsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plsubj ,tense:present,kind:Kind,mood:subjunctive, number:pl,person:1])),

    % second person plural present tense subjasserta(lex(V2plsubj,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plsubj ,tense:present,kind:Kind,mood:subjunctive, number:pl,person:2])),

    % indicative imperfect active%%%%%%%%%%%%%%%

    % third person singular impftasserta(lex(V3sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex,

  • voice:act,txt:V3sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:3])),

    % third person pl impftasserta(lex(V3plimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plimpft ,tense:imperfect,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular impftasserta(lex(V1sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:1])),

    % second person singular impftasserta(lex(V2sgimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgimpft ,tense:imperfect,kind:Kind,mood:indicative, number:sing,person:2])),

    % first person plural impftasserta(lex(V1plimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plimpft ,tense:imperfect,kind:Kind,mood:indicative, number:pl,person:1])),

    % second person plural impftasserta(lex(V2plimpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plimpft ,tense:imperfect,kind:Kind,mood:indicative, number:pl,person:2])),

    % subjunctive imperfect active%%%%%%%%%%%%%%%

    % third person singular impftasserta(lex(V3sgimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:3])),

    % third person pl impftasserta(lex(V3plimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular impftasserta(lex(V1sgimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:1])),

    % second person singular impftasserta(lex(V2sgimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:2])),

  • % first person plural impftasserta(lex(V1plimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:1])),

    % second person plural impftasserta(lex(V2plimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:2])),

    % indicative imperfect active%%%%%%%%%%%%%%%

    % third person singular impft subjasserta(lex(V3sgimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:3])),

    % third person pl impft subjasserta(lex(V3plimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular impft subjasserta(lex(V1sgimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:1])),

    % second person singular impft subjasserta(lex(V2sgimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:sing,person:2])),

    % first person plural impft subjasserta(lex(V1plimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:1])),

    % second person plural impft subjasserta(lex(V2plimpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plimpfts ,tense:imperfect,kind:Kind,mood:subjunctive, number:pl,person:2])),

    % indicative future active%%%%%%%%%%%%%

    % third person singular futasserta(lex(V3sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:3])),

  • % third person pl futasserta(lex(V3plfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plfut ,tense:future,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular futasserta(lex(V1sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:1])),

    % second person singular futasserta(lex(V2sgfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgfut ,tense:future,kind:Kind,mood:indicative, number:sing,person:2])),

    % first person plural futasserta(lex(V1plfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plfut ,tense:future,kind:Kind,mood:indicative, number:pl,person:1])),

    % second person plural futasserta(lex(V2plfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plfut ,tense:future,kind:Kind,mood:indicative, number:pl,person:2])),

    % imperative present active%%%%%%%%%%%%%%

    % second person singular present tense impasserta(lex(V2sgimp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgimp ,tense:present,kind:Kind,mood:imperative, number:sing,person:2])),

    % second person plural present tense impasserta(lex(V2plimp,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plimp ,tense:present,kind:Kind,mood:imperative, number:pl,person:2])),

    % imperative future%%%%%%%%%%

    % second person singular future tense impasserta(lex(V2sgimpfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgimpfut ,tense:future,kind:Kind,mood:imperative, number:sing,person:2])),

    % second person plural future tense impasserta(lex(V2plimpfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plimpfut ,tense:future,kind:Kind,mood:imperative, number:pl,person:2])),

  • % third person singular future tense impasserta(lex(V3sgimpfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgimpfut ,tense:future,kind:Kind,mood:imperative, number:sing,person:3])),

    % third person plural future tense impasserta(lex(V3plimpfut,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plimpfut ,tense:future,kind:Kind,mood:imperative, number:pl,person:3])),

    % Present Participles%%%%%%%%%%%

    % SING

    % nominative masc fem neuter singasserta(lex(PrPartB,p_pr,[pos:p_pr,txt:PrPartB ,case:nom, gender:_, number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% accusative neuter sgasserta(lex(PrPartB,p_pr,[pos:p_pr,txt:PrPartB ,case:acc, gender:neuter, number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% accusative masc fem singasserta(lex(PrPAccmfsg,p_pr,[pos:p_pr,txt:PrPAccmfsg , case:acc, gender:or([masc,fem]), number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% genitive g3 sgasserta(lex(PrPGeng3sg,p_pr,[pos:p_pr,txt:PrPGeng3sg, case:gen, gender:_, number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% dative g3 sgasserta(lex(PrPDatg3sg,p_pr,[pos:p_pr,txt:PrPDatg3sg, case:dat, gender:_, number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% ablative g3 sg ending in -iasserta(lex(PrPAbl1g3sg,p_pr,[pos:p_pr,txt:PrPAbl1g3sg, case:abl, gender:_, number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3,typeabl:i])),% ablative g3 sg ending in -easserta(lex(PrPAbl2g3sg,p_pr,[pos:p_pr,txt:PrPAbl2g3sg, case:abl, gender:_, number:sing,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3,typeabl:e])),

    % PLURAL

    % nominative masc fem plasserta(lex(PrPNommfpl,p_pr,[pos:p_pr,txt:PrPNommfpl, case:nom, gender:or([masc,fem]), number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% accusative masc fem plasserta(lex(PrPAccmfpl,p_pr,[pos:p_pr,txt:PrPAccmfpl, case:acc, gender:or([masc,fem]), number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% nominative neuter pl

  • asserta(lex(PrPNomnpl,p_pr,[pos:p_pr,txt:PrPNomnpl, case:nom, gender:neuter, number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% accusative neuter plasserta(lex(PrPAccnpl,p_pr,[pos:p_pr,txt:PrPAccnpl, case:acc, gender:neuter, number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% genitive g3 plasserta(lex(PrPGeng3pl,p_pr,[pos:p_pr,txt:PrPGeng3pl, case:gen, gender:_, number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% dative g3 plasserta(lex(PrPDatg3pl,p_pr,[pos:p_pr,txt:PrPDatg3pl, case:dat, gender:_, number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),% ablative g3 plasserta(lex(PrPAblg3pl,p_pr,[pos:p_pr,txt:PrPAblg3pl, case:abl, gender:_, number:pl,lex:Lex, class:Class,type:p_pr,kind:Kind,mood:participle,person:3])),

    % infinitive present active%%%%%%%%%%%%%%

    % present infinitive activeasserta(lex(Inf,v,[pos:v,class:Class,type:nonfinite,lex:Lex, voice:act,txt:Inf ,tense:present,kind:Kind,mood:infinitive, number:Nb,person:P])))),

    % supine % amatum%%%%%%%%%%%%%%%%%%%%%%%%%%ifthen(RootSup \= xxx, asserta(lex(Supin,v,[pos:v,class:Class,type:supine,lex:Lex, txt:Supin ,kind:Kind,mood:supine, person:3,case:_])) ),

    ifthen(RootPft \= xxx,

    % perfect indicative active%%%%%%%%%%%%%%

    % third person singular pft tense(asserta(lex(V3sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgpft ,tense:perfect,kind:Kind,mood:indicative, number:sing,person:3])),% third person pl pft tenseasserta(lex(V3plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plpft ,tense:perfect,kind:Kind,mood:indicative, number:pl,person:3])),% third person pl pft tense second formasserta(lex(V3plpftbis,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plpftbis ,tense:perfect,kind:Kind,mood:indicative, number:pl,person:3])),% first person singular pft tenseasserta(lex(V1sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgpft ,tense:perfect,kind:Kind,mood:indicative,

  • number:sing,person:1])),% second person singular pft tenseasserta(lex(V2sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgpft ,tense:perfect,kind:Kind,mood:indicative, number:sing,person:2])),% first person plural pft tenseasserta(lex(V1plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plpft ,tense:perfect,kind:Kind,mood:indicative, number:pl,person:1])),% second person plural pft tenseasserta(lex(V2plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plpft ,tense:perfect,kind:Kind,mood:indicative, number:pl,person:2])),

    % pluperfect indicative active%%%%%%%%%%%%%%%%

    % third person singular plupft tenseasserta(lex(PluV3sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV3sgpft ,tense:pluperfect,kind:Kind,mood:indicative, number:sing,person:3])),% third person pl plupft tenseasserta(lex(PluV3plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV3plpft ,tense:pluperfect,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular plupft tenseasserta(lex(PluV1sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV1sgpft ,tense:pluperfect,kind:Kind,mood:indicative, number:sing,person:1])),% second person singular plupft tenseasserta(lex(PluV2sgpft,v,[pos:v,class:Class,type:finite,lex:Lex,kind:Kind,mood:indicative, voice:act,txt:PluV2sgpft ,tense:pluperfect, number:sing,person:2])),% first person plural plupft tenseasserta(lex(PluV1plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV1plpft ,tense:pluperfect,kind:Kind,mood:indicative, number:pl,person:1])),% second person plural plupft tenseasserta(lex(PluV2plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV2plpft ,tense:pluperfect,kind:Kind,mood:indicative, number:pl,person:2])),

    % future perfect indicative active%%%%%%%%%%%%%%%%%%

    % third person singular future perfect tenseasserta(lex(FV3sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:FV3sgpft ,tense:future_perfect,kind:Kind,mood:indicative, number:sing,person:3])),

  • % third person pl future perfect tenseasserta(lex(FV3plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:FV3plpft ,tense:future_perfect,kind:Kind,mood:indicative, number:pl,person:3])),

    % first person singular future perfect tenseasserta(lex(FV1sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:FV1sgpft ,tense:future_perfect,kind:Kind,mood:indicative, number:sing,person:1])),% second person singular future perfect tenseasserta(lex(FV2sgpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:FV2sgpft ,tense:future_perfect,kind:Kind,mood:indicative, number:sing,person:2])),% first person plural future perfect tenseasserta(lex(FV1plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:FV1plpft ,tense:future_perfect,kind:Kind,mood:indicative, number:pl,person:1])),% second person plural future perfect tenseasserta(lex(FV2plpft,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:FV2plpft ,tense:future_perfect,kind:Kind,mood:indicative, number:pl,person:2])),

    % subjunctive perfect active%%%%%%%%%%%%%%

    % third person singular pft tense subjunctiveasserta(lex(V3sgpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3sgpfts ,tense:perfect,kind:Kind,mood:subjunctive, number:sing,person:3])),% third person pl pft tense subjunctiveasserta(lex(V3plpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V3plpfts ,tense:perfect,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular pft tense subjunctiveasserta(lex(V1sgpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1sgpfts ,tense:perfect,kind:Kind,mood:subjunctive, number:sing,person:1])),% second person singular pft tense subjunctiveasserta(lex(V2sgpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2sgpfts ,tense:perfect,kind:Kind,mood:subjunctive, number:sing,person:2])),% first person plural pft tense subjunctiveasserta(lex(V1plpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V1plpfts ,tense:perfect,kind:Kind,mood:subjunctive, number:pl,person:1])),% second person plural pft tense subjunctiveasserta(lex(V2plpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:V2plpfts ,tense:perfect,kind:Kind,mood:subjunctive, number:pl,person:2])),

  • % subjunctive pluperfect active%%%%%%%%%%%%%%%%%

    % third person singular plupft tense subjunctiveasserta(lex(PluV3sgpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV3sgpfts ,tense:pluperfect,kind:Kind,mood:subjunctive, number:sing,person:3])),% third person pl plupft tense subjunctiveasserta(lex(PluV3plpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV3plpfts ,tense:pluperfect,kind:Kind,mood:subjunctive, number:pl,person:3])),

    % first person singular plupft tense subjunctiveasserta(lex(PluV1sgpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV1sgpfts ,tense:pluperfect,kind:Kind,mood:subjunctive, number:sing,person:1])),% second person singular plupft tense subjunctiveasserta(lex(PluV2sgpfts,v,[pos:v,class:Class,type:finite,lex:Lex,kind:Kind,mood:subjunctive, voice:act,txt:PluV2sgpfts ,tense:pluperfect, number:sing,person:2])),% first person plural plupft tense subjunctiveasserta(lex(PluV1plpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV1plpfts ,tense:pluperfect,kind:Kind,mood:subjunctive, number:pl,person:1])),% second person plural plupft tense subjunctiveasserta(lex(PluV2plpfts,v,[pos:v,class:Class,type:finite,lex:Lex, voice:act,txt:PluV2plpfts ,tense:pluperfect,kind:Kind,mood:subjunctive, number:pl,person:2])), % past infinitive active%%%%%%%%%%%%

    asserta(lex(Infp,v,[pos:v,class:Class,type:nonfinite,lex:Lex, voice:act,txt:Inf ,tense:past,kind:Kind,mood:infinitive, number:Nb,person:P])) )),

    % Future Participles%%%%%%%%%%

    % SINGifthen(RootSup \= xxx,% nominative masc sing(asserta(lex(PFFNmsg,p_f,[pos:p_f,txt:PFFNmsg ,case:nom, gender:masc, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

    % accusative masc singasserta(lex(PFFAcmsg,p_f,[pos:p_f,txt:PFFAcmsg , case:acc, gender:masc, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% genitive masc singasserta(lex(PFFGenmsg,p_f,[pos:p_f,txt:PFFGenmsg , case:gen, gender:masc, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% dative masc singasserta(lex(PFFDatmsg,p_f,[pos:p_f,txt:PFFDatmsg , case:dat, gender:masc, number:sing,lex:Lex,

  • class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% ablative masc singasserta(lex(PFFAblmsg,p_f,[pos:p_f,txt:PFFAblmsg , case:abl, gender:masc, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

    % nominative fem singasserta(lex(PFFNfsg,p_f,[pos:p_f,txt:PFFNfsg , case:nom, gender:fem, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% accusative fem singasserta(lex(PFFAcfsg,p_f,[pos:p_f,txt:PFFAcfsg , case:acc, gender:fem, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% genitive fem singasserta(lex(PFFGenfsg,p_f,[pos:p_f,txt:PFFGenfsg , case:gen, gender:fem, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% dative fem singasserta(lex(PFFDatfsg,p_f,[pos:p_f,txt:PFFDatfsg , case:dat, gender:fem, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% ablative fem singasserta(lex(PFFAblfsg,p_f,[pos:p_f,txt:PFFAblfsg , case:abl, gender:fem, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

    % nominative n singasserta(lex(PFFNnsg,p_f,[pos:p_f,txt:PFFNnsg , case:nom, gender:neuter, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% accusative n singasserta(lex(PFFAcnsg,p_f,[pos:p_f,txt:PFFAcnsg , case:acc, gender:neuter, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% genitive n singasserta(lex(PFFGennsg,p_f,[pos:p_f,txt:PFFGennsg , case:gen, gender:neuter, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% dative n singasserta(lex(PFFDatnsg,p_f,[pos:p_f,txt:PFFDatnsg , case:dat, gender:neuter, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% ablative n singasserta(lex(PFFAblnsg,p_f,[pos:p_f,txt:PFFAblnsg , case:abl, gender:neuter, number:sing,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

    % PLURAL

    % nominative masc plasserta(lex(PFFNmpl,p_f,[pos:p_f,txt:PFFNmpl , case:nom, gender:masc, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% accusative masc plasserta(lex(PFFAcmpl,p_f,[pos:p_f,txt:PFFAcmpl , case:acc, gender:masc, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% genitive masc plasserta(lex(PFFGenmpl,p_f,[pos:p_f,txt:PFFGenmpl , case:gen, gender:masc, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% dative masc plasserta(lex(PFFDatmpl,p_f,[pos:p_f,txt:PFFDatmpl , case:dat, gender:masc, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

  • % ablative masc plasserta(lex(PFFAblmpl,p_f,[pos:p_f,txt:PFFAblmpl , case:abl, gender:masc, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

    % nominative fem plasserta(lex(PFFNfpl,p_f,[pos:p_f,txt:PFFNfpl , case:nom, gender:fem, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% accusative fem plasserta(lex(PFFAcfpl,p_f,[pos:p_f,txt:PFFAcfpl , case:acc, gender:fem, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% genitive fem plasserta(lex(PFFGenfpl,p_f,[pos:p_f,txt:PFFGenfpl , case:gen, gender:fem, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% dative fem plasserta(lex(PFFDatfpl,p_f,[pos:p_f,txt:PFFDatfpl , case:dat, gender:fem, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% ablative fem plasserta(lex(PFFAblfpl,p_f,[pos:p_f,txt:PFFAblfpl , case:abl, gender:fem, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),

    % nominative n plasserta(lex(PFFNnpl,p_f,[pos:p_f,txt:PFFNnpl , case:nom, gender:neuter, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% accusative n plasserta(lex(PFFAcnpl,p_f,[pos:p_f,txt:PFFAcnpl , case:acc, gender:neuter, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% genitive n plasserta(lex(PFFGennpl,p_f,[pos:p_f,txt:PFFGennpl , case:gen, gender:neuter, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% dative n plasserta(lex(PFFDatnpl,p_f,[pos:p_f,txt:PFFDatnpl , case:dat, gender:neuter, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])),% ablative n plasserta(lex(PFFAblnpl,p_f,[pos:p_f,txt:PFFAblnpl , case:abl, gender:neuter, number:pl,lex:Lex, class:Class,type:p_f,kind:Kind,mood:participle,person:3])) )),

    fail.

    macro_verb.% allows the fail boundary to be crossed

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEPONENTS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    macro_dep :-

    verb([v(Lex,Conj,RootPr,RootSup)],Class,dep),

    verb_endings_d(Conj,Pr1sg,Pr2sg,Pr3sg,Pr1pl,Pr2pl,Pr3pl,

  • Pr1sgsubj,Pr2sgsubj,Pr3sgsubj,Pr1plsubj,Pr2plsubj,Pr3plsubj, Pr1sgimpft,Pr2sgimpft,Pr3sgimpft,Pr1plimpft,Pr2plimpft,Pr3plimpft, Pr1sgfut,Pr2sgfut,Pr3sgfut,Pr1plfut,Pr2plfut,Pr3plfut, Pr1sgimpfts,Pr2sgimpfts,Pr3sgimpfts,Pr1plimpfts,Pr2plimpfts,Pr3plimpfts, PrInf,Ger,PrParts,PrPart, Imp2sg,Imp2pl),

    declension_endings(adj,1,[_,Acmsg,Genmsg,Datmsg,Ablmsg, Nfsg,Acfsg,Genfsg,Datfsg,Ablfsg, Nnsg,Acnsg,Gennsg,Datnsg,Ablnsg, Nmpl,Acmpl,Genmpl,Datmpl,Ablmpl, Nfpl,Acfpl,Genfpl,Datfpl,Ablfpl, Nnpl,Acnpl,Gennpl,Datnpl,Ablnpl]),

    declension_endings(partpr,[Accmfsg2,Geng3sg2,Datg3sg2,Abl1g3sg2,Abl2g3sg2, Nommfpl2,Accmfpl2,Nomnpl2,Accnpl2, Geng3pl2, Datg3pl2,Ablg3pl2]),

    ifthen(RootPr \= xxx,% indicative present active

    (atom_concat(RootPr,Pr1sg,V1sg),atom_concat(RootPr,Pr2sg,V2sg),atom_concat(RootPr,Pr3sg,V3sg),atom_concat(RootPr,Pr1pl,V1pl),atom_concat(RootPr,Pr2pl,V2pl),atom_concat(RootPr,Pr3pl,V3pl),

    % subjunctive present active

    atom_concat(RootPr,Pr1sgsubj,V1sgsubj),atom_concat(RootPr,Pr2sgsubj,V2sgsubj),atom_concat(RootPr,Pr3sgsubj,V3sgsubj),atom_concat(RootPr,Pr1plsubj,V1plsubj),atom_concat(RootPr,Pr2plsubj,V2plsubj),atom_concat(RootPr,Pr3plsubj,V3plsubj),

    % indicative imperfect active

    atom_concat(RootPr,Pr1sgimpft,V1sgimpft),atom_concat(RootPr,Pr2sgimpft,V2sgimpft),atom_concat(RootPr,Pr3sgimpft,V3sgimpft),atom_concat(RootPr,Pr1plimpft,V1plimpft),atom_concat(RootPr,Pr2plimpft,V2plimpft),atom_concat(RootPr,Pr3plimpft,V3plimpft),

    % indicative futur active

    atom_concat(RootPr,Pr1sgfut,V1sgfut),atom_concat(RootPr,Pr2sgfut,V2sgfut),

  • atom_concat(RootPr,Pr3sgfut,V3sgfut),atom_concat(RootPr,Pr1plfut,V1plfut),atom_concat(RootPr,Pr2plfut,V2plfut),atom_concat(RootPr,Pr3plfut,V3plfut),

    % subjunctive imperfect active

    atom_concat(RootPr,Pr1sgimpfts,V1sgimpfts),atom_concat(RootPr,Pr2sgimpfts,V2sgimpfts),atom_concat(RootPr,Pr3sgimpfts,V3sgimpfts),atom_concat(RootPr,Pr1plimpfts,V1plimpfts),atom_concat(RootPr,Pr2plimpfts,V2plimpfts),atom_concat(RootPr,Pr3plimpfts,V3plimpfts),

    % imperative present active

    atom_concat(RootPr,Imp2sg,VImp2sg),atom_concat(RootPr,Imp2pl,VImp2pl),

    % infinitive present active

    atom_concat(RootPr,PrInf,Inf),

    % present participles

    atom_concat(RootPr,PrParts,PrPartB), % hort+ans -> hortans, etcatom_concat(RootPr,PrPart,PrPartA), % hort+ant- -> hortant-, etc

    % PrPartB (hortans, etc) : Nominative masc fem neuter sg + acc neuter sg

    atom_concat(PrPartA,Accmfsg2,PrPAccmfsg), % acc masc fem sgatom_concat(PrPartA,Geng3sg2,PrPGeng3sg), % gen 3 genders sgatom_concat(PrPartA,Datg3sg2,PrPDatg3sg), % dat 3 genders sgatom_concat(PrPartA,Abl1g3sg2,PrPAbl1g3sg), % i-abl 3 genders sgatom_concat(PrPartA,Abl2g3sg2,PrPAbl2g3sg), % e-abl 3 genders sg

    atom_concat(PrPartA,Nommfpl2,PrPNommfpl),atom_concat(PrPartA,Accmfpl2,PrPAccmfpl),atom_concat(PrPartA,Nomnpl2,PrPNomnpl),atom_concat(PrPartA,Accnpl2,PrPAccnpl),atom_concat(PrPartA,Geng3pl2,PrPGeng3pl),atom_concat(PrPartA,Datg3pl2,PrPDatg3pl),atom_concat(PrPartA,Ablg3pl2,PrPAblg3pl),

    % gerunds

    atom_concat(RootPr,Ger,Gerbase),atom_concat(Gerbase,um,Gerundum),atom_concat(Gerbase,i,Gerundum_gen),atom_concat(Gerbase,o,Gerundum_abl),

  • % gerundives

    atom_concat(Gerbase,us,FNmsg),atom_concat(Gerbase,Acmsg,FAcmsg),atom_concat(Gerbase,Genmsg,FGenmsg),atom_concat(Gerbase,Datmsg,FDatmsg),atom_concat(Gerbase,Ablmsg,FAblmsg),atom_concat(Gerbase,Nfsg,FNfsg),atom_concat(Gerbase,Acfsg,FAcfsg),atom_concat(Gerbase,Genfsg,FGenfsg),atom_concat(Gerbase,Datfsg,FDatfsg),atom_concat(Gerbase,Ablfsg,FAblfsg),atom_concat(Gerbase,Nnsg,FNnsg),atom_concat(Gerbase,Acnsg,FAcnsg),atom_concat(Gerbase,Gennsg,FGennsg),atom_concat(Gerbase,Datnsg,FDatnsg),atom_concat(Gerbase,Ablnsg,FAblnsg),atom_concat(Gerbase,Nmpl,FNmpl),atom_concat(Gerbase,Acmpl,FAcmpl),atom_concat(Gerbase,Genmpl,FGenmpl),atom_concat(Gerbase,Datmpl,FDatmpl),atom_concat(Gerbase,Ablmpl,FAblmpl),atom_concat(Gerbase,Nfpl,FNfpl),atom_concat(Gerbase,Acfpl,FAcfpl),atom_concat(Gerbase,Genfpl,FGenfpl),atom_concat(Gerbase,Datfpl,FDatfpl),atom_concat(Gerbase,Ablfpl,FAblfpl),atom_concat(Gerbase,Nnpl,FNnpl),atom_concat(Gerbase,Acnpl,FAcnpl),atom_concat(Gerbase,Gennpl,FGennpl),atom_concat(Gerbase,Datnpl,FDatnpl),atom_concat(Gerbase,Ablnpl,FAblnpl),

    % SING

    % nominative masc singasserta(lex(FNmsg,gdiv,[pos:gdiv,txt:FNmsg ,case:nom, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),

    % accusative masc singasserta(lex(FAcmsg,gdiv,[pos:gdiv,txt:FAcmsg , case:acc, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% genitive masc singasserta(lex(FGenmsg,gdiv,[pos:gdiv,txt:FGenmsg , case:gen, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% dative masc singasserta(lex(FDatmsg,gdiv,[pos:gdiv,txt:FDatmsg , case:dat, gender:masc, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% ablative masc singasserta(lex(FAblmsg,gdiv,[pos:gdiv,txt:FAblmsg , case:abl, gender:masc, number:sing,lex:Lex,

  • class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),

    % nominative fem singasserta(lex(FNfsg,gdiv,[pos:gdiv,txt:FNfsg , case:nom, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% accusative fem singasserta(lex(FAcfsg,gdiv,[pos:gdiv,txt:FAcfsg , case:acc, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% genitive fem singasserta(lex(FGenfsg,gdiv,[pos:gdiv,txt:FGenfsg , case:gen, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% dative fem singasserta(lex(FDatfsg,gdiv,[pos:gdiv,txt:FDatfsg , case:dat, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% ablative fem singasserta(lex(FAblfsg,gdiv,[pos:gdiv,txt:FAblfsg , case:abl, gender:fem, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),

    % nominative n singasserta(lex(FNnsg,gdiv,[pos:gdiv,txt:FNnsg , case:nom, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% accusative n singasserta(lex(FAcnsg,gdiv,[pos:gdiv,txt:FAcnsg , case:acc, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% genitive n singasserta(lex(FGennsg,gdiv,[pos:gdiv,txt:FGennsg , case:gen, gender:neuter, number:sing,lex:Lex, class:Class,type:gdiv,kind:dep,mood:gerund,person:3])),% dative n singasserta(lex(FDatnsg,gdiv,[pos:gdiv,txt:FDatnsg , case:dat, gender:neuter, number:sing,lex:Lex,