% Deklarativní popis češtiny I
% Gramatika 2
% Teorie

:- tree_extensions.
:- multifile if/2.

% Lexicon

pepa ~~> (word,
          cat:(noun,
               case:nom,
               agr:(num:sg,
                    gend:ma))).
kozu ~~> (word,
          cat:(noun,
               case:acc,
               agr:(num:sg,
                    gend:f))).
máňa ~~> (word,
          cat:(noun,
               case:nom,
               agr:(num:sg,
                    gend:f))).
kluci ~~> (word,
          cat:(noun,
               case:nom,
               agr:(num:pl,
                    gend:ma))).
děti  ~~> (word,
          cat:(noun,
               case:nom,
               agr:(num:pl,
                    gend:f))).
pase ~~> (word,
          cat:(verb,
               agr:num:sg)).
pasou ~~> (word,
          cat:(verb,
               agr:num:pl)).
pásl ~~> (word,
          cat:(verb,
               agr:(num:sg,
                    gend:m))).
pásla ~~> (word,
          cat:(verb,
               agr:((num:sg,
                     gend:f);
                    (num:pl,
                     gend:n)))).
pásli ~~> (word,
          cat:(verb,
               agr:(num:pl,
                    gend:ma))).
pásly ~~> (word,
          cat:(verb,
               agr:(num:pl,
                    gend:(mi;f)))).

% Phrase Structure Rules

s ##
    (phrase,
     cat:(sentence,
          agr:Agr),
     head_dtr:Head,
     nonh_dtr:Subj)
===>
    cat> (Subj,
          cat:(noun,
               case:nom,
               agr:Agr)),
    cat> (Head,
          cat:((verb_phrase;verb_intrans),
               agr:Agr)).

vp ##
    (phrase,
     cat:(verb_phrase,
          agr:Agr),
     head_dtr:Head,
     nonh_dtr:Obj)
===>
    cat> (Head,
          cat:(verb_trans,
               agr:Agr)),
    cat> (Obj,
          cat:(noun,
               case:acc)).

% Test sentences

t(1, "máňa pase", phrase, 1, 'Gramatika2: shoda sg').
t(2, "pepa pase kozu", phrase, 1, 'Gramatika2: shoda sg').
t(3, "máňa pasou", phrase, 0, 'Gramatika2: neshoda sg/pl').
t(4, "máňa pásla", phrase, 1, 'Gramatika2: shoda sg f').
t(5, "máňa pásl", phrase, 0, 'Gramatika2: neshoda sg f/m').
t(6, "pepa pásl", phrase, 1, 'Gramatika2: shoda sg ma').
t(7, "pepa pásla", phrase, 0, 'Gramatika2: neshoda sg ma/f').
t(8, "kluci pásli", phrase, 1, 'Gramatika2: shoda pl ma').
t(9, "kluci pásly", phrase, 0, 'Gramatika2: neshoda pl ma/mi').
t(10, "kluci pásl", phrase, 0, 'Gramatika2: neshoda pl/sg ma').
t(11, "děti pásly", phrase, 1, 'Gramatika2: shoda pl f').
t(12, "děti pásli", phrase, 0, 'Gramatika2: neshoda pl f/ma'). 