concrete NamesGer of Names = CatGer ** open ResGer, Prelude, (P=ParadigmsGer) in { lin GivenName gn = { s = \\_,c => gn.s ! c ; a = agrgP3 (sex2gender gn.g) Sg ; w = WLight ; rc, ext = [] } ; lin MaleSurname sn = { s = \\_,c => sn.s ! Male ! c ; a = agrgP3 Masc Sg ; w = WLight ; rc, ext = [] } ; lin FemaleSurname sn = { s = \\_,c => sn.s ! Female ! c ; a = agrgP3 Fem Sg ; w = WLight ; rc, ext = [] } ; lin PlSurname sn = { s = \\_,c => sn.s ! Male ! c ; a = agrgP3 Masc Pl ; w = WLight ; rc, ext = [] } ; lin FullName gn sn = { s = \\_,c => gn.s ! Nom ++ sn.s ! gn.g ! c ; a = agrgP3 (sex2gender gn.g) Sg ; w = WLight ; rc, ext = [] } ; -- UseLN : LN -> NP ; lin UseLN ln = { s = \\b,c => case ln.hasArt of { True => case b of { True => [] ; -- defart dropped False => artDef ! (gennum ln.g ln.n) ! c } ++ ln.s ! (adjfCase Weak c) ! c ; False => ln.s ! Strong ! c } ; a = agrgP3 ln.g ln.n ; w = WLight ; rc, ext = [] } ; -- PlainLN : LN -> NP ; lin PlainLN ln = { s = \\_,c => ln.s ! Strong ! c ; a = agrgP3 ln.g ln.n ; w = WLight ; rc, ext = [] } ; -- InLN : LN -> Adv ; lin InLN ln = { s = appPrepNP P.inDat_Prep { s = \\b,c => case ln.hasArt of { True => case b of { True => [] ; -- defart dropped False => artDef ! (gennum ln.g ln.n) ! c } ++ ln.s ! (adjfCase Weak c) ! c ; False => ln.s ! Strong ! c } ; a = agrgP3 ln.g ln.n ; w = WLight ; rc, ext = [] } } ; -- AdjLN : AP -> LN -> LN ; lin AdjLN ap ln = ln ** { s = \\a,c => preOrPost ap.isPre (ap.c.p1 ++ ap.c.p2 ++ ap.s ! agrAdj ln.g a ln.n c ++ ap.ext) (ln.s ! a ! c) ; } ; }