concrete PhraseFin of Phrase = CatFin ** open ResFin, StemFin, (P = Prelude) in {

  lin
    PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;

    UttS s = s ;
    UttQS qs = {s = qs.s} ;
    UttImpSg  pol imp = {s = pol.s ++ imp.s ! pol.p ! Ag Sg P2} ;
    UttImpPl  pol imp = {s = pol.s ++ imp.s ! pol.p ! Ag Pl P2} ;
    UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! AgPol} ;

    UttIP ip = {s = ip.s ! NPCase Nom} ;
    UttIAdv iadv = iadv ;
    UttNP np = {s = np.s ! NPSep} ;
    UttVP vp = {s = infVP SCNom Pos (agrP3 Sg) vp Inf1} ;
    UttAdv adv = adv ;
    UttCN np = {s = np.s ! NCase Sg Nom} ;
    UttAP np = {s = np.s ! P.False ! NCase Sg Nom} ;
    UttCard n = {s = n.s ! Sg ! Nom} ;
    UttInterj i = i ;

    NoPConj = {s = []} ;
    PConjConj conj = {s = conj.s2} ;

    NoVoc = {s = []} ;
    VocNP np = {s = "," ++ np.s ! NPSep} ;

}
