summaryrefslogtreecommitdiff
path: root/gf-book/examples/chapter8/LogicBEng.gf
blob: b950c6b39515eca47392d359cab4fe56a0bcfcc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
concrete LogicEng of Logic = open 
  SyntaxEng, (P = ParadigmsEng), SymbolicEng, Prelude in {
lincat
  Stm  = Text ;
  Prop = S ;
  Atom = Cl ; 
  Ind  = NP ; 
  Dom  = CN ; 
  Var  = NP ; 
  [Prop] = [S] ; 
  [Var]  = NP ; 
lin
  SProp = mkText ;
  And = mkS and_Conj ;      -- A, B ... and C
  Or = mkS or_Conj ;        -- A, B ... or C
  If A B =                  -- if A B
    mkS (mkAdv if_Subj A) B ;  
  Not A =                   -- it is not the case that A
    mkS negativePol (mkCl 
      (mkVP (mkNP the_Quant 
         (mkCN case_CN A)))) ; 
  All xs A B =              -- for all A's xs, B
    mkS (mkAdv for_Prep 
      (mkNP all_Predet (mkNP a_Quant 
         plNum (mkCN A xs)))) B ;
  Exist xs A B =            -- for some A's xs, B
    mkS (mkAdv for_Prep 
      (mkNP somePl_Det (mkCN A xs))) B ;
  PAtom = mkS ;
  IVar x = x ;
  VString s = symb s ;
  BaseProp A B = mkListS A B ; 
  ConsProp A As = mkListS A As ;
  BaseVar x = x ;
  ConsVar x xs = mkNP and_Conj (mkListNP x xs) ;
oper
  case_CN : CN = mkCN (P.mkN "case") ;
}