@b:"test" (
	and(
		in(class[0], {subst, depr,ger}),
		// TODO: sprawdzenie czy słowo jest w słowniku
		setvar($s:ROW, base[0]),
		setvar($t:subst_flex, class[0]),
		and(
			// coord
			setvar($b:bCOLUMN_Coord, 
					or(
						//Przypadek1: B, ..., i A
						and(
							llook(-1,begin,$C,and(
								equal(class[$C],conj),
								inter(base[$C],["ani","albo","czy","i","lub","oraz"])
								)
							),
							//pierwszy Noun, czyli X po Conj lub jego brak
							llook($C-1,begin,$B,or(
								in(class[$B],{fin,praet,prep,inf,imps,bedzie,winien}),
								and(
									in(class[$B],{subst,depr,ger}),
									equal(cas[0],cas[$B])
								)
							)),
							in(class[$B],{subst,depr,ger}),
							//kontrola frazy szeregowej NP
							only($B+1,$C-1,$OA,or(
								in(class[$OA],{subst,ger,depr,conj,adj,pact,ppas,num,adv,qub,pcon,pant,ppron3,ppron12}),
								in(orth[$OA],",")
							)),
							//kontrola części NP po Conj
							only($C+1,-1,$OA,in(class[$OA],{adj,pact,ppas,num,adv,qub,pcon,pant})),
							setvar($s:sCOLUMN_Coord, base[$B])
							)
							//Przypadek1: A, ..., i B
							and(
								//tylko pierwszy Noun(gen) zaliczamy
								not(
									and(
										equal(cas[0],{gen}),
										in(flex[-1],{subst,depr,ger}),
										equal(cas[-1],{gen})
									)
								),
								rlook(1,end,$C,and(
										equal(flex[$C],{conj}),
										inter(base[$C],{"ani","albo","czy","i","lub","oraz"})
									)),
								//pierwszy Noun, czyli X po Conj lub jego brak
								rlook($+1C,end,$B,in(flex[$B],{subst,depr,ger,fin,praet,inf,imps,bedzie,winien,ppron3,ppron12})),
								in(flex[$B],{subst,depr,ger}),
								equal(cas[0],cas[$B]),
								equal(base[$B],{"^Zmienna"}),
								//kontrola frazy szeregowej NP
								only(1,$-1C,$OA,or(
											in(flex[$OA],{subst,ger,depr,conj,adj,pact,ppas,num,adv,qub,pcon,pant,ppron3,ppron12}),
											in(orth[$OA],",")
											)),
								 //kontrola części NP po Conj
								only($+1C,$-1B,$OA,in(flex[$OA],{adj,pact,ppas,num,adv,qub,pcon,pant})),
								setvar($s:sCOLUMN_Coord, base[$B])
							),

					)// or - coord
				) // end of coord

		),// end of all operators
		or(
			equal($b:bCOLUMN_Adj, True),
			equal($b:bCOLUMN_Coord, True)
			)
	) // end of all 
)



