% -*- prolog -*-
%
% Reguły 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.
%

%:-prolog_flag(single_var_warnings,_,off).
:-style_check(-singleton).

:-op(100, fy, @).

% 5.1. Wypowiedzenie

wypowiedzenie --> s(w1), 
	zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), _),
	znakkonca(Z1),
	{ zrowne( Z, [Z1], SwZ ) }.

% 5.2. Zdanie równorzędne

zr(Wf, A, C, T, Rl, O, Neg, I, Z, X)
--> s(r1), zsz(Wf, A, C, T, Rl, O, Neg, I, Z, @X).

zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @ @ @ @0)
--> s(r2), zsz(Wf, A, C, T, Rl, O, Neg, I, z(npp(SwZ),Z1), _),
	{ oblnp(Z1, Z) },
	przec,
	spoj(rc, Oz, ni),
	zsz(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ2,Z2), _),
	{ zrowne(Z2, [p], SwZ2) }.

zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @ @ @ @0)
--> s(r3), zsz(Wf, A, C, T, Rl, O, Neg, I, z(npp(SwZ),Z1), _),
	{ oblnp(Z1, Z) },
	przec,
	zsz(Wf1, A1, C1, T1, Rl1, O1, Neg1, I1, z(SwZ2,Z2), _),
	{ zrowne(Z2, [p], SwZ2),
          rowne(I1, ['natomiast','zaś']) }.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,NNZ), @ @ @ @0)
--> s(r4), spoj(rl, Oz, I), 
	zsz(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
	{ zrowne(Z, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
	             'np','npt','podczas','ponieważ','że'], NZ) },
	przec,
	spoj(rp, Oz, ni),
	zsz(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, NZ, NNZ),
          oblneg(Oz, Neg0, Neg, Neg1)}.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,NNZ), @ @ @ @0)
--> s(r5), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), _),
	{ zrowne(Z, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
	             'np','npt','podczas','ponieważ','że'], NZ) },
	przec,
	spoj(rc, Oz, ni),
	zsz(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, NZ, NNZ),
          oblneg(Oz, Neg0, Neg, Neg1) }.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,NNZ), @ @ @ @0)
--> s(r6), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), _),
	{ zrowne(Z, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
	             'np','npt','podczas','ponieważ','że'], NZ) },
	przec,
	zsz(Wf1, A1, C1, T1, Rl1, O1, Neg1, I1, z(SwZ,Z1), _),
	{ zrowne(Z1, NZ, NNZ),
          rowne(I1, ['natomiast','zaś']), 
	  oblneg(Oz, Neg0, Neg, Neg1)}.

zr(Wf, A, C, T, Rl, 3, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r7), spoj(rl, Oz, I), 
	zsz(Wf, A, C, T, Rl, 3, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	przec,
	spoj(rp, Oz, ni),
	zsz(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          oblneg(Oz, Neg0, Neg, Neg1)}.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r8), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	przec,
	spoj(rc, Oz, ni),
	zsz(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          oblneg(Oz, Neg0, Neg, Neg1) }.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r9), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	przec,
	zsz(Wf, A1, C1, T1, Rl1, 3, Neg1, I1, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          rowne(I1, ['natomiast','zaś']), 
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r10), spoj(rl,Oz,I), 
	zsz(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	przec,
	spoj(rp, Oz, ni),
	zsz(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          oblneg(Oz, Neg0, Neg, Neg1)}.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r11), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	przec,
	spoj(rc, Oz, ni),
	zsz(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          oblneg(Oz, Neg0, Neg, Neg1)}.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r12), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	przec,
	zsz(Wf1, A1, C, T, Rl1, O1, Neg1, I1, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          rowne(I1, ['natomiast','zaś']), 
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r13), spoj(rl,Oz,I), 
	zsz(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż2','box','gdyx','npx','npxt'], NZ) },
	przec,
	spoj(rp, Oz, ni),
	zsz(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
        { zrowne(Z2, NZ, Z),
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r14), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż2','box','gdyx','npx','npxt'], NZ) },
	przec,
	spoj(rc, Oz, ni),
	zsz(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
        oblneg(Oz, Neg0, Neg, Neg1)}.

zr(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(r15), zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż2','box','gdyx','npx','npxt'], NZ) },
	przec,
	zsz(Wf1, A1, C, T, Rl1, O1, Neg1, I1, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
        rowne(I1, ['natomiast','zaś']), 
        oblneg(Oz, Neg0, Neg, Neg1)}.


% 5.3. Zdanie szeregowe

zsz(Wf, A, C, T, Rl, O, Neg, I, Z, X)
--> s(s1), zj(Wf, A, C, T, Rl, O, Neg, I, Z, Oz, @X),
	{ rozne(Oz, lub)}.

zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @ @ @ @0)
--> s(s2), zp(Wf, A, C, T, Rl, O, Neg, I, z(pnpp(SwZ),Z1), _),
	{ oblpnp(Z1, Z) },
	zj(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ2,Z2), Oz, _),
	{ zrowne(Z2, [p], SwZ2),
	  rozne(Oz, przec) }.

zsz(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @ @ @ @0)
--> s(s3), zj(Wf, A, C, T, Rl, O, Neg, I, z(pnpp(SwZ),Z1), przec, _), 
	{ oblpnp(Z1, Z) },
	spoj(szk, Oz, ni),
	{ rozne(Oz, przec) },
	zp(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ2,Z2), _),
	{ zrowne(Z2, [p], SwZ2) }.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,NZ), @ @ @ @0)
--> s(s4), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['aż1','bo','bowiem','chociaż',
	              'czy','jak','jeśli','np','npt',
		      'podczas','ponieważ','że'], NZ1) },
        zj(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ1, NZ),
          rozne(Oz, przec), 
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,NZ), @ @ @ @0)
--> s(s5), zj(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), przec, _),
	{ zrowne(Z1, ['aż1','bo','bowiem','chociaż',
	              'czy','jak','jeśli','np','npt',
		      'podczas','ponieważ','że'], NZ1) },
        spoj(szk,Oz,ni),
	zp(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ1, NZ),
          oblneg(Oz, Neg0, Neg, Neg1) }.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(s6), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['byxx','choćby','czyżby',
	              'gdyby','jakby','jakoby','żeby'], NZ) },
	zj(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z),
          rozne(Oz, przec),
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(s7), zj(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), przec, _), 
	{ zrowne(Z1, ['byxx','choćby','czyżby',
	              'gdyby','jakby','jakoby','żeby'], NZ) },
	spoj(szk, Oz, ni),
	zp(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          oblneg(Oz, Neg0, Neg, Neg1) }.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(s8), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx',
	              'npxx','npxxt','zanim','zanimxx'], NZ) },
	zj(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z),
          rozne(Oz, przec),
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(s9), zj(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), przec, _), 
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx',
	              'npxx','npxxt','zanim','zanimxx'], NZ) },
	spoj(szk, Oz, ni),
	zp(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
        oblneg(Oz, Neg0, Neg, Neg1)}.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(s10), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż2','box','gdy','npx','npxt'], NZ) },
	zj(Wf1, A1, C, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z),
          rozne(Oz, przec),
	  oblneg(Oz, Neg0, Neg, Neg1)}.

zsz(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), @ @ @ @0)
--> s(s11), zj(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), przec, _), 
	{ zrowne(Z1, ['aż2','box','gdy','npx','npxt'], NZ) },
	spoj(szk, Oz, ni),
	zp(Wf1, A1, C, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z),
          oblneg(Oz, Neg0, Neg, Neg1)}.



% 5.4. Zdanie jednorodne

zj(Wf, A, C, T, Rl, O, Neg, I, Z, przec, X)
--> s(j1), zp(Wf, A, C, T, Rl, O, Neg, I, Z, @X).

zj(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j2), zp(Wf, A, C, T, Rl, O, Neg, I, z(pnpp(SwZ),Z2), _),
	{ oblpnp(Z2, NZ) },
	spoj(sz, przec, ni),
	zp(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, NZ, Z) }.

zj(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j3), zp(Wf, A, C, T, Rl, O, Neg, I, z(pnpp(SwZ),Z2), _), 
	{ oblpnp(Z2, NZ) },
	spoj(sz, przec, ni),
	zj(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z1), przec, _),
	{ zrowne(Z1, NZ, Z) }.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j4), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
	              'np','npt','podczas','ponieważ','pz','że'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zp(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j5), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
	              'np','npt','podczas','ponieważ','pz','że'], NZ) },
	przec,
	zj(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

% reguła niepotrzebna ze względu na j7 w połączeniu z j1
% (znalazł Maciek Ogrodniczuk)
% zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0) --> s(j6), 
% 	zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
% 	{ zrowne(Z1, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
% 	             'np','npt','podczas','ponieważ','pz','że'], Z2) }, 
% 	spoj(sz, przec, ni),
% 	zp(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z3), _),
% 	{ zrowne(Z3, Z2, Z),
% % zdaniem Janusza zbędne?:
%           oblneg(Oz, Neg0, Neg, Neg1) }.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0) --> s(j7), 
	zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['aż1','bo','bowiem','chociaż','czy','jak','jeśli',
	              'np','npt','podczas','ponieważ','pz','że'], Z2) }, 
        spoj(sz, przec, ni),
	zj(Wf1, A1, C1, T1, Rl1, O1, Neg1, ni, z(SwZ,Z3), przec, _),
	{ zrowne(Z3, Z2, Z),
% j.w.?:
	  oblneg(Oz, Neg0, Neg, Neg1) }.

zj(Wf, A, C, T, Rl, 3, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j8), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, 3, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zp(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, 3, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j9), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, 3, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zj(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j10), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	spoj(szk, przec, ni),
	zp(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j11), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['byxx','choćby','czyżby','gdyby',
	              'jakby','jakoby','żeby'], NZ) },
	spoj(szk, przec, ni),
	zj(Wf, A1, C1, T1, Rl1, 3, Neg1, ni, z(SwZ,Z2), przec, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j12), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zp(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j13), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zj(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j14), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	spoj(szk, przec, ni),
	zp(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j15), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['aż1xx','boxx','dopóki','gdyxx','npxx','npxxt',
	              'zanim','zanimxx'], NZ) },
	spoj(szk, przec, ni),
	zj(Wf1, A1, C, T, Rl1, O1, Neg1, ni, z(SwZ,Z2), przec, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j16), spoj(sz, Oz, I),
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż2','box','gdy','npx','npxt'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zp(Wf1, A1, C, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), Oz, @ @ @ @0)
--> s(j17), spoj(sz, Oz, I), 
	{ rozne(Oz, przec) },
	zp(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z1), _),
	{ zrowne(Z1, ['aż2','box','gdy','npx','npxt'], NZ) },
	przec,
	spoj(sz, Oz, ni),
	zj(Wf1, A1, C, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), Oz, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j18), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['aż2','box','gdy','npx','npxt'], NZ) },
	spoj(szk, przec, ni),
	zp(Wf1, A1, C, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.

zj(Wf, A, C, T, Rl, O, Neg0, I, z(SwZ,Z), przec, @ @ @ @0)
--> s(j19), zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z1), _), 
	{ zrowne(Z1, ['aż2','box','gdy','npx','npxt'], NZ) },
	spoj(szk, przec, ni),
	zj(Wf1, A1, C, T1, Rl1, O1, Neg1, ni, z(SwZ,Z2), przec, _),
	{ zrowne(Z2, NZ, Z), 
          oblneg(Oz, Neg0, Neg, Neg1)}.


% 5.5. Zdanie proste

zp(Wf, A, C, T, Rl, O, Neg, I, Z, X)
--> s(p1), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, Z, br, @X).

zp(Wf, A, przy, T, Rl, O, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p2), fzd(Oz, nk, A1, C1, T1, Neg1, I, _), 
	{ rowne(Oz, ['choćby','gdyby']) },
	przec,
	spoj(pp, Oz, ni),
	ze(Wf, A, przy, T, Rl, O, Wym, Neg, ni, z(SwZ,Z), Oz, _),
	{ oblzal(Z, NZ, Oz),
	  zrozne(NZ, ['byxx','choćby','co','czyżby','gdyby','jakby',
	             'jaki','jakoby','kto','który','pz','żeby'], NNZ)
	   }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p3), fzd(Oz, nk, A1, C, T1, Neg1, I, _),
	{ rowne(Oz, ['dopóki','gdy']) },
	przec,
	spoj(pp, Oz, ni),
	ze(Wf, A, C, T, Rl, O, Wym, Neg, ni, z(SwZ,Z), Oz, _),
	{ oblzal(Z, NZ, Oz),
	  zrozne(NZ, ['byxx','choćby','co','czyżby','gdyby','jakby',
	             'jaki','jakoby','kto','który','pz','żeby'], NNZ)
	   }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NZ), @ @ @ @0)
--> s(p4), fzd(Oz, nk, A1, C1, T1, Neg1, I, _),
	{ rowne(Oz, ['chociaż','jeśli']) },
	przec,
	spoj(pp, Oz, ni),
	ze(Wf, A, C, T, Rl, O, Wym, Neg, ni, z(SwZ,Z), br, _),
	{ zrozne(Z, ['byxx','choćby','co','czyżby','gdyby','jakby',
	             'jaki','jakoby','kto','który','pz','żeby'], NZ) }.

zp(Wf, A, C, T, Rl, 3, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p5), fzd(Oz, nk, A1, C1, T1, Neg1, I, _),
	{ rowne(Oz, ['choćby','gdyby']) },
	przec,
	spoj(pp, Oz, ni),
	ze(Wf, A, C, T, Rl, 3, Wym, Neg, ni, z(SwZ,Z), Oz, _),
	{ oblzal(Z, NZ, Oz),
	  zrowne(NZ, ['byxx','choćby','czyżby','gdyby',
	             'jakby','jakoby','żeby'], NNZ)
	    }.

zp(Wf, A, C, T, Rl, 3, Neg, I, z(SwZ,NZ), @ @ @ @0)
--> s(p5x), fzd(Oz, nk, A1, C1, T1, Neg1, I, _),
	{ rowne(Oz, ['chociaż','jeśli']) },
	przec,
	spoj(pp, Oz, ni),
	ze(Wf, A, C, T, Rl, 3, Wym, Neg, ni, z(SwZ,Z), br, _),
	{ zrowne(Z, ['byxx','choćby','czyżby','gdyby',
	             'jakby','jakoby','żeby'], NZ) }.

zp(Wf, A, C, T, Rl, 3, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p6), fzd(Oz, nk, A1, C1, T1, Neg1, I, _),
	{ rowne(Oz, ['dopóki','gdy']) },
	przec,
	spoj(pp, Oz, ni),
	ze(Wf, A, C, T, Rl, 3, Wym, Neg, ni, z(SwZ,Z), Oz, _),
	{ oblzal(Z, NZ, Oz),
	  zrowne(NZ, ['byxx','choćby','czyżby','gdyby',
	             'jakby','jakoby','żeby'], NNZ)
	    }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p7), spoj(pl, Oz, I), 
	ze(Wf, A, C, T, Rl, O, Wym, Neg, ni, z(SwZ,Z), Oz, _),
	{ oblzal(Z, NZ, Oz),
	  zrozne(NZ, ['byxx','choćby','co','czyżby','gdyby','jakby',
	             'jaki','jakoby','kto','który','pz','żeby'], NNZ)
		   },
	fzd(Oz, nk, A1, C, T1, Neg1, ni, _),
	przec.

zp(Wf, A, C, T, Rl, 3, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p8), spoj(pl, Oz, I), 
	ze(Wf, A, C, T, Rl, 3, Wym, Neg, ni, z(SwZ,Z), Oz, _),
	{ oblzal(Z, NZ, Oz),
	  zrowne(NZ, ['byxx','choćby','czyżby','gdyby',
	            'jakby','jakoby','żeby'], NNZ)
	    },
	fzd(Oz, nk, A1, C, T1, Neg1, ni, _),
	przec.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @ @ @ @0)
--> s(p9), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(npp(SwZ),Z2), br, _),
	{ oblnp(Z2, Z) },
	przec,
	spoj(pc, bo, ni),
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, ni, z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [p], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NZ), @ @ @ @0)
--> s(p10), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(npp(SwZ),Z2), 'więc', _),
	{ oblzal(Z2, NZ2, 'więc'), oblnp(NZ2, NZ) },
	przec,
	spoj(pc, 'więc', ni),
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, ni, z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [p], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, Z, @ @ @ @0)
--> s(p11), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, Z, br, _), 
	przec,
	spoj(pc, bo, ni),
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, ni, z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [bo], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p12), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,Z), 'więc', _),
	{ oblzal(Z,NZ,'więc'),
	  zrozne(NZ, ['byxx','choćby','co','czyżby','gdyby','jakby',
	             'jaki','jakoby','kto','który',
		     'p','px','pxx','pz','żeby'], NNZ)
	   },
	przec, 
	spoj(pc, 'więc', ni),
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, ni, z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [np], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @ @ @ @0)
--> s(p13), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(npp(SwZ),Z2), br, _),
	{ oblnp(Z2, Z) },
	przec,
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, bowiem, z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [p], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NZ), @ @ @ @0)
--> s(p14), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(npp(SwZ),Z2), 'więc', _),
	{ oblzal(Z2,NZ2,'więc'), oblnp(NZ2, NZ) },
	przec,
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, 'więc', z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [p], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, Z, @ @ @ @0)
--> s(p15), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, Z, br, _), 
	przec,
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, bowiem, z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [bowiem], SwZ1) }.

zp(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,NNZ), @ @ @ @0)
--> s(p16), ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,Z), 'więc', _),
	{ oblzal(Z, NZ, 'więc'),
	  zrozne(NZ, ['byxx','choćby','co','czyżby','gdyby','jakby',
	             'jaki','jakoby','kto','który',
		     'p','px','pxx','pz','żeby'], NNZ)
		   },
	przec,
	ze(Wf1, A1, C1, T1, Rl1, O1, Wym1, Neg1, 'więc', z(SwZ1,Z1), br, _),
	{ zrowne(Z1, [np], SwZ1) }.


% 5.6. Zdanie elementarne

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e1), fl(A, C, Rl, O, Neg, I, z(SwZ1,Z1)), 
	wymagania([], Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z), Ow),
	    W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne(Z1, ['p','np'], SwZ1) }),
        { resztawym(ResztaWym),
	zrowne(Z, ['p','px','pxx'], NZ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e2), fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ1,Z1)),
	{ zrowne(Z1, ['p','np'], SwZ1) },
	wymagania([W1],  Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z), Ow),
		  W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne(Z2, ['p','np'], SwZ2 ) }  ),
        { resztawym(ResztaWym),
	  zrowne(Z, ['p','px','pxx'], NZ ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e3), ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow),
	{ zrowne( Z, ['p','px','pxx'], NZ ) },
	wymagane( Wym, ResztaWym,
	          W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		{ zrowne(Z1, ['p','np'], SwZ1 ) } ),
       { resztawym(ResztaWym) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e4), fl(A, C, Rl, O, Neg, I, z(SwZ0,Z0)),
	{ zrowne(Z0, [np], SwZ0) },
	wymagania([], Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z), Ow),
	    W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		 { zrowne( Z1, [np], SwZ1 ) }),
       { resztawym(ResztaWym),
	zrozne(Z, ['byxx','choćby','co','czyżby','gdyby','jakby',
	            'jaki','jakoby','kto','który',
		    'p','px','pxx','pz','żeby'], NZ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e5), fw(W0, K, A, C, Rl, O, Neg, I, z(SwZ3,Z3)),
	{ zrowne( Z3, [np], SwZ3 ) },
	wymagania([W0],  Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z), Ow),
	    W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		 {zrowne(Z1, [np], SwZ1)} ),
	{ resztawym(ResztaWym),
	  zrozne(Z, ['byxx','choćby','co','czyżby','gdyby','jakby',
	    'jaki','jakoby','kto','który','p','px','pxx','pz','żeby'], NZ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e6), ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow),
	{ zrozne(Z, ['byxx','choćby','co','czyżby','gdyby','jakby','jaki',
	    'jakoby','kto','który','p','px','pxx','pz','żeby'], NZ) },
	wymagane(Wym, ResztaWym, 
	         W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1) )/
		{zrowne( Z1, [np], SwZ1 )} ),
	{ resztawym(ResztaWym)  }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NNZ), Ow, @ @ @ @0)
--> s(e7), fl(A, C, Rl, O, Neg, I, z(SwZ,Z)),
	{ zrowne( Z, ['byxx','choćby','czyżby',
	            'gdyby','jakby','jakoby','żeby'], NZ ) },
	wymagania([], Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, 3, Wym, K, Neg, ni, z(SwZ,WZ), Ow),
	    W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		 { zrowne( Z1, [np], SwZ1 ) }),
       { resztawym(ResztaWym),
	 zrowne( NZ, WZ, NNZ ) }.

ze(Wf, A, C, T, Rl, 3, Wym, Neg, ni, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e7e1), fw(W0, K, A, C, Rl, 3, Neg, ni, z(SwZ3,Z3)),
	{ zrowne( Z3, [np], SwZ3 ) },
	wymagania([ W0 ],  Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, 3, Wym, K, Neg, ni, z(SwZ,Z), Ow),
	    W1/fw(W1, K, A, C, Rl, 3, Neg, ni, z(SwZ1,Z1))/
		 { zrowne(Z1, [np], SwZ1) } ),
	{ resztawym(ResztaWym),
	  zrowne(Z, ['byxx','choćby','czyżby',
	            'gdyby','jakby','jakoby','żeby'], NZ) }.

ze(Wf, A, C, T, Rl, 3, Wym, Neg, ni, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e7e2), ff(Wf, A, C, T, Rl, 3, Wym, K, Neg, ni, z(SwZ,Z), Ow),
	{ zrowne(Z, ['byxx','choćby','czyżby',
	            'gdyby','jakby','jakoby','żeby'], NZ) },
	wymagane(Wym, ResztaWym, 
	         W1/fw(W1, K, A, C, Rl, 3, Neg, ni, z(SwZ1,Z1) )/
		{ zrowne( Z1, [np], SwZ1 ) } ),
	{ resztawym(ResztaWym) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NNZ), Ow, @ @ @ @0)
--> s(e8), fl(A, C, Rl, O, Neg, I, z(SwZ,Z)),
	{ zrowne( Z, [pz], NZ ) },
	wymagania([], Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,FZ), Ow),
	    W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		 { zrowne(Z1, ['p','np'], SwZ1 ) } ),
       { resztawym(ResztaWym),
	 zrowne(NZ, FZ, NNZ ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e9), fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ3,Z3)),
	{ zrowne( Z3, [pz], SwZ3 ) },
	wymagania([W1],  Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z), Ow),
	    W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		 { zrowne(Z1, ['p','np'], SwZ1) } ),
	{ resztawym(ResztaWym),
	  zrowne(Z, [pz], NZ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
--> s(e10), ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow),
	{ zrowne( Z, [pz], NZ) },
	wymagane( Wym, ResztaWym,
	          W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		{ zrowne(Z1, ['p','np'], SwZ1) } ),
       { resztawym(ResztaWym) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NNZ), Ow, @ @ @ @0)
--> s(e11), fl(A, C, Rl, O, Neg, I, z(SwZ,Z)),
	{ zrowne(Z, ['co','jaki','kto','który'], NZ) },
	wymagania([],  Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,FZ), Ow),
	    W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		 { zrowne( Z1, [np], SwZ1) } ),
       { resztawym(ResztaWym),
	 zrowne( NZ, FZ, NNZ )  }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NNZ), Ow, @ @ @ @0)
--> s(e12), fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ,Z)),
	{ zrowne(Z, ['co','jaki','kto','który'], NZ) },
	wymagania([ W1 ],  Wym, ResztaWym,
	    ff(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,FZ), Ow),
	    W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne( Z2, [np], SwZ2) } ),
       { resztawym(ResztaWym),
	 zrowne( NZ, FZ, NNZ ) }.

% nie ma szansy na inicjalny element względny:
% ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
% --> s(e13), ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow),
% 	{ zrowne(Z, ['co','jaki','kto','który'], NZ) },
% 	wymagane( Wym, ResztaWym,
% 	          [W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1)),
% 		   W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2)),
% 		   W3/fw(W3, K, A, C, Rl, O, Neg, ni, z(SwZ3,Z3))] ),
%         { resztawym(ResztaWym),
% 	  zrowne( Z1, [np], SwZ1),
% 	  zrowne( Z2, [np], SwZ2),
% 	  zrowne( Z3, [np], SwZ3) }.

ze( Wf, A, C, T, Rl, O, Wym, Neg, I, z(_,Z), Ow, @ @ @ @0 )
     --> s(e14), pyt( 'czyżby', ni ),
       zr( Wf, A, C, T, Rl, O, Neg, I, z(SwZ1,Z1), _ ),
       { zrowne( Z1, ['czyżby'], SwZ1 ),
	 Z = ['p','px','pxx'] }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(_,Z), Ow, @ @ @ @0)
--> s(e15), zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ1,Z1), _),
	{ zrowne(Z1, [npt], SwZ1), Z=['p','px','pxx'] }.

% ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
% --> s(e16), fl(A, C, Rl, O, Neg, I, z(SwZ,Z)),
% 	{ zrowne(Z, ['co','jaki','kto','który','p','px','pxx','pz'], NZ) },
% 	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ1,Z1), _),
% 	{ zrowne(Z1, [npt], SwZ1) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(_,Z), Ow, @ @ @ @0)
--> s(e17), pyt(czy, I), 
	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ1,Z1), _),
	{ zrowne( Z1, [npt], SwZ1 ),
	Z = ['p','px','pxx','pz'] }.

% ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,NZ), Ow, @ @ @ @0)
% --> s(e18), fl(A, C, Rl, O, Neg, I, z(SwZ1,Z1)),
% 	{ zrowne(Z1, [np], SwZ1) },
% 	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
% 	{ zrozne(Z, ['byxx','choćby','co','czyżby','gdyby','jakby',
% 	             'jaki','jakoby','kto','który',
% 		     'p','px','pxx','pz','żeby'], NZ) }.

ze(Wf, A, C, T, Rl, O, Wym, Neg, I, z(SwZ,Z), Ow, X)
--> s(e19), zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), @X). %,
%       { oblzal(Z1, Z, Ow)}.


% 5.7. Fraza finitywna

ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, Z, Ow) --> s(fi1),
	ff1(Wf, A, C, T, Rl, O, Wym, K, Neg, I, Z, Ow).

ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,NZ), Ow) --> s(fi2),
	ff1(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow),
	{ zrowne( Z, ['p','px','pxx','pz'], NZ ) }, 
	fl(A, C, Rl, O, Neg, ni, z(SwZ1,Z1)),
	{ zrowne( Z1, ['np','p'], SwZ1 ) }.

ff(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,NZ), Ow) --> s(fi3),
	ff1(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow),
	{ zrozne( Z, ['p','px','pxx','pz'], NZ) },
	fl(A, C, Rl, O, Neg, ni, z(SwZ1,Z1)), 
	{ zrowne( Z1, [np], SwZ1 ) }.

ff1(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z), Ow) --> s(fi4),
	kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(ow(SwZ,Ow),Z)), 
	{ rowne( Wf, ['os','bos','bok'] )
						%    , oblzal( Z1, Z, Ow ) 
    }.


% 5.8. Fraza wymagana

fw(Tfw, K, A, C, Rl, O, Neg, I, Z) --> s(wy1),
	fw1(Tfw, K, A, C, Rl, O, Neg, I, Z).

fw(Tfw, K, A, C, Rl, O, Neg, I, z(_,[p])) --> s(wy2),
	fw1(Tfw, K, A, C, Rl, O, Neg, I, z(SwZ1,Z1)), 
	fl(A, C, Rl, O, Neg, ni, z(SwZ2,Z2)),
	{ zplubnp(Z1,Z2,SwZ1,SwZ2) }.

fw( Tfw, K, A, C, Rl, O, Neg, I, z(SwZ,NZ) ) --> s(wy3),
	fw1( Tfw, K, A, C, Rl, O, Neg, I, z(SwZ,Z) ),
	{ zrowne( Z, [pz], NZ ) },
	fl( A, C, Rl, O, Neg, ni, z(SwZ1,Z1) ),
	{ zrowne( Z1, ['np','p'], SwZ1 ) }.

fw(Tfw, K, A, C, Rl, O, Neg, I, z(SwZ,NZ)) --> s(wy4),
	fw1(Tfw, K, A, C, Rl, O, Neg, I, z(SwZ,Z)), 
	{ zrozne( Z, ['p','pz'], NZ ) },
	fl(A, C, Rl, O, Neg, ni, z(SwZ1,Z1)),
	{ zrowne( Z1, [np], SwZ1 ) }.

%
% Wymaganie puste zostało obsłużone na poziomie zdania elementarnego.
%fw(nic, K, A, C, Rl, O, Neg, ni, np) --> s(wy5).
%

fw1(infp(A1), K, A, C, Rl, O, Neg, I, Z)
     --> s(wy6), fwe(bok, A1, C, T, Rl1, O1, wym([],_), K, Neg, I, Z).
                                                           

fw1(prepnp(Pm,P), K, A, C, Rl, O, Neg, I, Z)
     --> s(wy7), fpm(Pm, P, Neg, I, Z, Kl).

fw1(subj, K, A, C, Rl, O, Neg, I, Z)
     --> s(wy8), fno(mian, Rl, O, Neg, I, Z, Kl, _).

fw1(np(bier), K, A, C, Rl, O, nie(Neg), I, Z)
     --> s(wy9), fno(dop, Rl1, O1, nie(Neg), I, Z, Kl, _).

fw1(np(bier), K, A, C, Rl, O, tak, I, Z)
     --> s(wy10), fno(bier, Rl1, O1, tak, I, Z, Kl, _).

fw1(np(P), K, A, C, Rl, O, Neg, I, Z)
     --> s(wy11), fno(P, Rl1, O1, Neg, I, Z, Kl, _), 
       { rozne(P, ['mian','bier','miej','wol'])}.

fw1(sie, K, A, C, Rl, O, Neg, ni, z(_,[np])) -->
	s(wy20), [morf(_,'się',qub)].

% to ma być ‘się’ bezosobowe („czyta się książki.”)
fw1(subj, _K, _A, _C, r(mn(n),nmo(np(n)))/poj, 3, _Neg, ni, z(_,[np])) -->
	s(wy21), [morf(_,'się',qub)].

fw1(adjp(mian), K, A, C, Rl, O, Neg, I, Z)
     --> s(wy12), fpt(mian, Rl, St, Neg, I, Z, Kl, _).

fw1(adjp(bier), K, A, C, Rl, O, nie(Neg), I, Z)
     --> s(wy13), fpt(dop, Rl, St, nie(Neg), I, Z, Kl, _).

fw1(adjp(bier), K, A, C, Rl, O, tak, I, Z)
     --> s(wy14), fpt(bier, Rl, St, tak, I, Z, Kl, _).

fw1(adjp(narz), K, A, C, Rl, O, Neg, I, Z)
     --> s(wy15), fpt(narz, Rl, St, Neg, I, Z, Kl, _).

fw1(advp, K, A, C, Rl, O, Neg, I, Z)
     --> s(wy16), fps(St, Neg, I, Z, Kl, _).

fw1(sentp(Tfz), bier, A, C, Rl, O, nie(_), I, z(_,Z))
--> s(wy17), fzd(Tfz, dop, A1, C1, T1, Neg1, I, _),
	przec,
	{ rowne(Tfz, ['aż1','czy','jak','jakby','jakoby',
	              'mie1','mie2','mie3','pz','że','żeby']),
	  Z = [p,np,pz,co,jaki,kto,'który'] }.

fw1(sentp(Tfz), bier, A, C, Rl, O, tak, I, z(_,Z))
--> s(wy18), fzd(Tfz, bier, A1, C1, T1, Neg1, I, _),
	przec,
	{ rowne(Tfz,['aż1','czy','jak','jakby','jakoby',
	             'mie1','mie2','mie3','pz','że','żeby']),
	Z = [p,np,pz,co,jaki,kto,'który'] }.

fw1(sentp(Tfz), nk, A, C, Rl, O, Neg, I, z(_,Z))
--> s(wy19), fzd(Tfz, nk, A1, C1, T1, Neg1, I, _),
	przec,
	{ rowne(Tfz, ['aż1','czy','jak','jakby','jakoby',
	              'mie1','mie2','mie3','pz','że','żeby']), 
	Z = [p,np,pz,co,jaki,kto,'który'] }.

fw1(sentp(K,Tfz), K, A, C, Rl, O, Neg, I, z(_,Z))
--> s(wy19a), fzd(Tfz, K, A1, C1, T1, Neg1, I, _),
	przec,
	{ rowne(Tfz, ['aż1','czy','jak','jakby','jakoby',
	              'mie1','mie2','mie3','pz','że','żeby']), 
        rozne(K, [bier,bp,nk]),
	Z = [p,np,pz,co,jaki,kto,'który'] }.

fw1(sentp(Pm,P,Tfz), Pm/P, A, C, Rl, O, Neg, I, z(_,Z))
--> s(wy19b), fzd(Tfz, Pm/P, A1, C1, T1, Neg1, I, _),
	przec,
	{ rowne(Tfz, ['aż1','czy','jak','jakby','jakoby',
	              'mie1','mie2','mie3','pz','że','żeby']), 
	Z = [p,np,pz,co,jaki,kto,'który'] }.


% 5.9. Fraza luźna

fl(A, C, Rl, O, Neg, I, Z) --> s(lu1),
	fl1(A, C, Rl, O, Neg, I, Z).

fl(A, C, Rl, O, Neg, I, z(_,[p])) --> s(lu2),
	fl1(A, C, Rl, O, Neg, I, z(SwZ1,Z1)),
	fl(A, C, Rl, O, Neg, ni, z(SwZ2,Z2)),
	{ zplubnp(Z1,Z2,SwZ1,SwZ2) }.

fl(A, C, Rl, O, Neg, I, z(SwZ,NZ)) --> s(lu3),
	fl1(A, C, Rl, O, Neg, I, z(SwZ,Z)),
	{ zrowne( Z, [pz], NZ ) },
	fl(A, C, Rl, O, Neg, ni, z(SwZ1,Z1)),
	{ zrowne( Z1, ['p','np'], SwZ1 ) }.

fl(A, C, Rl, O, Neg, I, z(SwZ,NZ)) --> s(lu4),
	fl1(A, C, Rl, O, Neg, I, z(SwZ,Z)), 
	{ zrozne(Z, ['p','pz'], NZ) },
	fl(A, C, Rl, O, Neg, ni, z(SwZ1,Z1)),
	{ zrowne(Z1, [np], SwZ1) }.

fl1(A, C, Rl, O, Neg, I, z(SwZ,NZ))
--> s(lu5), fpm(Pm, P, Neg, I, z(SwZ,Z), Kl), 
	{ zrozne(Z, ['byxx','choćby','czyżby',
	             'gdyby','jakby','jakoby','żeby'], NZ) }.

fl1(A, C, Rl, O, Neg, I, z(SwZ,NZ))
--> s(lu6), fno(P, Rl1, O1, Neg, I, z(SwZ,Z), Kl, _), 
	{ rozne(P, [mian,miej,wol]), 
          zrozne(Z, ['byxx','choćby','czyżby',
	             'gdyby','jakby','jakoby','żeby'], NZ) }.

fl1(A, C, Rl, O, Neg, I, z(SwZ,NZ))
--> s(lu7), fps(St, Neg, I, z(SwZ,Z), Kl, _),
	{ zrozne(Z, ['byxx','choćby','czyżby',
	             'gdyby','jakby','jakoby','żeby'], NZ) }.

fl1(A, C, Rl, O, Neg, I, z(_,Z))
--> s(lu8), agl(Rl, O, I), 
	{ Z = ['byxx','choćby','czyżby','gdyby','jakby','jakoby','żeby']}.

fl1(A, C, Rl, O, Neg, I, z(SwZ,NZ))
--> s(lu9), przec, 
	fwe(psw, A1, C, T1, Rl1, O1, wym([],_), K, Neg, I, z(SwZ,Z)),
	{ zrowne( Z, [np], NZ ) },
	przec.

fl1(A, C, Rl, O, Neg, I, z(SwZ,NZ))
--> s(lu10), przec, 
	fwe(psu, A1, prze, T1, Rl1, O1, wym([],_), K, Neg, I, z(SwZ,Z)),
	{ zrowne( Z, [np], NZ ) },
	przec.

fl1(A, przy, Rl, O, Neg, I, z(SwZ,NZ))
--> s(lu11), przec, 
	fwe(psu, A1, C, T1, Rl1, O1, wym([],_), K, Neg, I, z(SwZ,Z)),
	{ zrowne( Z, [np], NZ ) },
	przec.

fl1(A, C, Rl, 2, Neg, ni, z(SwZ,NZ))
--> s(lu12), przec, 
	fno(wol, Rl, _O1, Neg1, ni, z(SwZ,Z), Kl, _),
	{ zrowne( Z, [np], NZ ) },
	przec.

fl1(A, C, Rl, O, Neg, ni, z(SwZ,NZ))
--> s(lu13), przec, 
	fno(wol, Rl1, _O1, Neg1, ni, z(SwZ,Z), Kl, _),
	{ zrowne( Z, [np], NZ ) },
	przec,
	{ rowne(O, [1,3])}.

% Realizacja pusta wydaje się zbędna.
%fl1(A, C, Rl, O, Neg, ni, np)
%     --> s(lu14).

fl1(nd, C, Rl, O, tak, I, z(_,[np]))
     --> s(lu15), fzd('dopóki', nk, A1, C, T1, Neg1, I, _),
       przec.

fl1(A, C, Rl, O, nie(nie), I, z(_,[np]))
     --> s(lu16), fzd('dopóki', nk, A1, C, T1, Neg1, I, _),
       przec.

fl1(A, C, Rl, O, Neg, I, z(_,[np]))
     --> s(lu17), fzd(Tfz, nk, A1, C1, T1, Neg1, I, _),
       przec,
       { rowne(Tfz, ['choćby','gdyby']), 
        rozne(C, prze)}.

fl1(A, C, Rl, O, Neg, I, z(_,[np]))
     --> s(lu18), fzd(Tfz, nk, A1, C, T1, Neg1, I, _),
       przec,
       { rowne(Tfz, ['aż2','gdy','zanim'])}.

fl1(A, C, Rl, O, Neg, I, z(_,[np]))
     --> s(lu19), fzd(Tfz, nk, A1, C1, T1, Neg1, I, _),
	przec,
	{ rowne(Tfz,['bo','co','chociaż','czy','jak','jeśli',
	            'podczas','ponieważ'])}.

% 5.10. Fraza werbalna

fwe(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,NZ))
     --> s(we1), kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z)),
	{ rowne(Wf, [bok,psu,psw]),
	  zrowne(Z, [pz,co,jaki,kto,'który'], NZ) }.

fwe(Wf, A, C, T, Rl, O, wym(_,ResztaWym), K, Neg, I, z(SwZ,NZ))
--> s(we2/4/6), kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z)),
	{ rowne(Wf, [bok,psu,psw]),
	  zrowne( Z, ['p','px','pxx'], NZ ) },
	wymagane( Wym, ResztaWym,
	          W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		{ zrowne(Z1, ['p','np'], SwZ1 ) } ),
       { resztawym(ResztaWym) }.

fwe(Wf, A, C, T, Rl, O, wym(_,ResztaWym), K, Neg, I, z(SwZ,NZ))
--> s(we3/5/7),  fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ1,Z1)),
	{ zrowne(Z1, ['p','np'], SwZ1) },
	wymagania([W1],  Wym, ResztaWym,
	    kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z)),
	    W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne(Z2, ['p','np'], SwZ2 ) } ),
        { rowne(Wf, [bok,psu,psw]),
	  resztawym(ResztaWym),
	  zrowne(Z, ['p','px','pxx'], NZ ) }.

fwe(Wf, A, C, T, Rl, O, wym(_,ResztaWym), K, Neg, I, z(SwZ,NZ))
--> s(we8/10/12), kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, I, z(SwZ,Z)),
	{ rowne(Wf, [bok,psu,psw]),
	  zrozne( Z, ['co','jaki','kto','który','p','px','pxx','pz'], NZ ) },
	wymagane( Wym, ResztaWym,
	          W1/fw(W1, K, A, C, Rl, O, Neg, ni, z(SwZ1,Z1))/
		{ zrowne(Z1, [np], SwZ1 ) } ),
       { resztawym(ResztaWym) }.

fwe(Wf, A, C, T, Rl, O, wym(_,ResztaWym), K, Neg, I, z(SwZ,NZ))
--> s(we9/11/13),  fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ1,Z1)),
	{ zrowne(Z1, [np], SwZ1) },
	wymagania([W1],  Wym, ResztaWym,
	    kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z)),
	    W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne(Z2, [np], SwZ2 ) } ),
        { rowne(Wf, [bok,psu,psw]),
	  resztawym(ResztaWym),
	  zrozne(Z, ['co','jaki','kto','który','p','px','pxx','pz'], NZ ) }.


fwe(Wf, A, C, T, Rl, O, wym(_,ResztaWym), K, Neg, I, z(SwZ,NZ))
--> s(we14/15/16),  fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ,Z1)),
	{ zrowne(Z1, [pz], NZ1) },
	wymagania([W1],  Wym, ResztaWym,
	    kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z)),
	    W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne(Z2, ['p','np'], SwZ2 ) } ),
        { rowne(Wf, [bok,psu,psw]),
	  resztawym(ResztaWym),
	  zrowne(Z, NZ1, NZ ) }.

fwe(Wf, A, C, T, Rl, O, wym(_,ResztaWym), K, Neg, I, z(SwZ,NZ))
--> s(we17/18/19),  fw(W1, K, A, C, Rl, O, Neg, I, z(SwZ,Z1)),
	{ zrowne(Z1, ['co','jaki','kto','który'], NZ1) },
	wymagania([W1],  Wym, ResztaWym,
	    kweneg(Wf, A, C, T, Rl, O, Wym, K, Neg, ni, z(SwZ,Z)),
	    W2/fw(W2, K, A, C, Rl, O, Neg, ni, z(SwZ2,Z2))/
		 { zrowne(Z2, [np], SwZ2 ) } ),
        { rowne(Wf, [bok,psu,psw]),
	  resztawym(ResztaWym),
	  zrowne(Z, NZ1, NZ ) }.

kweneg(Wf, A, C, T, Rl, O, Wym, K, nie(nie), I, z(SwZ,NZ))
--> s(we20), partykula(nie), 
	kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)),
	{ rowne(Wf, [bok,psu,psw]),
	  zrowne( Z, ['p','px','pxx','pz'], NZ ) },
	fl(A, C, Rl, O, nie(nie), ni, z(SwZ1,Z1)),
	{ zrozne(Z1, [pz], NZ1),
	  zrowne(NZ1, [np|NZ], SwZ1) }.

kweneg(Wf, A, C, T, Rl, O, Wym, K, nie(_), I, z(SwZ,NZ))
--> s(we21), partykula(nie), 
	kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)),
	{ rowne(Wf, [bok,psu,psw]),
	  zrozne( Z, ['p','px','pxx','pz'], NZ )},
	fl(A, C, Rl, O, nie(nie), ni, z(SwZ1,Z1)),
	{ zrowne( Z1, [np], SwZ1 ) }.

kweneg(Wf, A, C, T, Rl, O, Wym, K, tak, I, z(SwZ,NZ))
--> s(we22), kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)), 
	{ rowne(Wf, [bok,psu,psw]),
	  zrowne(Z, ['p','px','pxx','pz'], NZ) },
	fl(A, C, Rl, O, tak, ni, z(SwZ1,Z1)),
	{ zrozne( Z1, [pz], NZ1 ),
          zrowne( NZ1, [np|NZ], SwZ1) }.

kweneg(Wf, A, C, T, Rl, O, Wym, K, tak, I, z(SwZ,NZ))
     --> s(we23), kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)),
	{ rowne(Wf, [bok,psu,psw]),
	  zrozne( Z, ['aż1xx','boxx','byxx','dopóki',
	'gdyxx',p,'px','pxx','pz','zanimxx'], NZ ) },
	fl(A, C, Rl, O, tak, ni, z(SwZ1, Z1)),
	{ zrowne(Z1, [np], SwZ1 )}.

kweneg(Wf, nd, C, T, Rl, O, Wym, K, tak, I, z(SwZ,NZ))
--> s(we24), kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)), 
	{ rowne(Wf, [bok,psu,psw]),
	  zrowne( Z, ['aż1xx','boxx','byxx',
	              'dopóki','gdyxx','zanimxx'], NZ ) },
	fl(A, C, Rl, O, tak, ni, z(SwZ1,Z1)),
	{ zrowne( Z1, [np], SwZ1 ) }.

%%%% *dodane
%%%% W ramach usuwania reguł epsilonowych

kweneg(Wf, A, C, T, Rl, O, Wym, K, nie(nie), I, z(SwZ,NZ))
--> s(we20e), partykula(nie), 
	kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)),
	{ zrowne( Z, ['p','px','pxx','pz'], NZ ) }.

kweneg(Wf, A, C, T, Rl, O, Wym, K, nie(_), I, z(SwZ,NZ))
--> s(we21e), partykula(nie),
	kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)),
       { zrozne( Z, ['p','px','pxx','pz'], NZ ) }.

kweneg(Wf, A, C, T, Rl, O, Wym, K, tak, I, z(SwZ,NZ))
--> s(we22e), kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)), 
	{ zrozne( Z, ['aż1xx','boxx','byxx','dopóki','gdyxx','zanimxx'], NZ) }.

kweneg(Wf, nd, C, T, Rl, O, Wym, K, tak, I, z(SwZ,NZ))
--> s(we24e), kweink(Wf, A, C, T, Rl, O, Wym, K, I, z(SwZ,Z)), 
	{ zrowne(Z, ['aż1xx','boxx','byxx','dopóki','gdyxx','zanimxx'], NZ) }.

%%%% /dodane

kweink(Wf, A, C, T, Rl, O, Wym, K, I, Z)
--> s(we25), kwer(Wf, A, C, T, Rl, O, Wym, K, Z), 
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri]) }.

kweink(Wf, A, C, T, Rl, O, Wym, K, ni, Z)
     --> s(we26), kwer(Wf, A, C, T, Rl, O, Wym, K, Z).

kwer(bos, A, prze, T, Rl, 3, Wym, K, Z)
     --> s(we27), kwer1(bos, A, prze, T, Rl, 3, Wym, K, Z).

kwer(Wf, A, C, T, Rl, 3, Wym, K, Z)
     --> s(we28), kwer1(Wf, A, C, T, Rl, 3, Wym, K, Z),
       { rowne(Wf, ['bok','psu','psw']) }.

kwer(os, A, C, T, Rl, O, Wym, K, Z)
     --> s(we29), kwer1(os, A, C, T, Rl, O, Wym, K, Z).


kwer1(Wf, A, C, T, Rl, O, Wym, K, z(_,['np','npx','npxx'| Z1]))
     --> s(we30n), 
	formaczas(Wf, A, C, T, Rl, O, Wym, K ),
	{ (T \== roz
    ->
	Z1 = ['npt','npxt','npxxt','p','px','pxx','pz'| Z2]
    ;
	Z1 = Z2 ),
	( T \== roz, Wf \== bok
    ->
	Z2 = ['aż1xx','aż2','bo','box','boxx','bowiem','chociaż', 
	       'co','czy','dopóki','gdy','gdyxx',
	       'jak','jaki','jeśli','kto','który',
	       'podczas','ponieważ','że'| Z3]
    ;
	Z2 = Z3 ),
	( T \== roz, Wf \== bok, C == przy
    ->
	Z3 = ['aż1'| Z4]
    ;
	Z3 = Z4),
	( T \== roz, Wf \== bok, A == dk
    ->
	Z4 = [zanim, zanimxx | Z5]
    ;
	Z4 = Z5 ),
	( Wf \== bok, C == prze, T == ozn
    ->
	Z5 = ['byxx','choćby','czyżby','gdyby','jakby','jakoby','żeby']
    ;
	Z5 = [])
	}.

kwer1(bok, A, prze, ozn, Rl, O, Wym, K,
	z(_,['byxx','choćby','czyżby','gdyby','jakby','jakoby','żeby']))
     --> s(we35n),
	formaczas(bok, A, prze, ozn, Rl, O, Wym, K ).

% 5.11. Fraza przyimkowa

fpm(Pm, P, Neg, I, Z, Kl) --> s(pm1),
	przyimek(Pm, P), 
	fno(P, Rl, O, Neg, I, Z, Kl, _).

% 5.12. Fraza nominalna

fno(P, Rl, O, Neg, I, Z, Kl, X)
--> s(no1),
	knodop(P, Rl, O, Neg, I, Z, Kl, @X).

fno(P, Rl, O, Neg, I, Z, Kl, @ @ @ @ @0)
--> s(no2),
	knodop(P, Rl, O, Neg, I, Z, Kl, _),
	{ rozne(Kl, ['co','kto','wz']) },
	fzd('który', nk, A, C, T, Neg1, Rl, _),
	przec.

fno(P, Rl, O, Neg, I, Z, Kl, @ @ @ @ @0)
--> s(no3), knodop(P, Rl, O, Neg, I, Z, Kl, _), 
	{ rowne(Kl, ['co','kto']) },
	fzd(Tfz, nk, A, C, T, Neg1, Rl, _),
	{ rowne(Tfz, [Kl, 'który'])},
	przec.

fno(P, Rl, O, Neg, I, Z, tk, @ @ @ @ @0)
--> s(no4), knodop(P, Rl, O, Neg, I, Z, tk, _), 
	fzd(Tfz, nk, A, C, T, Neg1, ni, _),
	{ rowne(Tfz, ['jakby','jaki','że','żeby'])},
	przec.

knodop(P, Rl, O, Neg, I, Z, Kl, X)
--> s(no5), knopm(P, Rl, O, Neg, I, Z, Kl, @X).

knodop(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no6), knopm(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ rozne(Kl2, os) },
	fno(dop, Rl1, 3, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
          rozne(Kl1, kto),
	  oblkl(Kl, Kl1, Kl2) }.

knodop(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no7), fno(dop, Rl1, 3, Neg1, I, z(SwZ1,Z1), Kl1, _), 
        { rozne(Kl1, kto) },
	knopm(P, Rl, O, Neg, ni, z(SwZ,Z), Kl2, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
	  rozne(Kl2, os), 
	  oblkl(Kl, Kl1, Kl2)}.

knodop(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no8), knopm(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ zrowne(Z, ['co','jaki','który','np'], NZ ), 
	  rozne(Kl2, ['os','wz']) },
	fno(dop, Rl1, 3, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne( Z1, [np], SwZ1 ),
          rozne(Kl1, kto), 
	  oblkl(Kl, Kl1, Kl2)}.

knodop(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no9), fno(dop, Rl1, 3, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne( Z, ['co','jaki','który','np'], NZ ), 
          rozne(Kl1, kto) },
	knopm(P, Rl, O, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne( Z1, [np], SwZ1 ),
          rozne(Kl2, os), 
	  oblkl(Kl, Kl1, Kl2)}.

knodop(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no10), knopm(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ zrowne(Z, [pz], NZ) },
	fno(dop, Rl1, 3, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
        rozne(Kl1, kto), 
        oblkl(Kl, Kl1, Kl2)}.

knodop(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
     --> s(no11), fno(dop, Rl1, 3, Neg1, I, z(SwZ,Z), Kl1, _),
	{ rozne(Kl1, kto), 
	  zrowne(Z, [pz], NZ) },
	knopm(P, Rl, O, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          rozne(Kl2, os), 
	  oblkl(Kl, Kl1, Kl2)}.

knopm(P, Rl, O, Neg, I, Z, Kl, X)
--> s(no12), knoatr(P, Rl, O, Neg, I, Z, Kl, @X).

knopm(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no13), knoatr(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	fpm(Pm, P1, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knopm(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no14), fpm(Pm, P1, Neg1, I, z(SwZ1,Z1), Kl1), 
	knoatr(P, Rl, O, Neg, ni, z(SwZ,Z), Kl2, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knopm(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no15), knoatr(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ zrowne(Z, ['co','jaki','który','np'], NZ) },
	fpm(Pm, P1, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knopm(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no16), fpm(Pm, P1, Neg1, I, z(SwZ,Z), Kl1),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) },
	knoatr(P, Rl, O, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knopm(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no17), knoatr(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ zrowne(Z, [pz], NZ) },
	fpm(Pm, P1, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

knopm(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no18), fpm(Pm, P1, Neg1, I, z(SwZ,Z), Kl1), 
	{ zrowne(Z, [pz], NZ) },
	knoatr(P, Rl, O, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, Z, Kl, X)
     --> s(no19), knoink(P, Rl, O, Neg, I, Z, Kl, @X).

knoatr(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no20), knoink(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	fpt(P, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
          rozne(Kl2, co), 
	  oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no21), knoink(P, Rl, O, Neg, I, z(SwZ,Z), co, _), 
	{ rowne(P, ['mian','bier']) },
	fpt(dop, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
        oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no22), knoink(P, Rl, O, Neg, I, z(SwZ,Z), co, _), 
	{ rozne(P, ['mian','bier']) },
	fpt(P, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
        oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no23), fpt(P, Rl, St1, Neg1, I, z(SwZ1,Z1), Kl1, _),
	knoink(P, Rl, O, Neg, ni, z(SwZ,Z), Kl2, _),
	{ zplubnp(Z,Z1,SwZ,SwZ1),
          rozne(Kl2, co), 
	  oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no24), fpt(dop, Rl, St1, Neg1, I, z(SwZ1,Z1), Kl1, _),
	knoink(P, Rl, O, Neg, ni, z(SwZ,Z), co, _),
	{ rowne(P, ['mian','bier']), 
	  zplubnp(Z,Z1,SwZ,SwZ1),
	  oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(no25), fpt(P, Rl, St1, Neg1, I, z(SwZ1,Z1), Kl1, _),
	knoink(P, Rl, O, Neg, ni, z(SwZ,Z), co, _),
	{ rozne(P, ['mian','bier']),
	  zplubnp(Z,Z1,SwZ,SwZ1),
	  oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no26), knoink(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ), 
          rozne(Kl2, ['co','os','wz']) },
	fpt(P, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no27), fpt(P, Rl, St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) },
	knoink(P, Rl, O, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
          rozne(Kl2, ['co','os','wz']), 
	  oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no28), knoink(P, Rl, O, Neg, I, z(SwZ,Z), co, _), 
	{ rowne(P, ['mian','bier']), 
	  zrowne(Z, [np], NZ) },
	fpt(dop, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no29), knoink(P, Rl, O, Neg, I, z(SwZ,Z), co, _), 
	{ rozne(P, ['mian','bier']), 
	  zrowne(Z, [np], NZ) },
	fpt(P, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no30), fpt(dop, Rl, St1, Neg1, I, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, [np], SwZ1) },
	knoink(P, Rl, O, Neg, ni, z(SwZ,Z), co, _),
	{ rowne(P, ['mian','bier']), 
	  zrowne(Z, [np], NZ),
	  oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no31), fpt(P, Rl, St1, Neg1, I, z(SwZ1,Z1), Kl1, _),
	{ rozne(P, ['mian','bier']), 
	  zrowne(Z1, [np], SwZ1) },
	knoink(P, Rl, O, Neg, ni, z(SwZ,Z), co, _),
	{ zrowne(Z, [np], NZ),
          oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no32), knoink(P, Rl, O, Neg, I, z(SwZ,Z), Kl2, _), 
	{ rozne(Kl2, [co]),
	  zrowne(Z, [pz], NZ) },
	fpt(P, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no33), knoink(P, Rl, O, Neg, I, z(SwZ,Z), co, _), 
	{ rowne(P, ['mian','bier']),
	  zrowne(Z, [pz], NZ) },
	fpt(dop, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no34), knoink(P, Rl, O, Neg, I, z(SwZ,Z), co, _), 
	{ rozne(P, ['mian','bier']),
	  zrowne(Z, [pz], NZ) },
	fpt(P, Rl, St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no35), fpt(P, Rl, St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, [pz], NZ) },
	knoink(P, Rl, O, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ rozne(Kl2, co), 
          zrowne(Z1, ['np','p'], SwZ1), 
	  oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no36), fpt(dop, Rl, St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, [pz], NZ) },
	knoink(P, Rl, O, Neg, ni, z(SwZ1,Z1), co, _),
	{ rowne(P, ['mian','bier']),
	  zrowne(Z1, ['np','p'], SwZ1), 
	  oblkl(Kl, Kl1, Kl2) }.

knoatr(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(no37), fpt(P, Rl, St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, [pz], NZ),
	  rozne(P, ['mian','bier']) },
        knoink(P, Rl, O, Neg, ni, z(SwZ1,Z1), co, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2) }.

% knoatr(P, Rl, 3, Neg, I, Z, Kl, @ @ @ @ @0)
%      --> s(no38), fpt(P, Rl, St, Neg, I, Z, Kl, _).

knoink(P, Rl, O, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0) --> s(no39),
	knom(P, Rl, O, Neg, z(SwZ,Z), Kl, _),
	{ zrowne(Z, ['np','p','pz'], NZ) },
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
  	  rowne(Tsp, [pi,ri]) }.

knoink(P, Rl, O, Neg, ni, z(SwZ,NZ), Kl, X) --> s(no40), 
	knom(P, Rl, O, Neg, z(SwZ,Z), Kl, @X), 
	{ zrowne( Z, ['np','p','pz'], NZ ) }.

knoink(P, Rl, O, Neg, Rl, z(SwZ,NZ), Kl, X) --> s(no41), 
	knom(P, Rl, O, Neg, z(SwZ,Z), Kl, @X), 
	{ rozne(I, ['bowiem','natomiast','ni','więc','zaś']),
        zrowne( Z, ['co','jaki','kto','który'], NZ ) }.

knom(P, Rl, 3, Neg, z(_,Z), Kl, @ @ @ @ @ 0)
--> s(no42), zaimpyt(rzecz, P, Rl, 3, Kl), 
	{ Z = [p,pz], 
          rowne(Kl, ['co','kto'])}.

knom(P, Rl, 3, Neg, z(_,[np]), Kl, @ @ @ @ @ 0)
--> s(no43), zaimno(rzecz, P, Rl, 3, Kl), 
	{ rowne(Kl, ['co','kto'])}.

knom(P, Rl, 3, nie(_), z(_,[np]), Kl, @ @ @ @ @ 0)
--> s(no44), zaimneg(rzecz, P, Rl, 3, Kl),
	{ rowne(Kl, ['co','kto'])}.

knom(P, Rl, O, _Neg, z(_,[np]), os, @ @ @ @ @ 0) --> s(no45),
	zaimos( P, Rl, O ).

knom(P, Rl, 3, Neg, z(_,[np]), rzecz, @ @ @ @ @ 0)
--> s(no46), formarzecz(P, Rl).

% reguła dodana na mocy listu prof. Świdzińskiego z 28 grudnia 1999:
%knom(P, Rl, 3, _Neg, z(_,[np]), rzecz, @ @ @ @ @ 0) --> s(no46x),
%	zaimrzecz( _F, P, Rl ).

knom(P, Rl, 3, Neg, z(_,[Kl]), wz, @ @ @ @ @ 0)
--> s(no47), zaimwzg(rzecz, P, Rl, 3, Kl),
	{ rowne( Kl, ['co','kto','który']) }.

knom(P, Rl, O, Neg, Z, Kl, X)
--> s(no48), fno(P, Rl, O, Neg, ni, Z, Kl, @X).

% 5.13. Fraza przymiotnikowa

fpt(P, Rl, St, Neg, I, Z, Kl, X)
     --> s(pt1), kptno(P, Rl, St, Neg, I, Z, Kl, @X).

fpt(P, Rl, St, Neg, I, Z, tk, @ @ @ @ @0)
     --> s(pt2), kptno(P, Rl, St, Neg, I, Z, tk, _),
       fzd(Tfz, nk, A, C, T, Neg1, ni, _),
       przec,
       { rowne(Tfz, ['jakby','jaki','że','żeby'])}.

kptno(P, Rl, St, Neg, I, Z, Kl, X)
     --> s(pt3), kptpm(P, Rl, St, Neg, I, Z, Kl, @X).

kptno(P, Rl, St, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
     --> s(pt4), kptpm(P, Rl, St, Neg, I, z(SwZ1,Z1), Kl2, _),
       fno(P1, Rl1, O, Neg1, ni, z(SwZ2,Z2), Kl1, _),
       { zplubnp( Z1, Z2, SwZ1, SwZ2 ),
         oblkl(Kl, Kl1, Kl2)}.

kptno(P, Rl, St, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(pt5), fno(P1, Rl1, O, Neg1, I, z(SwZ1,Z1), Kl1, _), 
	kptpm(P, Rl, St, Neg, ni, z(SwZ2,Z2), Kl2, _),
	{ zplubnp( Z1, Z2, SwZ1, SwZ2 ),
          oblkl(Kl, Kl1, Kl2)}.

kptno(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt6), kptpm(P, Rl, St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ), 
          rozne(Kl2, wz) }, 
	fno(P1, Rl1, O, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, [np], SwZ1),
	  oblkl(Kl, Kl1, Kl2) }.

kptno(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt7), fno(P1, Rl1, O, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) },
	kptpm(P, Rl, St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
	  oblkl(Kl, Kl1, Kl2) }.

kptno(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt8), kptpm(P, Rl, St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z, [pz], NZ) },
	fno(P1, Rl1, O, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

kptno(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt9), fno(P1, Rl1, O, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, [pz], NZ) },
	kptpm(P, Rl, St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

kptpm(P, Rl, St, Neg, I, Z, Kl, X)
     --> s(pt10), kptps(P, Rl, St, Neg, I, Z, Kl, @X).

kptpm(P, Rl, St, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(pt11), kptps(P, Rl, St, Neg, I, Z1, Kl2, _),
	fpm(Pm, P1, Neg1, ni, Z2, Kl1),
	{ zplubnp( Z1, Z2, SwZ1, SwZ2 ),
          oblkl(Kl, Kl1, Kl2) }.

kptpm(P, Rl, St, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(pt12), fpm(Pm, P1, Neg1, I, Z1, Kl1), 
	kptps(P, Rl, St, Neg, ni, Z2, Kl2, _),
	{ zplubnp( Z1, Z2, SwZ1, SwZ2 ),
          oblkl(Kl, Kl1, Kl2) }.

kptpm(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt13), kptps(P, Rl, St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) },
	fpm(Pm, P1, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

kptpm(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt14), fpm(Pm, P1, Neg1, I, z(SwZ,Z), Kl1),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) },
	kptps(P, Rl, St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

kptpm(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt15), kptps(P, Rl, St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z,[pz],NZ) },
	fpm(Pm, P1, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zrowne(Z1, ['np','p'], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

kptpm(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt16), fpm(Pm, P1, Neg1, I, z(SwZ,Z), Kl1), 
	{ zrowne(Z,[pz],NZ) },
	kptps(P, Rl, St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z, ['np','p'], SwZ1),
          oblkl(Kl, Kl1, Kl2) }.

kptps(P, Rl, St, Neg, I, Z, Kl, X)
     --> s(pt17), kptink(P, Rl, St, Neg, I, Z, Kl, @X).

kptps(P, Rl, St, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(pt18), kptink(P, Rl, St, Neg, I, Z1, Kl2, _),
	fps(St1, Neg1, ni, Z2, Kl1, _),
	{ zplubnp( Z1, Z2, SwZ1, SwZ2 ),
          oblkl(Kl, Kl1, Kl2) }.

kptps(P, Rl, St, Neg, I, z(_,[p]), Kl, @ @ @ @ @0)
--> s(pt19), fps(St1, Neg1, I, Z1, Kl1, _),
	kptink(P, Rl, St, Neg, ni, Z2, Kl2, _),
	{ zplubnp( Z1, Z2, SwZ1, SwZ2 ),
          oblkl(Kl, Kl1, Kl2) }.

kptps(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt20), kptink(P, Rl, St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) }, 
	fps(St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2)}.

kptps(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt21), fps(St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) }, 
	kptink(P, Rl, St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2) }.

kptps(P, Rl, St, Neg, I, z(_,[pz]), Kl, @ @ @ @ @0)
--> s(pt22), kptink(P, Rl, St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], SwZ) },
	fps(St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1),
	  oblkl(Kl, Kl1, Kl2)}.

kptps(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt23), fps(St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, [pz], NZ) },
	kptink(P, Rl, St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
          oblkl(Kl, Kl1, Kl2) }.

kptink(P, Rl, St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @ @0)
--> s(pt24), kprzym(P, Rl, St, Neg, z(SwZ,Z), Kl, _),
        { zrozne(Z, [jaki], NZ) },
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri]) }.

kptink(P, Rl, St, Neg, ni, z(SwZ,NZ), Kl, X)
--> s(pt25), kprzym(P, Rl, St, Neg, z(SwZ,Z), Kl, @X),
	{ zrozne(Z, [jaki], NZ)}.

kptink(P, Rl, St, Neg, ni, z(SwZ,NZ), wz, X)
--> s(pt26), kprzym(P, Rl, St, Neg, z(SwZ,Z), wz, @X),
	{ zrowne(Z, [jaki], NZ) }.

kprzym(P, Rl, row, Neg, z(_,[p,pz]), zaim, @ @ @ @ @0)
     --> s(pt27), zaimpyt(przym, P, Rl, 3, zaim).

kprzym(P, Rl, row, Neg, z(_,[np]), Kl, @ @ @ @ @0)
     --> s(pt28), zaimno(przym, P, Rl, O, Kl),
       { rowne(Kl, ['tk','zaim'])}.

kprzym(P, Rl, row, nie(_Neg), z(_,[np]), zaim, @ @ @ @ @0)
     --> s(pt29), zaimneg(przym, P, Rl, 3, Kl).

kprzym(P, Rl, St, Neg, z(_,[np]), przym, @ @ @ @ @0)
     --> s(pt30), formaprzym(P, Rl, St).

kprzym(P, Rl, row, Neg, z(_,[jaki]), wz, @ @ @ @ @0)
     --> s(pt31), zaimwzg(przym, P, Rl, 3, wz).

kprzym(P, Rl, St, Neg, Z, Kl, X)
     --> s(pt32), fpt(P, Rl, St, Neg, ni, Z, Kl, @X).


% 5.14. Fraza przysłówkowa

fps(St, Neg, I, Z, Kl, X)
     --> s(ps1), kpspm(St, Neg, I, Z, Kl, @X).

fps(St, Neg, I, Z, Kl, @ @ @ @0)
     --> s(ps2), kpspm(St, Neg, I, Z, Kl, _),
       fzd(Tfz, nk, A, C, T, Neg1, ni, _),
       przec,
       { rowne(Tfz, ['jak','jakby','że','żeby'])}.

kpspm(St, Neg, I, Z, Kl, X)
     --> s(ps3), kpsps(St, Neg, I, Z, Kl, @X).

kpspm(St, Neg, I, z(_,[p]), Kl, @ @ @ @0)
--> s(ps4), kpsps(St, Neg, I, z(SwZ1,Z1), Kl2, _),
	fpm(Pm, P, Neg1, ni, z(SwZ2,Z2), Kl1),
	{ zplubnp(Z1,Z2,SwZ1,SwZ2), 
	  oblkl(Kl, Kl1, Kl2)}.

kpspm(St, Neg, I, z(_,[p]), Kl, @ @ @ @0)
--> s(ps5), fpm(Pm, P, Neg1, I, z(SwZ1,Z1), Kl1), 
	kpsps(St, Neg, ni, z(SwZ2,Z2), Kl2, _),
	{ zplubnp(Z1,Z2,SwZ1,SwZ2),
	  oblkl(Kl, Kl1, Kl2)}.

kpspm(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps6), kpsps(St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne( Z, [co,jaki,kto,'który',np], NZ ) },
	fpm(Pm, P, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zrowne( Z1, [np], SwZ1 ),
	oblkl(Kl, Kl1, Kl2) }.

kpspm(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps7), fpm(Pm, P, Neg1, I, z(SwZ,Z), Kl1),
	{ zrozne( Z, [co,jaki,kto,'który',np], NZ ) },
	kpsps(St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne( Z1, [np], SwZ1 ),
	oblkl(Kl, Kl1, Kl2)}.

kpspm(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps8), kpsps(St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne( Z, [pz], NZ ) },
	fpm(Pm, P, Neg1, ni, z(SwZ1,Z1), Kl1),
	{ zrowne(Z1, [np,p], SwZ1 ),
        oblkl(Kl, Kl1, Kl2)}.

kpspm(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps9), fpm(Pm, P, Neg1, I, z(SwZ,Z), Kl1), 
	{ zrowne( Z, [pz], NZ ) },
	kpsps(St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, ['np','p'], SwZ1 ),
        oblkl(Kl, Kl1, Kl2)}.

kpsps(St, Neg, I, Z, Kl, X)
     --> s(ps10), kpsink(St, Neg, I, Z, Kl, @X).

kpsps(St, Neg, I, z(_,[p]), Kl, @ @ @ @0)
--> s(ps11), kpsink(St, Neg, I, z(SwZ1,Z1), Kl2, _),
	fps(St1, Neg1, ni, z(SwZ2,Z2), Kl1, _),
	{ zplubnp(Z1,Z2,SwZ1,SwZ2),
	  oblkl(Kl, Kl1, Kl2) }.

kpsps(St, Neg, I, z(_,[p]), Kl, @ @ @ @0)
--> s(ps12), fps(St1, Neg1, I, z(SwZ1,Z1), Kl1, _),
	kpsink(St, Neg, ni, z(SwZ2,Z2), Kl2, _),
	{ zplubnp(Z1,Z2,SwZ1,SwZ2),
	  oblkl(Kl, Kl1, Kl2) }.

kpsps(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps13), kpsink(St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne( Z, ['co','jaki','kto','który','np'], NZ ) },
	fps(St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne( Z1, [np], SwZ1 ),
          oblkl(Kl, Kl1, Kl2)}.

kpsps(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps14), fps(St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, ['co','jaki','kto','który','np'], NZ) },
	kpsink(St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, [np], SwZ1),
	  oblkl(Kl, Kl1, Kl2)}.

kpsps(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps15), kpsink(St, Neg, I, z(SwZ,Z), Kl2, _),
	{ zrowne(Z, [pz], NZ) },
	fps(St1, Neg1, ni, z(SwZ1,Z1), Kl1, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
          oblkl(Kl, Kl1, Kl2)}.

kpsps(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0)
--> s(ps16), fps(St1, Neg1, I, z(SwZ,Z), Kl1, _),
	{ zrowne(Z, [pz], NZ) },
	kpsink(St, Neg, ni, z(SwZ1,Z1), Kl2, _),
	{ zrowne(Z1, ['np','p'], SwZ1), 
        oblkl(Kl, Kl1, Kl2)}.

kpsink(St, Neg, I, z(SwZ,NZ), Kl, @ @ @ @0) --> s(ps17),
	kprzysl(St, Neg, z(SwZ,Z), Kl, _),
	{ zrowne( Z, ['np','p','pz'], NZ ) },
	spoj(Tsp, I, ni),
	{ rowne(I, ['bowiem','natomiast','więc','zaś']),
	  rowne(Tsp, [pi,ri])  }.

kpsink(St, Neg, ni, z(SwZ,NZ), Kl, X)
--> s(ps18), kprzysl(St, Neg, z(SwZ,Z), Kl, @X),
	{ zrowne(Z, [np, p, pz], NZ) }.

kprzysl(row, Neg, z(_,[p,pz]), Kl, @ @ @ @0)
     --> s(ps19), zaimpyt(przysl, P, Rl, O, Kl).

kprzysl(row, Neg, z(_,[np]), Kl, @ @ @ @0)
     --> s(ps20), zaimno(przysl, P, Rl, O, Kl).

kprzysl(row, nie(_Neg), z(_,[np]), Kl, @ @ @ @0)
     --> s(ps21), zaimneg(przysl, P, Rl, O, Kl).

kprzysl(St, Neg, z(_,[np]), Kl, @ @ @ @0)
     --> s(ps22), formaprzysl(St).

kprzysl(St, Neg, Z, Kl, X)
     --> s(ps23), fps(St, Neg, ni, Z, Kl, @X).

% 5.15. Fraza zdaniowa

fzd(Tfz, K, A, C, T, Neg, I, X)
--> s(zd1), fzdsz(Tfz, K, A, C, T, Neg, I, @X).

fzd(Tfz, K, A, C, T, Neg0, I, @ @ @0)
--> s(zd2), spoj(rl, Oz, I), 
	fzdsz(Tfz, K, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']), 
          rozne(K, nk) },
	przec,
	spoj(rp, Oz, ni),
	fzdsz(Tfz, K1, A1, C1, T1, Neg1, ni, _),
        { rowne(K1, [K,'bp']) }.

fzd(Tfz, K, A, C, T, Neg0, I, @ @ @0)
--> s(zd3), fzdsz(Tfz, K, A, C, T, Neg0, I, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']) },
	przec,
	spoj(rc, Oz, ni),
	fzdsz(Tfz, K1, A1, C1, T1, Neg1, ni, _),
	{ rozne(K1, nk), 
          rowne(K1, [K,'bp'])}.

fzd(Tfz, bp, A, C, T, Neg0, I, @ @ @0)
--> s(zd4), spoj(rl, Oz, I), 
	fzdsz(Tfz, bp, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['dopóki','zanim'])},
	przec,
	spoj(rp, Oz, ni),
	fzdsz(Tfz, bp, A1, C, T, Neg1, ni, _).

fzd(Tfz, K, A, C, T, Neg0, I, @ @ @0)
--> s(zd5), fzdsz(Tfz, K, A, C, T, Neg0, I, _),
	{ rowne(Tfz, ['dopóki','zanim']) },
	przec,
	spoj(rc, Oz, ni),
        { rowne(Oz, ['alei','nie']) },
	fzdsz(Tfz, bp, A1, C, T, Neg1, ni, _).

fzd(Tfz, bp, A, C, T, Neg0, I, @ @ @0)
--> s(zd6), spoj(rl, Oz, I), 
	fzdsz(Tfz, bp, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['aż2','gdy'])},
	przec,
	spoj(rp, Oz, ni),
	fzdsz(Tfz, bp, A1, C, T1, Neg1, ni, _).

fzd(Tfz, K, A, C, T, Neg0, I, @ @ @0)
--> s(zd7), fzdsz(Tfz, K, A, C, T, Neg0, I, _),
	{ rowne(Tfz, ['aż2','gdy']) }, 
	przec,
	spoj(rc, Oz, ni), 
        { rowne(Oz, ['alei','nie']) },
	fzdsz(Tfz, bp, A1, C, T1, Neg1, ni, _).

fzd(Tfz, bp, A, C, T, Neg0, I, @ @ @0)
--> s(zd8), spoj(rl, Oz, ni), 
	fzdsz(Tfz, bp, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który'])},
	przec,
	spoj(rp, Oz, ni),
	fzdsz(Tfz, bp, A1, C1, T1, Neg1, I, _).

fzd(Tfz, K, A, C, T, Neg0, I, @ @ @0)
--> s(zd9), fzdsz(Tfz, K, A, C, T, Neg0, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który']) }, 
	przec,
	spoj(rc, Oz, ni),
        { rowne(Oz, ['alei','nie'])},
	fzdsz(Tfz, bp, A1, C1, T1, Neg1, I, _).

fzdsz(Tfz, K, A, C, T, Neg, I, X)
--> s(zd10), fzdj(Tfz, K, A, C, T, Neg, I, Oz, @X),
	{ rozne(Oz, lub)}.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd11), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']), 
          rozne(K, ['nk','bp']) },
	przec,
	fzdj(Tfz, K, A1, C1, T1, Neg1, ni, Oz, _),
        { rozne(Oz, ['ani','przec']) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd12), fzdj(Tfz, K, A, C, T, Neg, I, przec, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']), 
          rozne(K, ['nk','bp']) },
	przec,
	spoj(szk, Oz, ni),
        { rozne(Oz, ani) },
	fzdkor(Tfz, K, A1, C1, T1, Neg1, ni, _).

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd13), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']) }, 
	fzdj(Tfz, bp, A1, C1, T1, Neg1, ni, Oz, _),
        { rozne(Oz, ['ani','przec']) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd14), fzdj(Tfz, K, A, C, T, Neg, I, przec, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']) },
	spoj(szk, Oz, ni),
        { rozne(Oz, ani) },
	fzdkor(Tfz, bp, A1, C1, T1, Neg1, ni, _).

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd15), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['dopóki','zanim']) }, 
	fzdj(Tfz, bp, A1, C, T, Neg1, ni, Oz, _),
        { rozne(Oz, ['ani','przec']) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd16), fzdj(Tfz, K, A, C, T, Neg, I, przec, _),
	{ rowne(Tfz, ['dopóki','zanim']) },
	fzdkor(Tfz, bp, A1, C1, T1, Neg1, I, _),
        { rozne(Oz, ani) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd17), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż2','gdy']) },
	fzdj(Tfz, bp, A1, C, T1, Neg1, ni, Oz, _),
        { rozne(Oz, ['ani','przec']) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd18), fzdj(Tfz, K, A, C, T, Neg, I, przec, _),
	{ rowne(Tfz, ['aż2','gdy']) },
	fzdkor(Tfz, bp, A1, C1, T1, Neg1, I, _),
        { rozne(Oz, ani) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd19), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który']) },
	fzdj(Tfz, bp, A1, C1, T1, Neg1, I, Oz, _),
        { rozne(Oz, ['ani','przec']) }.

fzdsz(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd20), fzdj(Tfz, K, A, C, T, Neg, I, przec, _),
	{ rowne(Tfz, ['co','jaki','kto','który']) }, 
	fzdkor(Tfz, bp, A1, C1, T1, Neg1, I, _),
        { rozne(Oz, ani) }.

fzdj(Tfz, K, A, C, T, Neg, I, przec, X)
--> s(zd21), fzdkor(Tfz, K, A, C, T, Neg, I, @X).

fzdj(Tfz, K, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd22), spoj(sz, Oz, I), 
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, K, A, C, T, Neg, ni,_),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']), 
        rozne(K, nk) },
	przec,
	fzdkor(Tfz, K1, A1, C1, T1, Neg1, ni, _),
        { rowne(K1, [K,'bp']) }.

fzdj(Tfz, K, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd23), spoj(sz, Oz, I),
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, K, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']), 
          rozne(K, nk) },
	przec,
	fzdj(Tfz, K1, A1, C1, T1, Neg1, ni, Oz, _),
        { rowne(K1, [K,'bp']) }.

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd24), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']) }, 
	spoj(sz, przec, ni),
	fzdkor(Tfz, K1, A1, C1, T1, Neg1, ni, _),
        { rowne(K1, [K,'bp']) }.

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd25), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż1','chociaż','czy','jak','jeśli',
	              'podczas','ponieważ','pz','że']) },
	spoj(sz, przec, ni),
	fzdj(Tfz, K1, A1, C1, T1, Neg1, ni, przec, _),
        { rowne(K1, [K,'bp']) }.

fzdj(Tfz, bp, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd26), spoj(sz, Oz, I),
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, bp, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['dopóki','zanim']) },
	przec,
	spoj(sz, Oz, ni),
	fzdkor(Tfz, bp, A1, C, T, Neg1, ni, _).

fzdj(Tfz, bp, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd27), spoj(sz, Oz, I),
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, bp, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['dopóki','zanim']) },
	przec,
	fzdj(Tfz, bp, A1, C, T, Neg1, ni, Oz, _).

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd28), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['dopóki','zanim'])}, 
	spoj(sz, przec, ni),
	fzdkor(Tfz, bp, A1, C, T, Neg1, ni, _).

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd29), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['dopóki','zanim'])},
	spoj(sz, przec, ni),
	fzdj(Tfz, bp, A1, C, T, Neg1, ni, przec, _).

fzdj(Tfz, bp, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd30), spoj(sz, Oz, I),
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, bp, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['aż2','gdy']) },
	przec,
	spoj(sz, Oz, ni),
	fzdkor(Tfz, bp, A1, C, T1, Neg1, ni, _).

fzdj(Tfz, bp, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd31), spoj(sz, Oz, I),
        { rozne(Oz, ['ani','przec'])},
	fzdkor(Tfz, bp, A, C, T, Neg, ni, _),
	{ rowne(Tfz, ['aż2','gdy']) },
	przec,
	fzdj(Tfz, bp, A1, C, T1, Neg1, ni, Oz, _).

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd32), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż2','gdy']) }, 
	spoj(sz, przec, ni),
	fzdkor(Tfz, bp, A1, C, T1, Neg1, ni, _).

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd33), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['aż2','gdy']) }, 
	spoj(sz, przec, ni),
	fzdj(Tfz, bp, A1, C, T1, Neg1, ni, przec, _).

fzdj(Tfz, bp, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd34), spoj(sz, Oz, ni),
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, bp, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który']) },
	przec,
	spoj(sz, Oz, ni),
	fzdkor(Tfz, bp, A1, C1, T1, Neg1, I, _).

fzdj(Tfz, bp, A, C, T, Neg, I, Oz, @ @ @0)
--> s(zd35), spoj(sz, Oz, I),
        { rozne(Oz, ['ani','przec']) },
	fzdkor(Tfz, bp, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który']) },
	przec,
	fzdj(Tfz, bp, A1, C1, T1, Neg1, I, Oz, _).

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd36), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który']) }, 
	spoj(sz, przec, ni),
	fzdkor(Tfz, bp, A1, C1, T1, Neg1, I, _).

fzdj(Tfz, K, A, C, T, Neg, I, przec, @ @ @0)
--> s(zd37), fzdkor(Tfz, K, A, C, T, Neg, I, _),
	{ rowne(Tfz, ['co','jaki','kto','który'])},
	spoj(sz, przec, ni),
	fzdj(Tfz, bp, A1, C1, T1, Neg1, I, przec, _).

fzdkor(Tfz, K, A, C, T, Neg, I, @ @ @0)
--> s(zd38), kor(K, I), 
	przec,
	fzde(Tfz, A, C, T, Neg, ni).

fzdkor(Tfz, nk, A, C, T, Neg, I, @ @ @0)
--> s(zd39), przecsp, 
	fzde(Tfz, A, C, T, Neg, I).

fzdkor(Tfz, bp, A, C, T, Neg, I, @ @ @0)
--> s(zd40), fzde(Tfz, A, C, T, Neg, I).

fzdkor(Tfz, K, A, C, T, Neg, I, X)
--> s(zd41), fzd(Tfz, K, A, C, T, Neg, I, @X).

fzde(Tfz, A, C, T, Neg, I)
--> s(zd42), spoj(po, Tfz, I),
	{ rowne(Tfz, ['aż1','aż2','chociaż','czy','dopóki','gdy',
	              'jak','jeśli','podczas','ponieważ','zanim','że']) },
	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
	{ zrowne(Z, [Tfz], SwZ) }.

fzde(Tfz, A, C, T, Neg, I)
--> s(zd43), spoj(po, Tfz, ni),
	{ rowne(Tfz, ['choćby','gdyby','jakby','jakoby','żeby']) },
	zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), _),
	{ zrowne(Z, [Tfz], SwZ) }.

fzde(Tfz, A, C, T, Neg, I)
--> s(zd44), zr(Wf, A, C, T, Rl, O, Neg, I, z(Tfz,Z), _),
	{ zrowne(Z, ['co','jaki','kto','który','pz'], NZ),
	rowne(Tfz, NZ) }.

fzde(mie1, A, C, T, Neg, I)
--> s(zd45), spoj(po, 'że', I), 
	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
	{ zrowne( Z, ['że'], SwZ ) }.

fzde(mie1, A, C, T, Neg, I)
--> s(zd46), zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), _),
	{ zrowne( Z, [pz], SwZ ) }.

fzde(mie2, A, C, T, Neg, I)
--> s(zd47), spoj(po, 'że', I), 
	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
	{ zrowne( Z, ['że'], SwZ ) }.

fzde(mie2, A, C, T, Neg, I)
--> s(zd48), spoj(po, 'żeby', ni), 
	zr(Wf, A, C, T, Rl, O, Neg, I, z(SwZ,Z), _),
	{ zrowne( Z, ['żeby'], SwZ ) }.

fzde(mie3, A, C, T, Neg, I)
--> s(zd49), spoj(po, gdy, I), 
	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
	{ zrowne( Z, [gdy], SwZ ) }.

fzde(mie3, A, C, T, Neg, I)
--> s(zd50), spoj(po, jak, I), 
	zr(Wf, A, C, T, Rl, O, Neg, ni, z(SwZ,Z), _),
	{ zrowne( Z, [jak], SwZ ) }.


% 5.16. Jednostki funkcyjne

spoj(Tsp, Oz, I)       --> s(spoj1), spoj1(Tsp, Oz), 
                          spoj(Tsp1, I, ni),
                          { rowne(I, ['bowiem','natomiast','więc','zaś']),
			    rowne(Tsp1, [pi,ri]) }.

spoj(Tsp, Oz, ni)      --> s(spoj2), spoj1(Tsp, Oz).

spoj1(rl, F)           --> s(spoj3), spojnik(F), 
                          { rowne(F, ['nie','tak','zarówno'])}.

spoj1(rl, nietylko)    --> s(spoj4), partykula(nie), 
                          partykula(tylko).

spoj1(rp, nie)         --> s(spoj5), spojnik(F), 
                          { rowne(F, ['ale','lecz'])}.

spoj1(rp, nietylko)    --> s(spoj6), spojnik(F), 
                          partykula(F1),
                          { rowne(F, ['ale','lecz']), 
                           rowne(F1, ['i','również','także'])}.

spoj1(rp, F)           --> s(spoj7), spojnik(jak), 
                          { rowne(F, ['tak','zarówno'])}.
spoj1(rp, F)          
                        --> s(spoj8), spojnik(jak), 
                          partykula(F1),
                          { rowne(F, ['tak','zarówno']), 
                           rowne(F1, ['i','też'])}.

spoj1(rc, a)           --> s(spoj9), spojnik(F), 
                          { rowne(F, ['a','ale','lecz'])}.

spoj1(rc, alei)        --> s(spoj10), spojnik(F), 
                          partykula(F1),
                          { rowne(F, ['a','ale','lecz']), 
                           rowne(F1, ['i','nawet','również','także'])}.

spoj1(rc, natomiast)   --> s(spoj11), spojnik(natomiast).

spoj1(rc, nie)         --> s(spoj12), spojnik(F), 
                          partykula(nie),
                          { rowne(F, ['a','ale'])}.
spoj1(rc, nie)  
                        --> s(spoj13), partykula(nie), 
                          spojnik('zaś').

spoj1(ri, F)           --> s(spoj14), spojnik(F), 
                          { rowne(F, ['natomiast','zaś'])}.

spoj1(Tsp, F)          --> s(spoj15), spojnik(F), 
                          { rowne(Tsp, ['sz','szk']), 
                           rowne(F, ['albo','bądź','i','lub'])}.

spoj1(Tsp, ani)        --> s(spoj16), spojnik(F), 
                          { rowne(Tsp, ['sz','szk']), 
                           rowne(F, ['ani','ni'])}.

spoj1(Tsp, przec)      --> s(spoj17), przec,
	                   { rowne(Tsp, ['sz','szk']) }.

spoj1(szk, F)          --> s(spoj18), spojnik(F), 
                          partykula(F1),
                          { rowne(F, ['albo','bądź','lub']), 
                           rowne(F1, ['nawet','też'])}.

spoj1(szk, ani)        --> s(spoj19), spojnik(F), 
                          partykula(F1),
                          { rowne(F, ['ani','ni']), 
                           rowne(F1, ['nawet','też'])}.

spoj1(szk, i)          --> s(spoj20), spojnik(i), 
                          partykula(F1),
                          { rowne(F1, ['nawet','także'])}.
spoj1(szk, i)         
                        --> s(spoj21), spojnik(oraz).

spoj1(Tsp, 'dopóki')     --> s(spoj22), spojnik(F), 
                          { rowne(Tsp, ['pl','pp']), 
                           rowne(F, ['dopóty','póty'])}.

spoj1(Tsp, gdy)        --> s(spoj23), spojnik(F), 
                          { rowne(Tsp, ['pl','pp']), 
                           rowne(F, ['wówczas','wtedy'])}.

spoj1(pp, Oz)          --> s(spoj24), spojnik(jednak), 
                          { rowne(Oz, ['chociaż','choćby'])}.
spoj1(pp, Oz)         
                        --> s(spoj25), spojnik(to), 
                          spojnik(jednak),
                          { rowne(Oz, ['chociaż','choćby'])}.
spoj1(pp, Oz)         
                        --> s(spoj26), spojnik(to), 
                          { rowne(Oz, ['chociaż','choćby','gdyby','jeśli'])}.

spoj1(pc, bo)     --> s(spoj27), spojnik(F), 
                          { rowne(F, ['albowiem','bo','gdyż'])}.

spoj1(Tsp, 'więc')       --> s(spoj28), spojnik(F), 
                          { rowne(Tsp, ['pc','pi']), 
                           rowne(F, ['przeto','więc','zatem'])}.

spoj1(pc, 'więc')        --> s(spoj29), spojnik('toteż').

spoj1(pi, bowiem)      --> s(spoj30), spojnik(bowiem).

spoj1(po, Oz)          --> s(spoj31), spojnik('aż'), 
                          { rowne(Oz, ['aż1','aż2'])}.
spoj1(po, Oz)         
                        --> s(spoj32), spojnik(Oz), 
                          { rowne(Oz, ['czy','jak','jakby','jakoby'])}.

spoj1(po, 'chociaż')     --> s(spoj33), spojnik(F), 
                          { rowne(F, ['chociaż','choć'])}.
spoj1(po, 'chociaż')    
                        --> s(spoj34), przyimek(mimo, dop), 
                          spojnik('że').

spoj1(po, 'choćby')      --> s(spoj35), spojnik(F), 
                          { rowne(F, ['chociażby','choćby'])}.

spoj1(po, 'dopóki')      --> s(spoj36), spojnik(F), 
                          { rowne(F, ['dopóki','póki'])}.

spoj1(po, gdy)         --> s(spoj37), spojnik(F), 
                          { rowne(F, ['gdy','kiedy'])}.

spoj1(po, gdyby)       --> s(spoj38), spojnik(F), 
                          { rowne(F, ['gdyby','jeśliby','jeżeliby'])}.

spoj1(po, 'jeśli')       --> s(spoj39), spojnik(F), 
                          { rowne(F, ['jeśli','jeżeli'])}.

spoj1(po, podczas)     --> s(spoj40), przyimek(podczas, dop), 
                          spojnik(gdy).

spoj1(po, 'ponieważ')    --> s(spoj41), spojnik(F), 
                          { rowne(F, ['ponieważ','skoro','że'])}.

spoj1(po, zanim)       --> s(spoj42), spojnik(F), 
                          { rowne(F, ['nim','zanim'])}.

spoj1(po, 'że')          --> s(spoj43), spojnik(F), 
                          { rowne(F, ['iż','że'])}.

spoj1(po, 'żeby')        --> s(spoj44), spojnik(F), 
                          { rowne(F, ['aby','ażeby','by','iżby','żeby'])}.

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

%%%%%%%%%%%%%%%%%%%% 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)].
spojnik(F)             --> s(jel4a), [morf(_,F,comp)].

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: subj 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) }.