% Eingabe von Umlauten im Emacs auf amerikanischer Tastatur: Esc-x iso-accents-mode, dann "a für ä usw.
% Ausgabe von Umlauten im Emacs-Puffer: Esc-x standard-display-european
%
% --------------------- Unregelmaessige Konjugation (Teil) -------------------------------

% konjugiere(+KonjKlasse,+Stammform,+Formmerkmale,-Vollform).

% Beisp.: konjugiere(urg(Praef,Vokaltripel,Ablautposition),Infinitiv,[Pers,Num,Temp,Mod],Vfinit).
%                        -    ,(e,a,e)    ,2              ,geben

konjugiere(urg(Praef,(V1,V2,V3),Ablautposition),Infinitiv,[Pers,Num,Temp,Mod],Vfinit) :-
        concat(Stamm,en,Infinitiv),
        LaengeVor is Ablautposition - 1,
        sub_atom(Stamm,0,LaengeVor,_,Vor),
        infix(Vor,V1,Nach,Stamm),
	verbform((Vor,Nach),(V1,V2,V3),[Pers,Num,Temp,Mod],Vfinit).

infix(Vor,Mitte,Nach,Kette) :-
	concat(Vor,Mitte,Praefix),
	concat(Praefix,Nach,Kette).

verbform((Vor,Nach),(V1,V2,V3),[Pers,Num,praes,ind],Vfinit) :-
	not(member([Pers,Num],[[2,sg],[3,sg]])),
	infix(Vor,V1,Nach,Stamm),
	konjugation(urg,[Pers,Num,praes,ind],Endung),
	concat(Stamm,Endung,Vfinit).
verbform((Vor,Nach),(V1,V2,V3),[Pers,Num,praes,ind],Vfinit) :-
	member([Pers,Num],[[2,sg],[3,sg]]),
	umlaut(V1,U),
	infix(Vor,U,Nach,Stamm),             % Aber: lieb-st vs bind-(e)st
	konjugation(urg,[Pers,Num,praes,ind],Endung),
	concat(Stamm,Endung,Vfinit).

verbform((Vor,Nach),(V1,V2,V3),[Pers,Num,praet,ind],Vfinit) :-
	infix(Vor,V2,Nach,Stamm),
	konjugation(urg,[Pers,Num,praet,ind],Endung),
	concat(Stamm,Endung,Vfinit).
verbform((Vor,Nach),(V1,V2,V3),[Pers,Num,praet,konj],Vfinit) :-
	umlaut(V2,U),
	infix(Vor,U,Nach,Stamm),
	konjugation(urg,[Pers,Num,praet,konj],Endung),
	concat(Stamm,Endung,Vfinit).

umlaut(a,ä).
umlaut(o,ö).
umlaut(u,ü).
umlaut(e,i). 
umlaut(i,i).  
umlaut(ie,ie).
umlaut(ei,ei).

% ------- Konjugationstabelle fuer unregelm. Konjugation ---------

konjugation(urg,[1,sg,praes,ind],   'e').
konjugation(urg,[1,sg,praes,konj],  'e').
konjugation(urg,[1,sg,praet,ind],   '').
konjugation(urg,[1,sg,praet,konj],  'e').

konjugation(urg,[2,sg,praes,ind],   'st').
konjugation(urg,[2,sg,praes,ind],   'est').
konjugation(urg,[2,sg,praes,konj],  'est').
konjugation(urg,[2,sg,praet,ind],   'st').
konjugation(urg,[2,sg,praet,ind],   'est').
konjugation(urg,[2,sg,praet,konj],  'st').
konjugation(urg,[2,sg,praet,konj],  'est').

konjugation(urg,[3,sg,praes,ind],   't').
konjugation(urg,[3,sg,praes,ind],   'et').
konjugation(urg,[3,sg,praes,konj],  'e').
konjugation(urg,[3,sg,praet,ind],   '').
konjugation(urg,[3,sg,praet,konj],  'e').

konjugation(urg,[1,pl,praes,ind], 'en').
konjugation(urg,[1,pl,praes,konj],'en').
konjugation(urg,[1,pl,praet,ind], 'en').
konjugation(urg,[1,pl,praet,konj],'en').

konjugation(urg,[2,pl,praes,ind], 't').
konjugation(urg,[2,pl,praes,ind], 'et').
konjugation(urg,[2,pl,praes,konj],'et').
konjugation(urg,[2,pl,praet,ind], 't').
konjugation(urg,[2,pl,praet,ind], 'et').
konjugation(urg,[2,pl,praet,konj],'t').
konjugation(urg,[2,pl,praet,konj],'et').

konjugation(urg,[3,pl,praes,ind], 'en').
konjugation(urg,[3,pl,praes,konj],'en').
konjugation(urg,[3,pl,praet,ind], 'en').
konjugation(urg,[3,pl,praet,konj],'en').



