ALPDOC
-
Upload
archibald-michiels -
Category
Documents
-
view
18 -
download
0
description
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,