% -*- prolog -*-
%
% Reguły opisujące jednostki elementarne gramatyki formalnej języka
% polskiego Marka Świdzińskiego
%
% Copyright (C) 1992 Marek Świdziński
% Copyright (C) 1997-2006 Marcin Woliński
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License version 3 as
% published by the Free Software Foundation.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
% MA 02110-1301, USA 
%
% In addition, as a special exception, the copyright holder gives
% permission to link the code of this program with the Morfeusz library
% (see http://www.nlp.ipipan.waw.pl/~wolinski/morfeusz), and distribute
% linked combinations including the two. You must obey the GNU General
% Public License in all respects for all of the code used other than
% Morfeusz. If you modify this file, you may extend this exception to
% your version of the file, but you are not obligated to do so. If you
% do not wish to do so, delete this exception statement from your
% version.
%

:-style_check(-singleton).

%%%%%%%%%%%%%%%%%%%% Funkcyjne: %%%%%%%%%%%%%%%%%%%%

% 5.16.2: Zaimek

zaimpyt(rzecz, P, Rl, 3, co)
     --> s(zaim1n),
	zaimrzecz(co, P, Rl).

zaimpyt(rzecz, P, Rl, 3, kto)
     --> s(zaim5n), 
	zaimrzecz(kto, P, Rl).

zaimpyt(przym, P, Rl, _O, _Kl)
     --> s(zaim9n), zaimprzym(F, P, Rl), 
       { rowne(F, ['czyj','jaki','który'])}.

zaimpyt(przysl, _P, _Rl, _O, _Kl)
     --> s(zaim22), zaimprzys(F), 
       { rowne(F, [dlaczego,'dokąd','gdzie','jak','kiedy','odkąd','skąd'])}.

zaimwzg(rzecz, P, Rl, 3, co)
     --> s(zaim23n),
	zaimrzecz(co, P, Rl).

zaimwzg(rzecz, P, Rl, 3, kto)
     --> s(zaim27n), 
	zaimrzecz(kto, P, Rl).

zaimwzg(rzecz, P, Rl, 3, 'który')
     --> s(zaim31n),
%	zaimrzecz(F, P, Rl), % to nie ma szansy działać?
	zaimprzym(F, P, Rl), % czy raczej tak???
       	{ rowne(F, ['jaki','który'])}.

zaimwzg(przym, P, Rl, _O, _Kl)
     --> s(zaim44n), zaimprzym(jaki, P, Rl).


zaimno(przym, P, Rl, _O, tk)
     --> s(zaim57n), 
	zaimprzym(taki, P, Rl).

zaimno(przysl, _P, _Rl, _O, tk)
     --> s(zaim70), zaimprzys(tak).

% nowe reguły zaimkowe:

% 5.16.2.3. Zaimki nieokreślone 
%  5.16.2.3.1. zaimki rzeczowne

zaimno(rzecz, P, Rl, 3, co)
--> s(zaim71), zaimrzecz(coś, P, Rl).

zaimno(rzecz, P, Rl, 3, kto)
--> s(zaim72), zaimrzecz(ktoś, P, Rl).

zaimno(rzecz, P, r(R1,nmo(R2))/L, _O, co)
--> s(zaim73), 
	zaimprzym(ten, P, r(R1,nmo(R2))/L).

zaimno(rzecz, P, r(mn(m(zy)),mo)/poj, _O, kto)
--> s(zaim73k), 
	zaimprzym(ten, P, r(mn(m(zy)),mo)/poj).

zaimno(przym, P, Rl, _O, _Kl)
--> s(zaim73x),
	zaimprzym(ten, P, Rl).

% [MŚ: można dodać jeszcze tamten, ów]

zaimneg(rzecz, P, Rl, 3, co)
--> s(zaim74), zaimrzecz(nic, P, Rl).

zaimneg(rzecz, P, Rl, 3, kto)
--> s(zaim75), zaimrzecz(nikt, P, Rl).

zaimneg(przysl, _P, _Rl, _O, kto)
--> s(zaim76n), zaimprzys(nigdy).


% 5.16.3 i n.:

pyt(F, I) --> s(par1), partykula(F), 
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri]) }.

pyt(F, ni) --> s(par2), partykula(F).

agl(Rl, O, I)  --> s(agl1), agl1(Rl, O), 
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri]) }.

agl(_Rl, 3, I)  --> s(agl1e),
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri]) }.

agl(Rl, O, ni) --> s(agl2), agl1(Rl, O).

agl1(R/poj, 1)    --> s(agl3), morfagl(m, R/poj, 1).

agl1(R/mno, 1)   
                --> s(agl4), morfagl('śmy', R/mno, 1).

agl1(R/poj, 2)    --> s(agl5), morfagl('ś', R/poj, 2).

agl1(R/mno, 2) --> 
	s(agl6), morfagl('ście', R/mno, 2).

% !!! epsilon
%agl1(Rl, 3)  --> s(agl7).

kor(K/P, I) --> s(kor1), przyimek(K, P), 
	kor1(P),
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri]) }.

% reguła dodana na mocy listu prof. Świdzińskiego z 28 grudnia 1999:
kor(K/P, ni) --> s(kor1x),
	przyimek(K, P),
	kor1(P).

kor(P, ni)     --> s(kor2), kor1(P).

kor1(P)        --> s(kor3n), zaimrzecz(to, P, r(mn(n),nmo(np(n)))/poj).

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


%%%%%%%%%%%%%%%%%%%% Elementarne: %%%%%%%%%%%%%%%%%%%%
% 5.17:



 znakkonca(p)            --> s(int1), [morf('?',_,interp)].

 znakkonca(np) --> s(int2), [morf('.',_,interp)].
 znakkonca(np) --> s(int3), [morf('!',_,interp)].
 znakkonca(np) --> s(int4), [morf('.',_,interp)],
	[morf('.',_,interp)],
	[morf('.',_,interp)].

% Lewostronny kontekst !!!
%[F],przecsp       --> s(int5), [F], 
%                    { rowne(F, ['albowiem','aż','bo','chociaż',
%        'choć','czy','dopóki','dopóty','gdy','gdyż','iż','jak',
%        'jeśli','jeżeli','kiedy','nim','ponieważ','póki','póty',
%        'skoro','wówczas','wtedy','zanim','że'])}.

przecsp --> s(int5), [morf('','',przecsp)].

przecsp           --> s(int6), przec.

%przec, [?]      --> s(int7), [?].

%przec, [.]      --> s(int8), [.].

%przec, [!]      --> s(int9), [!].

%przec, ['...']    --> s(int10), ['...'].

%przec, [',']      --> s(int11), [','].

% Lewostronny kontekst !!!
% [%], przec        --> s(int12), [%].

przec             --> s(int13), [morf(_,',',interp)].

morfagl(F, _R/L, O)      --> s(jel1), [morf(F, 'być', aglt:Num:Per:_:_)], 
                          { liczba(Num,L), osoba(Per,O) }.

partykula(H)           --> s(jel2), [morf(_,H,qub)].

przyimek(F, P)         --> s(jel3), [morf(_,F,prep:Cases)], 
                          { przypadki(Cases,P) }.
przyimek(F, P)         --> s(jel3), [morf(_,F,prep:Cases:_)], 
                          { przypadki(Cases,P) }.

% tymczasowe, trzeba zrobić porządnie!
% następujące dwuczłonowe przyimki występują w słowniku Świdzińskiego:

przyimek('co do',dop) --> s(jel3a),
	[morf(co,co,prep:acc)],
	[morf(do,do,prep:gen)].

przyimek('na temat',dop) --> s(jel3b),
	[morf(na,na,prep:[acc|loc])],
	[morf(temat,temat,subst:sg:[nom|acc]:m3)].

przyimek('w sprawie',dop) --> s(jel3c),
	[morf(w,w,prep:[acc|loc]:nwok)],
	[morf(sprawie,sprawa,subst:sg:[dat|loc]:f)].

przyimek('z powodu',dop) --> s(jel3d),
	[morf(z,z,prep:[gen,acc|inst]:nwok)],
	[morf(powodu,powód,subst:sg:gen:m3)].

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


spojnik(F)             --> s(jel4), [morf(_,F,conj)].

zaimrzecz(H, P, R/L)    --> s(jel5),
	[morf(_,H,psubst:Num:Cases:Gend)], 
	{ liczba(Num,L), przypadki(Cases,P), rodzaj(Gend,R) }.

zaimprzym(H, P, R/L)    --> s(jel6),
	[morf(_,H,padj:Num:Cases:Gend:pos)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R) }.

zaimprzys(H)           --> s(jel7), [morf(_,H,padv)].

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

formarzecz( P, R/L )    --> s(n_rz1), 
	[morf(_,_,subst:Num:Cases:Gend)], 
	{ liczba(Num,L), przypadki(Cases,P), rodzaj(Gend,R) }.

formarzecz( P, R/L )    --> s(n_rz2), 
	[morf(_,_,depr:Num:Cases:Gend)], 
	{ liczba(Num,L), przypadki(Cases,P), rodzaj(Gend,R) }.

formarzecz( P, R/L )    --> s(n_rz3), 
	[morf(_,_,ger:Num:Cases:Gend:_:_)], 
	{ liczba(Num,L), przypadki(Cases,P), rodzaj(Gend,R) }.

formaprzym( P, R/L, St ) --> s(n_pt1),
	[morf(_,_,adj:Num:Cases:Gend:Degr)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R), stopien(Degr,St) }.

formaprzym( P, R/L, St ) --> s(n_pt2),
	[morf(_,_,adja)],
	[morf('-','-',interp)],
	formaprzym( P, R/L, St).

formaprzym( P, R/L, row ) --> s(n_pt3),
	[morf(_,_,ppas:Num:Cases:Gend:_)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R) }.

formaprzym( P, R/L, row ) --> s(n_pt4),
	[morf(_,_,pact:Num:Cases:Gend:_)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R) }.

% To na potrzeby GFJPA:540 Kim <interesujący się> chłopcy przyjdą, ...
formaprzym( P, R/L, row ) --> s(n_pt5),
	[morf(_,_,pact:Num:Cases:Gend:_)],
	[morf(_,'się',qub)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R) }.

formalicz(P, R/L, Akom) --> s(n_li),
	[morf(_,_,num:Num:Cases:Gend:Acom)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R), akomodacyjnosc(Acom,Akom) }.

formaprzysl( St ) --> s(n_ps),
	[morf(_,_,adv:Degr)],
	{ stopien(Degr,St) }.

% dodane dla Morfeusza SGJP:
formaprzysl( row ) --> s(n_ps2),
	[morf(_,_,advndm)].

zaimos( P, R/L, O ) --> s(n_zo1),
	[morf(_,_,ppron12:Num:Cases:Gend:Per)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R), osoba(Per,O) }.

zaimos( P, R/L, O ) --> s(n_zo2),
	[morf(_,_,ppron12:Num:Cases:Gend:Per:_)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R), osoba(Per,O) }.

zaimos( P, R/L, O ) --> s(n_zo3),
	[morf(_,_,ppron3:Num:Cases:Gend:Per:_)],
	{ liczba(Num,L), przypadki(Cases,P),
	  rodzaj(Gend,R), osoba(Per,O) }.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Formy czasownikowe:


formaczas( Wf, A, C, T, Rl, O, Wym, K ) --> s(n_cz1),
	formaczas1( n, Wf, A, C, T, Rl, O, Wym, K ).

%% Sięność:

formaczas( Wf, A, C, T, Rl, O, Wym, K ) --> s(n_cz2),
	formaczas1( s, Wf, A, C, T, Rl, O, Wym, K ),
	[morf(_,'się',qub)].

formaczas( Wf, A, C, T, Rl, O, Wym, K ) --> s(n_cz3),
	[morf(_,'się',qub)],
	formaczas1( s, Wf, A, C, T, Rl, O, Wym, K ).

%%%% Tryb oznajmujący, czas ter. lub przypro:

formaczas1( S, os, A, C, ozn, _R/L, O, Wym, _K ) --> s(n_cz4),
	[morf(_,H,fin:Num:Per:As)],
	{ aspekt(As,A), czas(fin,A,C),
	  osoba(Per,O), liczba(Num,L), rekcja(H,S,Wym) }.

formaczas1( S, os, nd, przy, ozn, _R/L, O, Wym, _K ) --> s(n_cz5),
	[morf(_, być, bedzie:Num:Per:imperf)],
	{ osoba(Per,O), liczba(Num,L), rekcja(być,S,Wym) }.

%% czas przyszły złożony:

przyzlo( S, _RL, Wym, _K ) --> s(n_czp1),
	[morf(_,H,inf:As)],
	{ aspekt(As,nd), rekcja(H,S,Wym) }.

przyzlo( S, R/L, Wym, _K ) --> s(n_czp2),
	[morf(_,H,praet:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, nagl), aspekt(As,nd),
	  liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) }.

formaczas1( S, os, nd, przy, ozn, R/L, O, Wym, _K ) --> s(n_cz6),
	[morf(_, być, bedzie:Num:Per:imperf)],
	{ osoba(Per,O), liczba(Num,L) },
 	przyzlo( S, R/L, Wym, K ).

formaczas1( S, os, nd, przy, ozn, R/L, O, Wym, _K ) --> s(n_cz7),
 	przyzlo( S, R/L, Wym, K ),
	[morf(_, być, bedzie:Num:Per:imperf)],
	{ osoba(Per,O), liczba(Num,L) }.

formaczas1( n, os, nd, przy, ozn, R/L, O, Wym, _K ) --> s(n_cz8),
	[morf(_, być, bedzie:Num:Per:imperf)],
	[morf(_,'się',qub)],
	{ osoba(Per,O), liczba(Num,L) },
 	przyzlo( s, R/L, Wym, K ).

formaczas1( n, os, nd, przy, ozn, R/L, O, Wym, _K ) --> s(n_cz9),
 	przyzlo( s, R/L, Wym, K ),
	[morf(_,'się',qub)],
	[morf(_, być, bedzie:Num:Per:imperf)],
	{ osoba(Per,O), liczba(Num,L) }.

%% czas przeszły:

formaczas1( S, os, A, prze, ozn, R/L, 3, Wym, _K ) --> s(n_cz10),
	[morf(_,H,praet:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, nagl), aspekt(As,A),
	  liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) }.

formaczas1( S, os, A, prze, ozn, R/L, O, Wym, _K ) --> s(n_cz11),
	[morf(_,H,praet:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, agl), aspekt(As,A),
	liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) },
	[morf(_F, 'być', aglt:Num:Per:_:_)], 
	{ osoba(Per,O) }.

%%%% Tryb warunkowy:

condaglt(L,3) --> s(n_cza1),
	[morf(_,by,qub)].
	
condaglt(L,O) --> s(n_cza2),
	[morf(_,by,qub)],
	[morf(_F, 'być', aglt:Num:Per:_:_)], 
	{ liczba(Num,L), osoba(Per,O) }.

formaczas1( S, os, A, _C, war, R/L, O, Wym, _K ) --> s(n_cz12),
	[morf(_,H,praet:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, nagl), aspekt(As,A),
	liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) },
	condaglt(L,O).

formaczas1( S, os, A, _C, war, R/L, O, Wym, _K ) --> s(n_cz13),
	condaglt(L, O),
	[morf(_,H,praet:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, nagl), aspekt(As,A),
	liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) }.

% wariant z 'się' w środku:

formaczas1( n, os, A, _C, war, R/L, O, Wym, _K ) --> s(n_cz14),
	[morf(_,H,praet:Num:Gend:AsAgl)],
	[morf(_,'się',qub)],
	{ asagl(AsAgl, As, nagl), aspekt(As,A),
	liczba(Num,L), rodzaj(Gend,R), rekcja(H,s,Wym) },
	condaglt(L,O).

formaczas1( n, os, A, _C, war, R/L, O, Wym, _K ) --> s(n_cz15),
	condaglt(L, O),
	[morf(_,'się',qub)],
	[morf(_,H,praet:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, nagl), aspekt(As,A),
	liczba(Num,L), rodzaj(Gend,R), rekcja(H,s,Wym) }.

%%%% Tryb rozkazujący:

formaczas1( S, os, A, przy, roz, _R/L, O, Wym, _K ) --> s(n_cz16),
	[morf(_,H,impt:Num:Per:As)],
	{ aspekt(As,A),
	  osoba(Per,O), liczba(Num,L), rekcja(H,S,Wym) }.

formaczas1( S, os, A, przy, roz, _R/L, O, Wym, _K ) --> s(n_cz17),
	[morf(_,niech,qub)],
	[morf(_,H,fin:Num:Per:As)],
	{ (Num=sg, Per\=sec ; Num=pl, Per=ter),
	  aspekt(As,A),
	  osoba(Per,O), liczba(Num,L), rekcja(H,S,Wym) }.

formaczas1( n, os, A, przy, roz, _R/L, O, Wym, _K ) --> s(n_cz18),
	[morf(_,niech,qub)],
	[morf(_,'się',qub)],
	[morf(_,H,fin:Num:Per:As)],
	{ (Num=sg, Per\=sec ; Num=pl, Per=ter),
	  aspekt(As,A),
	  osoba(Per,O), liczba(Num,L), rekcja(H,s,Wym) }.

%%%% Formy nieosobowe:

% w poniższych dodatkowy warunek: np(mian) niedopuszczalne dla Wf<>os

formaczas1( S, bos, A, prze, ozn, _RL, _O, NWym, _K ) --> s(n_cz19),
	[morf(_,H,imps:As)],
	{ aspekt(As,A), rekcja(H,S,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( S, bos, A, _C, war, _RL, _O, NWym, _K ) --> s(n_cz20),
	[morf(_,H,imps:As)],
	[morf(_,by,qub)],
	{ aspekt(As,A), rekcja(H,S,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( S, bos, A, _C, war, _RL, _O, NWym, _K ) --> s(n_cz21),
	[morf(_,by,qub)],
	[morf(_,H,imps:As)],
	{ aspekt(As,A), rekcja(H,S,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( n, bos, A, _C, war, _RL, _O, NWym, _K ) --> s(n_cz22),
	[morf(_,H,imps:As)],
	[morf(_,'się',qub)],
	[morf(by,by,qub)],
	{ aspekt(As,A), rekcja(H,s,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( n, bos, A, _C, war, _RL, _O, NWym, _K ) --> s(n_cz23),
	[morf(_,by,qub)],
	[morf(_,'się',qub)],
	[morf(_,H,imps:As)],
	{ aspekt(As,A), rekcja(H,s,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( S, bok, A, _C, _T, _RL, _O, NWym, _K ) --> s(n_cz24),
	[morf(_,H,inf:As)],
	{ aspekt(As,A), rekcja(H,S,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( S, psu, A, _C, _T, _RL, _O, NWym, _K ) --> s(n_cz25),
	[morf(_,H,pant:As)],
	{ aspekt(As,A), rekcja(H,S,Wym), wykluczpodmiot(Wym,NWym) }.

formaczas1( S, psw, A, _C, _T, _RL, _O, NWym, _K ) --> s(n_cz26),
	[morf(_,H,pcon:As)],
	{ aspekt(As,A), rekcja(H,S,Wym), wykluczpodmiot(Wym,NWym) }.

% Niewłaściwe (predykatywy):

formaczas1( S, os, nd, ter, ozn, _RL, _O, Wym, _K ) --> s(n_cz27),
	[morf(_,H,pred)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, os, nd, przy, ozn, _RL, _O, Wym, _K ) --> s(n_cz28),
	[morf(będzie, być, bedzie:sg:ter:imperf)],
	[morf(_,H,pred)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, os, nd, przy, ozn, _RL, _O, Wym, _K ) --> s(n_cz29),
	[morf(_,H,pred)],
	[morf(będzie, być, bedzie:sg:ter:imperf)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, os, nd, prze, ozn, _RL, _O, Wym, _K ) --> s(n_cz30),
	[morf(było, być, praet:sg:_:imperf)],
	[morf(_,H,pred)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, os, nd, prze, ozn, _RL, _O, Wym, _K ) --> s(n_cz31),
	[morf(_,H,pred)],
	[morf(było, być, praet:sg:_:imperf)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, os, nd, _C, war, _RL, _O, Wym, _K ) --> s(n_cz32),
	[morf(_,H,pred)],
	[morf(_,by,qub)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, os, nd, _C, war, _RL, _O, Wym, _K ) --> s(n_cz33),
	[morf(_,by,qub)],
	[morf(_,H,pred)],
	{ rekcja(H,S,Wym) }.

formaczas1( S, bok, nd, _C, _T, _RL, _O, Wym, _K ) --> s(n_cz34),
	[morf(_, być, inf:imperf)],
	[morf(_,H,pred)],
	{ rekcja(H,S,Wym) }.

% odmienne nietypowo (powinien):

formaczas1( S, os, A, ter, ozn, R/L, 3, Wym, _K ) --> s(n_cz35),
	[morf(_,H,winien:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, nagl), aspekt(As,A),
	  liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) }.

formaczas1( S, os, A, ter, ozn, R/L, O, Wym, _K ) --> s(n_cz36),
	[morf(_,H,winien:Num:Gend:AsAgl)],
	{ asagl(AsAgl, As, agl), aspekt(As,A),
	liczba(Num,L), rodzaj(Gend,R), rekcja(H,S,Wym) },
	[morf(_F, 'być', aglt:Num:Per:_:_)], 
	{ osoba(Per,O) }.