mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
concrete LogicEng of Logic = open
|
|
SyntaxEng, (P = ParadigmsEng), SymbolicEng, Prelude in {
|
|
lincat
|
|
Stm = Text ;
|
|
Prop = {pos,neg : S ; isAtom : Bool} ;
|
|
Atom = Cl ;
|
|
Ind = NP ;
|
|
Dom = CN ;
|
|
Var = NP ;
|
|
[Prop] = ListS ;
|
|
[Var] = NP ;
|
|
lin
|
|
SProp p = mkText p.pos ;
|
|
And ps = complexProp (mkS and_Conj ps) ;
|
|
Or ps = complexProp (mkS or_Conj ps) ;
|
|
If A B = complexProp (mkS if_then_Conj (mkListS A.pos B.pos)) ;
|
|
Not A = complexProp A.neg ;
|
|
All xs A B = complexProp (mkS (mkAdv for_Prep
|
|
(mkNP all_Predet (mkNP a_Quant plNum (mkCN A xs)))) B.pos) ;
|
|
Exist xs A B = complexProp (mkS (mkAdv for_Prep
|
|
(mkNP somePl_Det (mkCN A xs))) B.pos) ;
|
|
PAtom p =
|
|
{pos = mkS p ; neg = mkS negativePol p ; isAtom = True} ;
|
|
IVar x = x ;
|
|
VString s = symb s ;
|
|
BaseProp A B = mkListS A.pos B.pos ;
|
|
ConsProp A As = mkListS A.pos As ;
|
|
BaseVar x = x ;
|
|
ConsVar x xs = mkNP and_Conj (mkListNP x xs) ;
|
|
oper
|
|
complexProp : S -> {pos,neg : S ; isAtom : Bool} = \s -> {
|
|
pos = s ;
|
|
neg = negS s ;
|
|
isAtom = False
|
|
} ;
|
|
negS : S -> S = \s -> mkS negativePol (mkCl (mkNP it_Pron)
|
|
(mkNP the_Quant (mkCN (mkCN (P.mkN "case")) s))) ;
|
|
if_Then_Conj : Conj = P.mkConj "if" "then" ;
|
|
}
|