-- For regression tests using gf> eh regression-test.txt, HL 6/2019
-- to test the ordering of objects and negation in simple clauses

-- examples from ResGer.gf, 27/5/2012

ich bin nicht alt                     -- accept
ich bin nicht hier                    -- accept
ich kenne dich nicht                  -- accept
ich kenne deine Frau nicht            -- accept
ich bin nicht ein Kind                -- dubious
ich bin kein Kind                     -- accept, no_Quant
ich schlafe nicht hier                -- accept
ich sage nicht , dass es regnet ,     -- accept
ich male es nicht blau                -- accept
ich schlafe nicht immer               -- accept
ich kenne dich nicht immer            -- accept
ich kann nicht schlafen               -- accept
es wird nicht besser                  -- accept

-- simple sentences with V2 and (negated) indefinite objects, (-)iNP

wir trinken Bier                      -- accept   
wir trinken Bier nicht                -- accept   (v2fin < MassNP < neg)
wir trinken es nicht                  -- accept   (v2fin < Pron < neg)
wir trinken kein Bier                 -- accept   (v2fin < -MassNP)      via no_Quant
wir trinken nicht Bier                -- reject   (v2fin < neg < MassNP) not_Predet
wir trinken nicht es                  -- reject  *(v2fin < neg < Pron)   not_Predet

wir trinken warmes Bier nicht         -- accept   (v2fin < MassNP < neg)
wir trinken nicht warmes Bier         -- reject  *(v2fin < neg < MassNP)
wir trinken kein warmes Bier          -- accept   (v2fin < -MassNP)
wir trinken kein warmes Bier nicht    -- reject   (v2fin < -MassNP < neg; Bavarian: recognize)

ich sehe den Mann nicht               -- accept   (v2fin < dNP < neg)
ich sehe einen Mann nicht             -- dubious  (v2fin < iNP < neg), einen Mann nicht sehen
ich sehe keinen Mann                  -- accept   (v2fin < -iNP) no_Quant
ich sehe ihn nicht                    -- accept   (v2fin < Pron < neg)
ich sehe nicht ihn                    -- reject  *(v2fin < neg < Pron); ok with emphasis?
ich sehe jemanden nicht               -- accept, dubious   (v2fin < iPron < neg)
ich sehe nicht jemanden               -- reject  *(v2fin < neg < iPron)
ich sehe niemanden                    -- accept   (v2fin < -iPron)

ich lese ein schlechtes Buch nicht    -- accept   (v2fin < iNP < neg), sentence negation
ich lese kein schlechtes Buch         -- accept   (v2fin < -iNP)     

ich sehe Gründe                       -- accept   (v2fin < iNP)
ich sehe Gründe nicht                 -- dubious, accept  (v2fin < iNP < neg)
ich sehe nicht Gründe                 -- dubious, accept  not_Predet
ich sehe keine Gründe                 -- accept   (v2fin < -iNP)

ich sehe zwei Gründe                  -- accept   (v2fin < dNP)
ich sehe zwei Gründe nicht            -- accept   (v2fin < dNP < neg)
ich sehe keine zwei Gründe            -- accept   (v2fin < -dNP)

ich sehe schlechte Gründe             -- accept
ich sehe schlechte Gründe nicht       -- accept   (v2fin < iNP < neg)
ich sehe keine schlechten Gründe      -- accept   (v2fin < -iNP)
ich sehe keine schlechte Gründe       -- reject AdjDekl

ich sehe viele schlechte Gründe       -- accept   (v2fin < qNP)
ich sehe viele schlechten Gründe      -- reject AdjDekl
ich sehe viele schlechte Gründe nicht -- accept   (v2fin < qNP < neg)
ich sehe nicht viele schlechte Gründe -- accept   (v2fin < neg < qNP) no_Predet
ich sehe wenige schlechte Gründe      -- accept
ich sehe wenige schlechten Gründe     -- reject AdjDekl

-- with modal verb:

wir wollen einen Mann nicht sehen     -- dubious
wir wollen nicht einen Mann sehen     -- dubious
wir wollen jemanden sehen             -- accept
wir wollen nicht jemanden sehen       -- dubious, reject
wir wollen jemanden nicht sehen       -- dubious, accept (niemanden sehen)
     
-- v2 with prep              (default order, Main: v2fin < neg < prep)

wir warten nicht auf die Kinder           -- accept  (v2 < neg < prep) 
wir warten nicht auf dich                 -- accept
wir werden nicht auf euch warten          -- accept
wir haben nicht auf alle Kinder gewartet  -- accept
wir haben nicht auf euch gewartet         -- accept
weil wir nicht auf euch warten wollen     -- accept
wir warten nicht auf viele Kinder         -- accept  (prep ++ quantified np)?

wir warten auf viele Kinder nicht         -- dubious (v2fin < prep + qNP < neg)
wir haben auf viele Kinder nicht gewartet -- dubious
wir haben auf alle Kinder nicht gewartet  -- reject  *(v2fin < prep < neg)

wir warten auf die Kinder nicht           -- accept dubious
wir warten auf dich nicht                 -- accept dubious
wir haben auf euch nicht gewartet         -- accept dubious
weil wir auf euch nicht warten wollen     -- accept dubious

-- simple sentences with accdatV3 and definite/indefinite nonPron objects

ich schicke der Frau das Buch         -- accept  (v3fin < dNP.dat < dNP.acc) 
ich schicke der Frau ein Buch         -- accept  (v3fin < dNP.dat < iNP.acc) 
ich schicke einer Frau das Buch       -- accept  (v3fin < iNP.dat < dNP.acc) 
ich schicke einer Frau ein Buch       -- accept  (v3fin < iNP.dat < iNP.acc) 

ich schicke das Buch der Frau         -- dubious (v3fin < dNP.acc < dNP.dat) 
ich schicke ein Buch der Frau         -- reject *(v3fin < iNP.acc < dNP.dat) 
ich schicke das Buch einer Frau       -- dubious (v3fin < dNP.acc < iNP.dat) 
ich schicke ein Buch einer Frau       -- reject, dubious (v3fin < iNP.acc < iNP.dat) 

-- simple sentences with accdatV3, negation and in/definite objects and Prons:

-- (der Frau | ihr) (das | ein) Buch nicht schicken (v3fin < NP.dat < NP.acc < neg Vinf)

ich schicke der Frau das Buch nicht   -- accept  (dNP.dat < dNP.acc < neg)
ich schicke einer Frau das Buch nicht -- accept  (v3fin < iNP.dat < dNP.acc < neg)
ich schicke ihr das Buch nicht        -- accept  (v3fin < Pron.dat < dNP.acc < neg)
ich schicke es der Frau nicht         -- accept  (v3fin < Pron.acc < dNP.dat < neg)  
ich schicke es einer Frau nicht       -- accept  (v3fin < Pron.acc < iNP.dat < neg)  
ich schicke es ihr nicht              -- accept  (v3fin < Pron.acc < Pron.dat < neg)  
ich schicke ihr es nicht              -- reject *(v3fin < Pron.dat < Pron.acc < neg)
ich schicke es nicht ihr              -- reject *(v3fin < Pron.acc < neg < Pron.dat)

ich schicke keiner Frau das Buch      -- accept  (v3fin < -iNP.dat < dNP.acc)
ich schicke das Buch keiner Frau      -- accept  (v3fin < dNP.acc < -iNP.dat)
ich schicke das Buch einer Frau nicht -- reject ?(v3fin < dNP.acc < iNP < neg)

ich schicke der Frau kein Buch        -- accept  (v3fin < dNP.dat < -iNP.acc) 
ich schicke ihr kein Buch             -- accept  (v3fin < Pron.dat < -iNP.acc) 
ich schicke keiner Frau ein Buch      -- accept  (v3fin < -iNP.dat < iNP.acc)
ich schicke es keiner Frau            -- accept  (v3fin < Pron.acc < -iNP.dat)
ich schicke es einer Frau nicht       -- accept  (v3fin < Pron.acc < iNP.dat < neg)

ich schicke ihr das Buch nicht        -- accept:  Pron.dat < dNP.acc < neg

-- using Slash2V3, Slash3V3:

-- provided that c2=dir-object, c3=indir-object in "give_V3 sb. sth."
-- geben = v2{c2=acc,c3=dat}) == give = v2{c2=noP,c3=noP} !!

der Apfel , den das Kind der Frau gibt ,          -- accept
der Apfel , den das Kind ihr gibt ,               -- accept
der Apfel , den ihr das Kind gibt ,               -- accept
der Apfel , den es ihr gibt ,                     -- accept
der Apfel , den ihr es gibt ,                     -- reject, Pron-order

die Frau , der das Kind den Apfel nicht gibt ,    -- accept
die Frau , der es den Apfel nicht gibt ,          -- accept
die Frau , der das Kind ihn nicht gibt ,          -- accept
die Frau , der ihn das Kind nicht gibt ,          -- accept
die Frau , der die Kinder den Apfel nicht geben , -- accept
die Frau , der die Kinder ihn nicht geben ,       -- accept ?
die Frau , der sie ihn nicht geben ,              -- accept
die Frau , der ihn die Kinder nicht geben ,       -- accept ?

die Frau , der es ihn gibt ,                      -- accept
die Frau , der er ihn gibt ,                      -- accept
die Frau , welcher es ihn gibt ,                  -- accept
die Frau , welcher er ihn gibt ,                  -- accept

-- using QuestSlash and Slash3V3

wem gibt das Kind den Apfel nicht                 -- accept
wem gibt ihn das Kind nicht                       -- accept
wem gibt das Kind ihn nicht                       -- reject, ?
wem gibt es den Apfel nicht                       -- accept
wem gibt es ihn nicht                             -- accept
wem gibt es nicht den Apfel                       -- accept , no_Quant

wen gibt es der Frau nicht                        -- accept
wen gibt es ihr Frau nicht                        -- accept

-- with dirV3 v gen = mkV3 v acc gen

ich klage die Männer des Biers an  -- accept  (v3fin < dNP.acc < dNP.gen)
ich klage ihn des Biers an         -- accept
ich klage ihn einiger Biere an     -- accept
ich klage des Biers ihn an         -- reject  (v3fin < NP.gen < Pron.acc)
ich klage einiger Biere ihn an     -- reject  (v3fin < NP.gen < Pron.acc)

ich klage die Männer des Biers nicht an  -- accept  (v3fin < dNP.acc < dNP.gen < neg )
ich klage die Männer nicht des Biers an  -- accept  (v3fin < dNP.acc < neg < dNP.gen) not_Predet

-- with mkV3 v acc acc

wir lehren ihn die Musik              -- accept  (pron.acc(indir) < np.acc(dir))
wir lehrten den Studenten den Grund   -- accept  (np.acc(indir) < np.acc(dir))
wir lehrten den Grund den Studenten   -- reject  (np.acc(dir) < np.acc(indir))
wir lehrten ihn den Grund             -- accept
wir lehrten ihn die Studenten         -- reject 
wir lehrten ihn sie                   -- dubious (pron.acc(indir) < pron.acc(dir))
wir lehrten sie ihn                   -- dubious (pron.acc(dir) < pron.acc(indir)a)

-- with dirV3 v prep:           (Main default order: vfin < acc < neg < prep < vinf)

wir erinnern den Jungen nicht an den Regen -- accept
wir erinnern den Jungen nicht an ihn       -- accept (daran)
wir erinnern ihn nicht an ihn              -- accept
wir haben den Jungen nicht an ihn erinnert -- accept

wir danken der Kuh für den Käse            -- accept
wir danken der Kuh nicht für den Käse      -- accept dubious
wir danken der Kuh nicht für ihn           -- accept  (dafür nicht ?)
wir danken ihr nicht für den Käse          -- accept
wir danken ihr nicht für ihn               -- accept
wir danken ihr nicht für ihn               -- accept

-- with mkV3 v prep prep:  (implemented Main order: vfin < neg < prep < prep)
--                          sometimes better:       vfin < prep < neg < prep)

wir reden mit der Frau über den Mann       -- accept (Slash2V3)
wir reden mit der Frau über den Mann nicht -- accept (Slash2V3)
wir reden über den Mann mit der Frau       -- accept (Slash3V3)
wir reden über den Mann mit der Frau nicht -- accept (Slash3V3)

wir reden mit ihr über ihn nicht           -- accept
wir reden nicht mit ihr über ihn           -- accept (not recognized)


-- Reflexive verbs, to test Pron.acc < refl < Pron.dat|gen, nonPronNP:

-- mkClause + PNeg gives (Main) "subj < vfin < refl < objs < neg < vinf", 
-- but negation seems to come before prepositional objects.

-- rV: refl.acc

ihr ändert euch nicht                -- accept  (refl.acc < neg)
er wird sich nicht anstrengen        -- accept 
er hat sich nicht angestrengt        -- accept
ihr ändert nicht euch                -- reject  (neg < refl.acc)
er wird sich anstrengen nicht        -- reject
er hat nicht sich angestrengt        -- reject

-- rV2: refl.acc + dat

du ergibst dich den Feinden nicht    -- accept  (refl.acc < np.dat < neg)
du ergibst dich nicht den Feinden    -- accept  (refl.acc < neg, no_Predet)
du ergibst dich mir nicht            -- accept  (refl.acc < pron.dat < neg)

-- rV2: refl.acc + gen

wir bedienen uns des Stockes         -- accept
wir bedienen uns seiner              -- accept
wir bedienen uns des Stockes nicht   -- accept  (refl.acc < np.gen < neg)
wir bedienen uns seiner nicht        -- accept  (refl.acc < pron.gen < neg)

-- rV2: refl.acc + prep

ich stütze mich nicht auf den Stock  -- accept (refl.acc < neg < np.prep)
ich stütze mich auf den Stock nicht  -- reject (refl.acc < np.prep < neg)
ich stütze mich nicht auf ihn        -- accept (refl.acc < neg < pron.prep)
ich stütze mich auf ihn nicht        -- reject (refl.acc < pron.prep < neg)

-- rV3: refl.acc + prep + prep

ich entschuldige mich bei dir für die Frage           -- accept, Slash2V3
ich entschuldige mich bei dir für sie                 -- accept
ich entschuldige mich bei dir für die Frage nicht     -- accept
ich entschuldige mich bei dir nicht für die Frage     -- dubious (not recognized)
ich entschuldige mich nicht bei dir für die Frage     -- accept  (not recognized)

die Frage , für die ich mich bei ihr entschuldigte    -- accept, Slash2V3

ich entschuldige mich für die Frage bei dir            -- accept, Slash3V3
ich entschuldige mich für die Frage bei dir nicht      -- accept, Slash3V3
die Frau , bei der ich mich für ihn nicht entschuldige -- accept, Slash3V3
die Frau , bei der ich mich nicht für ihn entschuldige -- accept, Slash3V3 (not recognized)

er hat sich bei mir für den Stock nicht entschuldigt   -- accept
hast du dich bei ihm für den Stock nicht entschuldigt  -- accept (not recognized)
hast du dich nicht bei ihm für den Stock entschuldigt  -- accept Inv: vfin ++ subj ++ obj1 ++ neg ++ obj2
hast du dich bei ihm nicht für den Stock entschuldigt  -- dubious
hast du dich bei ihm für ihn entschuldigt              -- accept (refl.acc < prep1 < prep2), Slash2V3
hast du dich für ihn bei ihm entschuldigt              -- accept (refl.acc < prep2 < prep1), Slash3V3

-- rV2: refl.dat + acc

ich merke mir jeden Stock          -- accept
ich merke jeden Stock mir          -- reject  (np.acc < refl.dat)
ich merke ihn mir                  -- accept  (pron.acc < refl.dat)
ich merke mir jeden Stock nicht    -- accept  (refl.dat < np.acc < neg)
ich merke mir nicht jeden Stock    -- accept  (refl.dat < neg < np.acc), not_Predet
ich hatte mir den Stock gemerkt    -- accept  (refl.dat < np.acc)
ich hatte mir ihn gemerkt          -- reject  (refl.dat < pron.acc)
ich hatte ihn mir gemerkt          -- accept  (pron.acc < refl.dat)

-- rV3: refl.dat + acc + prep

wir leihen uns das Buch von dir       -- accept
wir leihen uns das Buch nicht von dir -- accept   (refl.dat < np.acc < neg < prep), Slash2V3,Slash3V3
wir leihen uns das Buch von dir nicht -- dubious ?(refl.dat < np.acc < prep < neg), Slash2V3,Slash3V3

das Buch , das wir uns nicht von dir liehen ,      -- accept  Slash3V3
das Buch , das wir uns von dir nicht liehen ,      -- dubious, Slash3V3
die Frau , von der wir uns das Buch nicht liehen , -- accept, Slash2V3
die Frau , von der wir uns kein Buch liehen ,      -- accept, Slash2V3
die Frau , von der wir es uns nicht liehen ,       -- accept  (prep < subj < pron.acc < refl.dat < neg < vfin)
die Frau , von der wir uns es nicht liehen ,       -- reject *(prep < subj < refl.dat < pron.acc < neg < vfin)

wir , die wir uns das Buch von dir liehen ,        -- accept (not recognized)
wir , die sich das Buch von dir liehen ,           -- dubious (recognized, Slash2V3, Slash3V3)
wir , die sich das Buch nicht von dir liehen ,     -- dubious (recognized, Slash2V3, Slash3V3)

-- dirV4 v prep prep (mieten_von_fuer_V4)

du mietest den Wagen von der Frau für den Mann        -- accept (Slash2V4,Slash3V4,ComplSlashSlash)
du mietest den Wagen für den Mann von der Frau        -- accept (Slash4V4, ComplSlashSlash)
du mietest den Wagen von der Frau für den Mann nicht  -- accept
du mietest den Wagen für den Mann von der Frau nicht  -- accept (Slash4V4, ComplSlashSlash)
du mietest den Wagen von der Frau für mich nicht      -- accept
du mietest den Wagen für mich von der Frau nicht      -- dubious
du mietest ihn von der Frau für mich                  -- accept
du mietest den Wagen von ihr für mich nicht           -- accept
du mietest ihn für mich von der Frau                  -- accept
du mietest ihn von ihr für mich                       -- accept

du mietest für mich von der Frau den Wagen        -- accept  (not recognized, order)
du mietest für mich von der Frau den Wagen nicht  -- accept  (not recognized, order)
du mietest für mich von ihr den Wagen             -- dubious (not recognized, order)

-- predicative A2: neg + A2 + obj   (via insertAdj; better: obj + neg + A2)

ich bin nicht verheiratet mit dieser Frau  -- accept (A2 < obj)
ich bin nicht verheiratet mit ihr          -- accept (A2 < obj)
ich bin nicht neugierig auf das Buch       -- accept
ich bin nicht neugierig auf es             -- accept

ich bin mit dieser Frau nicht verheiratet  -- dubious (using ComplSlashPrep)
ich bin mit ihr nicht verheiratet          -- dubious
ich bin auf das Buch nicht neugierig       -- dubious
ich bin auf es nicht neugierig             -- dubious (prep < A2)

ich bin nicht mit dieser Frau verheiratet  -- accept (not recognized, order)
ich bin nicht mit ihr verheiratet          -- accept (not recognized)
ich bin nicht auf ihn neugierig            -- reject

-- done

-- Passive of VPSlash and V3

sie gibt uns den Wagen                     -- accept

der Wagen wird uns gegeben                 -- accept, via PassVPSlash or Pass2V3
uns wird der Wagen gegeben                 -- accept, word order variant (not recognized)
wir bekommen den Wagen gegeben             -- accept, via Pass3V3

sie schickte uns den Wagen                 -- accept (Eng with prep)

der Wagen wurde uns geschickt              -- accept, via PassVPSlash
uns wurde der Wagen geschickt              -- accept, word order variant (not recognized)
wir bekamen den Wagen geschickt            -- accept, via Pass3V3

der Wagen würde uns geschickt werden       -- accept
der Wagen würde uns nicht geschickt werden -- accept
wir würden den Wagen geschickt bekommen    -- accept
wir würden den Wagen nicht geschickt bekommen -- accept
wir würden nicht den Wagen geschickt bekommen -- accept ?

der Wagen sei uns geschickt worden         -- accept
wir hätten den Wagen geschickt bekommen    -- accept

wir wollen den Wagen geschickt bekommen    -- accept
wir würden den Wagen geschickt bekommen wollen haben   -- accept

