--# -path=.:../abstract:../common:../prelude

concrete ConjunctionMon of Conjunction = CatMon ** open ResMon, Coordination, Prelude in {

 flags optimize=all_subs ;  coding=utf8 ;

lin
 ConjAdv, ConjAP, ConjIAdv = conjunctDistrSS ;
 ConjS conj s = conjunctDistrTable SType conj s ;
 ConjRS conj rs = conjunctDistrTable ComplType conj rs ** {
    existSubject = rs.existSubject
    } ;
	
 ConjNP conj ss = conjunctDistrTable RCase conj ss ** {
    n = ss.n ; 
    p = ss.p ; 
    isPron = False ;
	isDef = ss.isDef
    } ;
 ConjCN conj cn = conjunctDistrTable2 Number NCase conj cn ;
  
-- These fun's are generated from the list cat's.

 BaseS x y = twoTable SType x y ;
 ConsS x y = consrTable SType comma x y ;
 BaseAdv = twoSS ;
 ConsAdv = consrSS comma ;
 
 BaseNP x y = twoTable RCase x y ** {
    n = conjNumber x.n y.n ; 
    p = conjPerson x.p y.p ; 
    isPron = andB x.isPron y.isPron ;
	isDef = andB x.isDef y.isDef
    } ;
    
 ConsNP x y = consrTable RCase comma x y ** {
    n = conjNumber x.n y.n ; 
    p = conjPerson x.p y.p ; 
    isPron = andB x.isPron y.isPron ;
	isDef = andB x.isDef y.isDef
    } ;
 BaseAP = twoSS ;
 ConsAP = consrSS comma ;
 BaseRS x y = twoTable ComplType x y ** {
    existSubject = andB x.existSubject y.existSubject
    } ;
 ConsRS x y = consrTable ComplType comma x y ** {
    existSubject = y.existSubject 
	}; 
 BaseIAdv = twoSS ;
 ConsIAdv = consrSS comma ;
 BaseCN x y = twoTable2 Number NCase x y ;
 ConsCN x y = consrTable2 Number NCase comma x y ;
 
lincat
 [Adv],[AP],[IAdv] = {s1,s2 : Str} ;
 [S] = {s1,s2 : SType => Str} ;
 [RS] = {s1,s2 : ComplType => Str ; existSubject : Bool} ;
 [NP] = {s1,s2 : RCase => Str ; n : Number ; p : Person ; isPron : Bool ; isDef : Bool} ;
 [CN] = {s1,s2 : Number => NCase => Str} ;
 
}

