blob: 16c8ba24c9a06b970ffdbaa9fde9f6680d036871 (
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
incomplete concrete QueryI of Query = open
Syntax,
LexQuery,
Lang,
Prelude
in {
lincat
Move = Utt ; ---- Text ;
Query = Utt ;
Answer = Cl ; -- Utt ;
Set = NP ;
Interrogative = IP ;
Function = Fun ; -- = {cn : CN ; prep : Prep} ;
Kind = CN ;
Property = Prop ; -- = {ap : AP ; vp : VP} ;
Relation = Rel ; -- = {ap : AP ; vp : VP ; prep : Prep} ;
Individual = NP ;
Name = NP ;
[Individual] = [NP] ;
lin
MQuery q = q ; ---- mkText (mkPhr q) questMarkPunct ;
MAnswer a = mkUtt a ; ---- mkText (mkPhr a) fullStopPunct ;
QSet s =
let
ss : NP = s
| mkNP (mkNP theSg_Det Lang.name_N) (mkAdv namePrep s)
| mkNP (mkNP thePl_Det Lang.name_N) (mkAdv namePrep s)
---- | mkNP (GenNP s) sgNum Lang.name_N
---- | mkNP (GenNP s) plNum Lang.name_N ;
in
mkUtt (mkImp (mkVP LexQuery.give_V3 ss (mkNP i_Pron)))
| mkUtt (mkQS (mkQCl (Lang.CompIP whatSg_IP) ss))
| mkUtt (mkQS (mkQCl (Lang.CompIP (Lang.IdetIP (mkIDet which_IQuant))) ss))
| mkUtt ss ;
QWhere s =
mkUtt (mkQS (mkQCl where_IAdv s))
| mkUtt (mkQS (mkQCl where_IAdv (mkCl s located_A))) ;
QWhat i p = mkUtt (mkQS (mkQCl i p.vp)) ;
QRelWhere s p = mkUtt (mkQS (mkQCl where_IAdv (mkCl s p.vp))) ;
QFun r s =
mkUtt
(mkImp (mkVP LexQuery.give_V3
(mkNP and_Conj s (detSet s r.cn)) (mkNP i_Pron)))
| mkUtt (mkQS (mkQCl (mkIP what_IQuant plNum r.cn) s have_V2))
| mkUtt (mkQS (mkQCl whatSg_IP
(mkClSlash (mkClSlash s have_V2) (mkAdv as_Prep (mkNP aPl_Det r.cn))))) ;
QFunPair s f =
let
ss0 : NP = s
| mkNP (mkNP thePl_Det Lang.name_N) (mkAdv namePrep s) ;
ss : NP = mkNP and_Conj ss0 (mkNP (mkQuant they_Pron) plNum f.cn)
| mkNP ss0 (mkAdv with_Prep (mkNP (mkQuant they_Pron) plNum f.cn))
in
mkUtt (mkImp (mkVP LexQuery.give_V3 ss (mkNP i_Pron)))
| mkUtt (mkQS (mkQCl (Lang.CompIP whatPl_IP) ss))
| mkUtt (mkQS (mkQCl (Lang.CompIP (Lang.IdetIP (mkIDet which_IQuant))) ss))
| mkUtt ss ;
QInfo s =
let
info : NP = mkNP (all_NP | (mkNP information_N)) (mkAdv about_Prep s) ;
in
mkUtt (mkImp (mkVP LexQuery.give_V3 info (mkNP i_Pron)))
| mkUtt (mkQCl whatSg_IP
(mkClSlash (mkClSlash (mkNP youSg_Pron) know_V2) (mkAdv about_Prep s)))
| mkUtt info ;
QCalled i = mkUtt (mkQS (mkQCl how_IAdv (mkCl i
(mkVP (also_AdV | otherwise_AdV) (mkVP called_A))))) ;
QWhether a = mkUtt (mkQS a) ;
AInd s i = (mkCl s i) ;
AName s n = (mkCl n (mkNP the_Det (mkCN Lang.name_N (mkAdv namePrep s)))) ;
AProp s p = (mkCl s p.vp) ;
SAll k = mkNP all_Predet (mkNP aPl_Det k) | mkNP thePl_Det k ;
SOne k = mkNP n1_Numeral k ;
SIndef k = mkNP a_Det k ;
SDef k = mkNP the_Det k ;
SPlural k = mkNP aPl_Det k ;
SOther k = mkNP aPl_Det (mkCN other_A k) ;
SInd i = i ;
SInds is = mkNP and_Conj is ;
IWhich k =
mkIP what_IQuant (sgNum | plNum) k
| mkIP which_IQuant (sgNum | plNum) k ;
IWho = whoSg_IP | whoPl_IP ;
IWhat = whatSg_IP | whatPl_IP ;
KFunSet r s =
mkCN r.cn (mkAdv r.prep s) ;
KFunKind k r s =
mkCN k (mkRS (mkRCl which_RP (mkVP (mkNP aPl_Det (mkCN r.cn (mkAdv r.prep s))))))
| mkCN k (mkRS (mkRCl that_RP (mkVP (mkNP aPl_Det (mkCN r.cn (mkAdv r.prep s))))))
;
KFunPair k r = mkCN k (mkAdv with_Prep (mkNP (mkQuant they_Pron) plNum r.cn)) ;
KProp p k =
participlePropCN p k
| mkCN k (mkRS (mkRCl which_RP p.vp))
| mkCN k (mkRS (mkRCl that_RP p.vp))
;
KFun r = r.cn ;
IName n = n ;
PCalled i = propCalled i ;
PCalleds is = propCalled (mkNP or_Conj is) ;
BaseIndividual = mkListNP ;
ConsIndividual = mkListNP ;
-- these need new things in resource
lin
KFunsSet r q s =
mkCN (ConjCN and_Conj (BaseCN r.cn q.cn)) (mkAdv r.prep s) ;
SFun s r = mkNP (GenNP s) plNum r.cn | mkNP (GenNP s) sgNum r.cn ;
QWhatWhat i j p = mkUtt (mkQS (QuestQVP i (AdvQVP p.vp (mkIAdv p.prep j)))) ;
QWhatWhere i p = mkUtt (mkQS (QuestQVP i (AdvQVP p.vp where_IAdv))) ;
PIs i = propVP (mkVP i) ;
AKind s k = (mkCl s (Lang.UseComp (Lang.CompCN k))) ;
PRelation r s = {
ap = AdvAP r.ap (mkAdv r.prep s) ;
vp = mkVP r.vp (mkAdv r.prep s)
} ;
oper
namePrep : Prep = possess_Prep ;
relVP : VP -> Prep -> Rel = \vp,p -> {
ap = vpAP vp ;
vp = vp ;
prep = p
} ;
propVP : VP -> Prop = \vp -> {
ap = vpAP vp ;
vp = vp
} ;
propAP : AP -> Prop = \ap -> {
ap = ap ;
vp = mkVP ap
} ;
relAP : AP -> Prep -> Rel = \ap,p -> {
ap = ap ;
vp = mkVP ap ;
prep = p
} ;
propCalled : NP -> Prop = \i ->
propAP (mkAP (also_AdA | otherwise_AdA) (mkAP (mkA2 called_A (mkPrep [])) i)) ;
detSet : NP -> CN -> NP = \s,c ->
mkNP (mkQuant they_Pron) plNum c ;
-- lexicon
lincat
Country = {np : NP ; a : A} ;
JobTitle = CN ;
lin
NCountry c = c.np ;
PCountry c = propAP (mkAP c.a) ;
}
|