mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
116 lines
3.3 KiB
Plaintext
116 lines
3.3 KiB
Plaintext
abstract NLG = Logic ** {
|
|
|
|
flags
|
|
startcat = Utt;
|
|
|
|
cat
|
|
N (Ind -> Prop);
|
|
A (Ind -> Prop);
|
|
CN (Ind -> Prop);
|
|
Det ((Ind -> Prop) -> (Ind -> Prop) -> Prop);
|
|
PN Ind;
|
|
NP ((Ind -> Prop) -> Prop);
|
|
AP (Ind -> Prop);
|
|
VP (Ind -> Prop);
|
|
VPSlash (Ind -> Ind -> Prop);
|
|
V (Ind -> Prop);
|
|
V2 (Ind -> Ind -> Prop);
|
|
Comp (Ind -> Prop);
|
|
Pol (Prop -> Prop);
|
|
Cl Prop;
|
|
ClSlash (Ind -> Prop);
|
|
S Prop;
|
|
Utt;
|
|
|
|
Conj (Prop -> Prop -> Prop) ;
|
|
ListNP ((Prop -> Prop -> Prop) -> (Ind -> Prop) -> Prop) ;
|
|
ListS ((Prop -> Prop -> Prop) -> Prop) ;
|
|
|
|
fun
|
|
PredVP : ({np} : (Ind -> Prop) -> Prop) ->
|
|
({vp} : Ind -> Prop) ->
|
|
NP np -> VP vp -> Cl (np vp) ;
|
|
|
|
UseV : ({v} : Ind -> Prop) ->
|
|
V v -> VP v ;
|
|
|
|
ComplSlash : ({v2} : Ind -> Ind -> Prop) ->
|
|
({np} : (Ind -> Prop) -> Prop) ->
|
|
VPSlash v2 -> NP np -> VP (\i -> np (v2 i)) ;
|
|
|
|
SlashV2a : ({v2} : Ind -> Ind -> Prop) ->
|
|
V2 v2 -> VPSlash v2 ;
|
|
|
|
SlashVP : ({np} : (Ind -> Prop) -> Prop) ->
|
|
({v2} : Ind -> Ind -> Prop) ->
|
|
NP np -> VPSlash v2 -> ClSlash (\x -> np (v2 x));
|
|
|
|
ComplClSlash : ({sl} : Ind -> Prop) ->
|
|
({np} : (Ind -> Prop) -> Prop) ->
|
|
ClSlash sl -> NP np -> Cl (np sl);
|
|
|
|
UseComp : ({c} : Ind -> Prop) ->
|
|
Comp c -> VP c ;
|
|
|
|
CompAP : ({ap} : Ind -> Prop) ->
|
|
AP ap -> Comp ap ;
|
|
|
|
CompNP : ({np} : (Ind -> Prop) -> Prop) ->
|
|
NP np -> Comp (\x -> np (\y -> eq x y)) ;
|
|
|
|
UsePN : ({i} : Ind) -> PN i -> NP (\f -> f i) ;
|
|
|
|
DetCN : ({det} : (Ind -> Prop) -> (Ind -> Prop) -> Prop) ->
|
|
({cn} : Ind -> Prop) ->
|
|
Det det -> CN cn -> NP (\f -> det cn f);
|
|
|
|
AdjCN : ({ap,cn} : Ind -> Prop) ->
|
|
AP ap -> CN cn -> CN (\x -> and (ap x) (cn x)) ;
|
|
|
|
PositA : ({a} : Ind -> Prop) ->
|
|
A a -> AP a ;
|
|
|
|
UseN : ({n} : Ind -> Prop) -> N n -> CN n;
|
|
|
|
BaseNP : ({np1,np2} : (Ind -> Prop) -> Prop) ->
|
|
NP np1 -> NP np2 -> ListNP (\conj,f -> conj (np1 f) (np2 f)) ;
|
|
ConsNP : ({np1} : (Ind -> Prop) -> Prop) ->
|
|
({lst} : (Prop -> Prop -> Prop) -> (Ind -> Prop) -> Prop) ->
|
|
NP np1 -> ListNP lst -> ListNP (\conj,f -> conj (np1 f) (lst conj f)) ;
|
|
ConjNP : ({cnj} : Prop -> Prop -> Prop) ->
|
|
({lst} : (Prop -> Prop -> Prop) -> (Ind -> Prop) -> Prop) ->
|
|
Conj cnj -> ListNP lst -> NP (lst cnj) ;
|
|
|
|
BaseS : ({s1,s2} : Prop) ->
|
|
S s1 -> S s2 -> ListS (\conj -> conj s1 s2) ;
|
|
ConsS : ({s1} : Prop) ->
|
|
({lst} : (Prop -> Prop -> Prop) -> Prop) ->
|
|
S s1 -> ListS lst -> ListS (\conj -> conj s1 (lst conj)) ;
|
|
ConjS : ({cnj} : Prop -> Prop -> Prop) ->
|
|
({lst} : (Prop -> Prop -> Prop) -> Prop) ->
|
|
Conj cnj -> ListS lst -> S (lst cnj) ;
|
|
|
|
john_PN : PN john;
|
|
mary_PN : PN mary;
|
|
boy_N : N boy;
|
|
somebody_NP : NP exists;
|
|
everybody_NP : NP forall;
|
|
love_V2 : V2 love ;
|
|
leave_V : V leave ;
|
|
smart_A : A smart ;
|
|
a_Det : Det (\d,f -> exists (\x -> and (d x) (f x)));
|
|
every_Det : Det (\d,f -> forall (\x -> impl (d x) (f x)));
|
|
some_Det : Det (\d,f -> exists (\x -> and (d x) (f x)));
|
|
PPos : Pol (\t -> t) ;
|
|
PNeg : Pol (\t -> not t) ;
|
|
and_Conj : Conj and ;
|
|
or_Conj : Conj or ;
|
|
|
|
UseCl : ({cl} : Prop) ->
|
|
({p} : Prop -> Prop) ->
|
|
Pol p -> Cl cl -> S (p cl);
|
|
|
|
UttS : (s : Prop) -> S s -> Utt;
|
|
|
|
}
|