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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
|
concrete Hebrew of Letter=open ResHebU in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;lincat Author={s:(ResHebU.Num=>(ResHebU.Gen=>Str));n:ResHebU.DepNum;g:ResHebU.DepGen}={s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>str@0}};n=<ResHebU.depnum>;g=<ResHebU.depgen>};"Author";
lin BePromoted:Letter.Sentence=\Position@0->{s=table ResHebU.DepNum{(ResHebU.depnum)(ResHebU.cnum(ResHebU.sg))(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.depgen)(ResHebU.cgen(ResHebU.masc))(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"קודמת"++("לתפקיד"++("של"++Position@0.s!<ResHebU.sg>!<ResHebU.fem>));(ResHebU.masc)=>"קודמת"++("לתפקיד"++("של"++Position@0.s!<ResHebU.sg>!<ResHebU.masc>))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"קודמתם"++("לתפקיד"++("של"++Position@0.s!<ResHebU.pl>!<ResHebU.masc>));(ResHebU.fem)=>"קודמתן"++("לתפקיד"++("של"++Position@0.s!<ResHebU.pl>!<ResHebU.fem>))}}}}};"קודמת לתפקיד של Position_0";
lin ColleagueHe:Letter.Recipient=\->{s="עמית";n=<ResHebU.sg>;g=<ResHebU.masc>};"עמית";
lin ColleagueShe:Letter.Recipient=\->{s="עמיתה";n=<ResHebU.sg>;g=<ResHebU.fem>};"עמיתה";
lin ColleaguesHe:Letter.Recipient=\->{s="עמיתים";n=<ResHebU.pl>;g=<ResHebU.masc>};"עמיתים";
lin ColleaguesShe:Letter.Recipient=\->{s="עמיתות";n=<ResHebU.pl>;g=<ResHebU.fem>};"עמיתות";
lin Company:Letter.NounPhrase=\->{s="חברתןו";n=<ResHebU.sg>;g=<ResHebU.fem>};"חברתןו";
lin Competitor:Letter.NounPhrase=\->{s="המתחרה"++("הגרוע"++("ביותר"++"שלןו"));n=<ResHebU.sg>;g=<ResHebU.masc>};"המתחרה הגרוע ביותר שלןו";
lin DarlingHe:Letter.Recipient=\->{s="אהובי";n=<ResHebU.sg>;g=<ResHebU.masc>};"אהובי";
lin DarlingShe:Letter.Recipient=\->{s="אהובתי";n=<ResHebU.sg>;g=<ResHebU.fem>};"אהובתי";
lin Dean:Letter.Author=\->{s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"דיקן"}};n=<ResHebU.cnum<ResHebU.sg>>;g=<ResHebU.cgen<ResHebU.masc>>};"דיקן";
lin DearRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s++table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>"יקרות";(ResHebU.masc)=>"יקרים"}!(Recipient@0.g);(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"יקר";(ResHebU.fem)=>"יקרה"}!(Recipient@0.g)}!(Recipient@0.n);n=Recipient@0.n;g=Recipient@0.g};"Recipient_0 יקר";
lincat Ending={s:(ResHebU.Num=>(ResHebU.Gen=>Str));n:ResHebU.DepNum;g:ResHebU.DepGen}={s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>str@0}};n=<ResHebU.depnum>;g=<ResHebU.depgen>};"Ending";
lin FormalEnding:Letter.Ending=\Author@0->{s=table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>",בכבוד"++("רב"++"&-")++Author@0.s!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>",בכבוד"++("רב"++"&-")++Author@0.s!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>",בכבוד"++("רב"++"&-")++Author@0.s!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>",בכבוד"++("רב"++"&-")++Author@0.s!<ResHebU.sg>!<ResHebU.masc>}};n=Author@0.n;g=Author@0.g};"(,בכבוד רב &-)Author_0";
lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResHebU.DepNum{(ResHebU.depnum)(ResHebU.cnum(ResHebU.sg))(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.depgen)(ResHebU.cgen(ResHebU.masc))(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>NounPhrase@0.s++(table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"פשט";(ResHebU.fem)=>"פשטה"}!(NounPhrase@0.g);(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"פשטו"}!(NounPhrase@0.g)}!(NounPhrase@0.n)++"רגל")}}}}};"NounPhrase_0 פשט רגל";
lincat Heading={s:Str;n:ResHebU.Num;g:ResHebU.Gen}={s=str@0;n=<ResHebU.sg>;g=<ResHebU.masc>};"Heading";
lin HelloRec:Letter.Heading=\Recipient@0->{s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>"שלום"}!(Recipient@0.n)++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"שלום Recipient_0";
lin Honour:Letter.Mode=\->{s=table ResHebU.DepNum{(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדות"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"הןןו"++("מתכבדות"++("להודיע"++("לך"++"ש")))}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדים"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדים"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"הןןו"++("מתכבדים"++("להודיע"++("לך"++"ש")))}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדות"++("להודיע"++("לך"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדים"++("להודיע"++("לך"++"ש")))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדים"++("להודיע"++("לכן"++"ש")))}}};(ResHebU.depnum)=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדות"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"הןןי"++("מתכבדת"++("להודיע"++("לך"++"ש")))}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדים"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדים"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"הןןי"++("מתכבד"++("להודיע"++("לך"++"ש")))}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"הןןי"++("מתכבד"++("להודיע"++("לך"++"ש")));(ResHebU.masc)=>"הןןי"++("מתכבדת"++("להודיע"++("לך"++"ש")))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןו"++("מתכבדות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןו"++("מתכבדים"++("להודיע"++("לכן"++"ש")))}}};(ResHebU.cnum(ResHebU.sg))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןי"++("מתכבד"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןי"++("מתכבד"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"הןןי"++("מתכבד"++("להודיע"++("לך"++"ש")))}};(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"הןןי"++("מתכבדת"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"הןןי"++("מתכבדת"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"הןןי"++("מתכבדת"++("להודיע"++("לך"++"ש")))}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"הןןי"++("מתכבד"++("להודיע"++("לך"++"ש")));(ResHebU.masc)=>"הןןי"++("מתכבדת"++("להודיע"++("לך"++"ש")))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>"הןןי"++("מתכבד"++("להודיע"++("לכן"++"ש")));(ResHebU.masc)=>"הןןי"++("מתכבדת"++("להודיע"++("לכם"++"ש")))}}}}};"הןןי מתכבדת להודיע לך ש";
lin ILoveYou:Letter.Sentence=\->{s=table ResHebU.DepNum{(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבות"++"אתכם");(ResHebU.fem)=>"אןחןו"++("אוהבות"++"אתכן")};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןחןו"++("אוהבות"++"אותך")}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבים"++"אתכם");(ResHebU.fem)=>"אןחןו"++("אוהבים"++"אתכן")};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןחןו"++("אוהבים"++"אותך")}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבות"++"אותך");(ResHebU.fem)=>"אןחןו"++("אוהבים"++"אותך")};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבות"++"אתכם");(ResHebU.fem)=>"אןחןו"++("אוהבים"++"אתכן")}}};(ResHebU.depnum)=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבות"++"אתכם");(ResHebU.fem)=>"אןחןו"++("אוהבות"++"אתכן")};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("אוהבת"++"אותך")}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבים"++"אתכם");(ResHebU.fem)=>"אןחןו"++("אוהבים"++"אתכן")};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("אוהב"++"אותך")}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"אןי"++("אוהב"++"אותך");(ResHebU.masc)=>"אןי"++("אוהבת"++"אותך")};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("אוהבות"++"אתכם");(ResHebU.fem)=>"אןחןו"++("אוהבים"++"אתכן")}}};(ResHebU.cnum(ResHebU.sg))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןי"++("אוהב"++"אתכם");(ResHebU.fem)=>"אןי"++("אוהב"++"אתכן")};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("אוהב"++"אותך")}};(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןי"++("אוהבת"++"אתכם");(ResHebU.fem)=>"אןי"++("אוהבת"++"אתכן")};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("אוהבת"++"אותך")}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"אןי"++("אוהב"++"אותך");(ResHebU.masc)=>"אןי"++("אוהבת"++"אותך")};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>"אןי"++("אוהב"++"אתכן");(ResHebU.masc)=>"אןי"++("אוהבת"++"אתכם")}}}}};"אןי אוהבת אותך";
lin InformalEnding:Letter.Ending=\Author@0->{s=table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>",בברכה"++"&-"++Author@0.s!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>",בברכה"++"&-"++Author@0.s!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>",בברכה"++"&-"++Author@0.s!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>",בברכה"++"&-"++Author@0.s!<ResHebU.sg>!<ResHebU.masc>}};n=Author@0.n;g=Author@0.g};"(,בברכה &-)Author_0";
lin JustHello:Letter.Heading=\Recipient@0->{s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>"שלום"}!(Recipient@0.n);n=Recipient@0.n;g=Recipient@0.g};"שלום";
lincat Letter={s:Str}={s=str@0};"Letter";
lincat Message={s:(ResHebU.DepNum=>(ResHebU.DepGen=>(ResHebU.Num=>(ResHebU.Gen=>Str))))}={s=table ResHebU.DepNum{(ResHebU.depnum)(ResHebU.cnum(ResHebU.sg))(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.depgen)(ResHebU.cgen(ResHebU.masc))(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>str@0}}}}};"Message";
lin MkLetter:Letter.Letter=\Heading@0,Message@1,Ending@2->{s=","++(Heading@0.s++("&-"++(Message@1.s!(Ending@2.n)!(Ending@2.g)!(Heading@0.n)!(Heading@0.g)++("&-"++Ending@2.s!(Heading@0.n)!(Heading@0.g)))))};", Heading_0 &- Message_1 &- Ending_2";
lincat Mode={s:(ResHebU.DepNum=>(ResHebU.DepGen=>(ResHebU.Num=>(ResHebU.Gen=>Str))))}={s=table ResHebU.DepNum{(ResHebU.depnum)(ResHebU.cnum(ResHebU.sg))(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.depgen)(ResHebU.cgen(ResHebU.masc))(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>str@0}}}}};"Mode";
lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResHebU.DepNum{(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.masc>}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.masc>}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.pl>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.masc>}}};(ResHebU.cnum(ResHebU.sg))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.masc>}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.masc>}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.cnum<ResHebU.sg>>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.masc>}}};(ResHebU.depnum)=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.fem>>!<ResHebU.sg>!<ResHebU.masc>}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.cgen<ResHebU.masc>>!<ResHebU.sg>!<ResHebU.masc>}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.fem>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.masc>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.pl>!<ResHebU.masc>};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.fem>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.fem>;(ResHebU.masc)=>Mode@0.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.masc>++Sentence@1.s!<ResHebU.depnum>!<ResHebU.depgen>!<ResHebU.sg>!<ResHebU.masc>}}}}};"Mode_0 Sentence_1";
lin Mother:Letter.Author=\->{s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אמא"}};n=<ResHebU.cnum<ResHebU.sg>>;g=<ResHebU.cgen<ResHebU.fem>>};"אמא";
lin Name:Letter.Author=\String@0->{s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>String@0.s}};n=<ResHebU.cnum<ResHebU.sg>>;g=<ResHebU.cgen<ResHebU.masc>>};"String_0";
lin NameHe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResHebU.sg>;g=<ResHebU.masc>};"String_0";
lin NameShe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResHebU.sg>;g=<ResHebU.fem>};"String_0";
lincat NounPhrase={s:Str;n:ResHebU.Num;g:ResHebU.Gen}={s=str@0;n=<ResHebU.sg>;g=<ResHebU.masc>};"NounPhrase";
lin OurCustomers:Letter.NounPhrase=\->{s="לקוחותיןו";n=<ResHebU.pl>;g=<ResHebU.masc>};"לקוחותיןו";
lin PlainRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Recipient_0";
lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0";
lincat Position={s:(ResHebU.Num=>(ResHebU.Gen=>Str))}={s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>str@0}}};"Position";
lin President:Letter.Author=\->{s=table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"ןשיא"}};n=<ResHebU.cnum<ResHebU.sg>>;g=<ResHebU.cgen<ResHebU.masc>>};"ןשיא";
lin ProjectManager:Letter.Position=\->{s=table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>"מןהלות"++"פרוייקט";(ResHebU.masc)=>"מןהלי"++"פרוייקט"};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"מןהל"++"פרוייקט";(ResHebU.fem)=>"מןהלת"++"פרוייקט"}}};"מןהל פרוייקט";
lincat Recipient={s:Str;n:ResHebU.Num;g:ResHebU.Gen}={s=str@0;n=<ResHebU.sg>;g=<ResHebU.masc>};"Recipient";
lin Regret:Letter.Mode=\->{s=table ResHebU.DepNum{(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערות"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןחןו"++("מצטערות"++("להודיע"++("לך"++"ש")))}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערים"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערים"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןחןו"++("מצטערים"++("להודיע"++("לך"++"ש")))}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערות"++("להודיע"++("לך"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערים"++("להודיע"++("לך"++"ש")))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערים"++("להודיע"++("לכן"++"ש")))}}};(ResHebU.depnum)=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערות"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("מצטערת"++("להודיע"++("לך"++"ש")))}};(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערים"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערים"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("מצטער"++("להודיע"++("לך"++"ש")))}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"אןי"++("מצטער"++("להודיע"++("לך"++"ש")));(ResHebU.masc)=>"אןי"++("מצטערת"++("להודיע"++("לך"++"ש")))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןחןו"++("מצטערות"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןחןו"++("מצטערים"++("להודיע"++("לכן"++"ש")))}}};(ResHebU.cnum(ResHebU.sg))=>table ResHebU.DepGen{(ResHebU.cgen(ResHebU.masc))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןי"++("מצטער"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןי"++("מצטער"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("מצטער"++("להודיע"++("לך"++"ש")))}};(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)=>"אןי"++("מצטערת"++("להודיע"++("לכם"++"ש")));(ResHebU.fem)=>"אןי"++("מצטערת"++("להודיע"++("לכן"++"ש")))};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"אןי"++("מצטערת"++("להודיע"++("לך"++"ש")))}};(ResHebU.depgen)=>table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.fem)=>"אןי"++("מצטער"++("להודיע"++("לך"++"ש")));(ResHebU.masc)=>"אןי"++("מצטערת"++("להודיע"++("לך"++"ש")))};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>"אןי"++("מצטער"++("להודיע"++("לכן"++"ש")));(ResHebU.masc)=>"אןי"++("מצטערת"++("להודיע"++("לכם"++"ש")))}}}}};"אןי מצטערת להודיע לך ש";
lin Senior:Letter.Position=\->{s=table ResHebU.Num{(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"חבר"++"בכיר"};(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>"חברים"++"בכירים"}}};"חבר בכיר";
lincat Sentence={s:(ResHebU.DepNum=>(ResHebU.DepGen=>(ResHebU.Num=>(ResHebU.Gen=>Str))))}={s=table ResHebU.DepNum{(ResHebU.depnum)(ResHebU.cnum(ResHebU.sg))(ResHebU.cnum(ResHebU.pl))=>table ResHebU.DepGen{(ResHebU.depgen)(ResHebU.cgen(ResHebU.masc))(ResHebU.cgen(ResHebU.fem))=>table ResHebU.Num{(ResHebU.sg)(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.masc)(ResHebU.fem)=>str@0}}}}};"Sentence";
lin Spouse:Letter.Author=\->{s=table ResHebU.Num{(ResHebU.pl)=>table ResHebU.Gen{(ResHebU.fem)=>"בעליכן";(ResHebU.masc)=>"ןשותיכם"};(ResHebU.sg)=>table ResHebU.Gen{(ResHebU.masc)=>"אישתך";(ResHebU.fem)=>"בעלך"}};n=<ResHebU.depnum>;g=<ResHebU.depgen>};"אישתך";
}
resource ResHebU={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResHebU.Gen;
param DepNum=depnum|cnum ResHebU.Num;
param Gen=masc|fem;
param Kas=nom|dat|acc;
param Num=sg|pl;
}
abstract Letter={flags coding=utf8;flags modulesize=n42;cat Author[]=;
fun BePromoted:(h_:Letter.Position)->Letter.Sentence={};
fun ColleagueHe:Letter.Recipient={};
fun ColleagueShe:Letter.Recipient={};
fun ColleaguesHe:Letter.Recipient={};
fun ColleaguesShe:Letter.Recipient={};
fun Company:Letter.NounPhrase={};
fun Competitor:Letter.NounPhrase={};
fun DarlingHe:Letter.Recipient={};
fun DarlingShe:Letter.Recipient={};
fun Dean:Letter.Author={};
fun DearRec:(h_:Letter.Recipient)->Letter.Heading={};
cat Ending[]=;
fun FormalEnding:(h_:Letter.Author)->Letter.Ending={};
fun GoBankrupt:(h_:Letter.NounPhrase)->Letter.Sentence={};
cat Heading[]=;
fun HelloRec:(h_:Letter.Recipient)->Letter.Heading={};
fun Honour:Letter.Mode={};
fun ILoveYou:Letter.Sentence={};
fun InformalEnding:(h_:Letter.Author)->Letter.Ending={};
fun JustHello:(h_:Letter.Recipient)->Letter.Heading={};
cat Letter[]=;
cat Message[]=;
fun MkLetter:(h_:Letter.Heading)->(h_:Letter.Message)->(h_:Letter.Ending)->Letter.Letter={};
cat Mode[]=;
fun ModeSent:(h_:Letter.Mode)->(h_:Letter.Sentence)->Letter.Message={};
fun Mother:Letter.Author={};
fun Name:(h_:PredefAbs.String)->Letter.Author={};
fun NameHe:(h_:PredefAbs.String)->Letter.Recipient={};
fun NameShe:(h_:PredefAbs.String)->Letter.Recipient={};
cat NounPhrase[]=;
fun OurCustomers:Letter.NounPhrase={};
fun PlainRec:(h_:Letter.Recipient)->Letter.Heading={};
fun PlainSent:(h_:Letter.Sentence)->Letter.Message={};
cat Position[]=;
fun President:Letter.Author={};
fun ProjectManager:Letter.Position={};
cat Recipient[]=;
fun Regret:Letter.Mode={};
fun Senior:Letter.Position={};
cat Sentence[]=;
fun Spouse:Letter.Author={};
}
concrete Russian of Letter=open ResRusU in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;lincat Author={s:(ResRusU.Num=>(ResRusU.Gen=>Str));n:ResRusU.DepNum;g:ResRusU.DepGen}={s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>str@0}};n=<ResRusU.depnum>;g=<ResRusU.depgen>};"Author";
lin BePromoted:Letter.Sentence=\Position@0->{s=table ResRusU.DepNum{(ResRusU.depnum)(ResRusU.cnum(ResRusU.sg))(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>"вы"++"были"++("назначены"++Position@0.s!<ResRusU.pl>!<ResRusU.fem>);(ResRusU.masc)=>"вы"++"были"++("назначены"++Position@0.s!<ResRusU.pl>!<ResRusU.masc>)};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)=>"ты"++"был"++("назначен"++Position@0.s!<ResRusU.sg>!<ResRusU.masc>);(ResRusU.fem)=>"ты"++"была"++("назначена"++Position@0.s!<ResRusU.sg>!<ResRusU.fem>)}}}}};"(ты был)назначен Position_0";
lin ColleagueHe:Letter.Recipient=\->{s="коллега";n=<ResRusU.sg>;g=<ResRusU.masc>};"коллега";
lin ColleagueShe:Letter.Recipient=\->{s="коллега";n=<ResRusU.sg>;g=<ResRusU.fem>};"коллега";
lin ColleaguesHe:Letter.Recipient=\->{s="коллеги";n=<ResRusU.pl>;g=<ResRusU.masc>};"коллеги";
lin ColleaguesShe:Letter.Recipient=\->{s="коллеги";n=<ResRusU.pl>;g=<ResRusU.fem>};"коллеги";
lin Company:Letter.NounPhrase=\->{s="наше"++"предприятие";n=<ResRusU.sg>;g=<ResRusU.fem>};"наше предприятие";
lin Competitor:Letter.NounPhrase=\->{s="наш"++"конкурент";n=<ResRusU.sg>;g=<ResRusU.masc>};"наш конкурент";
lin DarlingHe:Letter.Recipient=\->{s="любимый";n=<ResRusU.sg>;g=<ResRusU.masc>};"любимый";
lin DarlingShe:Letter.Recipient=\->{s="любимая";n=<ResRusU.sg>;g=<ResRusU.fem>};"любимая";
lin Dean:Letter.Author=\->{s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"декан"}};n=<ResRusU.cnum<ResRusU.sg>>;g=<ResRusU.cgen<ResRusU.masc>>};"декан";
lin DearRec:Letter.Heading=\Recipient@0->{s=table ResRusU.Num{(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>"Дорогая";(ResRusU.masc)=>"Дорогой"}!(Recipient@0.g);(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"Дорогие"}!(Recipient@0.g)}!(Recipient@0.n)++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Дорогой Recipient_0";
lincat Ending={s:(ResRusU.Num=>(ResRusU.Gen=>Str));n:ResRusU.DepNum;g:ResRusU.DepGen}={s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>str@0}};n=<ResRusU.depnum>;g=<ResRusU.depgen>};"Ending";
lin FormalEnding:Letter.Ending=\Author@0->{s=table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>"С"++("наилучшими"++("пожеланиями,"++"&-")++Author@0.s!<ResRusU.pl>!<ResRusU.fem>);(ResRusU.masc)=>"С"++("наилучшими"++("пожеланиями,"++"&-")++Author@0.s!<ResRusU.pl>!<ResRusU.masc>)};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>"С"++("наилучшими"++("пожеланиями,"++"&-")++Author@0.s!<ResRusU.sg>!<ResRusU.fem>);(ResRusU.masc)=>"С"++("наилучшими"++("пожеланиями,"++"&-")++Author@0.s!<ResRusU.sg>!<ResRusU.masc>)}};n=Author@0.n;g=Author@0.g};"С (наилучшими пожеланиями, &-)Author_0";
lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResRusU.DepNum{(ResRusU.depnum)(ResRusU.cnum(ResRusU.sg))(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>NounPhrase@0.s++table ResRusU.Num{(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>"обанкротилось";(ResRusU.masc)=>"обанкротился"}!(NounPhrase@0.g);(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"обанкротились"}!(NounPhrase@0.g)}!(NounPhrase@0.n)}}}}};"NounPhrase_0 обанкротился";
lincat Heading={s:Str;n:ResRusU.Num;g:ResRusU.Gen}={s=str@0;n=<ResRusU.sg>;g=<ResRusU.masc>};"Heading";
lin HelloRec:Letter.Heading=\Recipient@0->{s=table ResRusU.Num{(ResRusU.sg)=>"Здравствуй";(ResRusU.pl)=>"Здравствуйте"}!(Recipient@0.n)++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Здравствуй Recipient_0";
lin Honour:Letter.Mode=\->{s=table ResRusU.DepNum{(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мы"++"имеем"++("честь"++("сообщить"++"вам"++(","++"что")))};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мы"++"имеем"++("честь"++("сообщить"++"тебе"++(","++"что")))}}};(ResRusU.depnum)=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мы"++"имеем"++("честь"++("сообщить"++"вам"++(","++"что")))};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++"имею"++("честь"++("сообщить"++"тебе"++(","++"что")))}}};(ResRusU.cnum(ResRusU.sg))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++"имею"++("честь"++("сообщить"++"вам"++(","++"что")))};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++"имею"++("честь"++("сообщить"++"тебе"++(","++"что")))}}}}};"(я имею)честь (сообщить тебе), что";
lin ILoveYou:Letter.Sentence=\->{s=table ResRusU.DepNum{(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мы"++("вас"++"любим")};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мы"++("тебя"++"любим")}}};(ResRusU.depnum)=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мы"++("вас"++"любим")};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("тебя"++"люблю")}}};(ResRusU.cnum(ResRusU.sg))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("вас"++"люблю")};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("тебя"++"люблю")}}}}};"я тебя люблю";
lin InformalEnding:Letter.Ending=\Author@0->{s=table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>"С"++("дружеским"++("приветом,"++"&-"))++Author@0.s!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>"С"++("дружеским"++("приветом,"++"&-"))++Author@0.s!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>"С"++("дружеским"++("приветом,"++"&-"))++Author@0.s!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>"С"++("дружеским"++("приветом,"++"&-"))++Author@0.s!<ResRusU.sg>!<ResRusU.masc>}};n=Author@0.n;g=Author@0.g};"(С дружеским приветом, &-)Author_0";
lin JustHello:Letter.Heading=\Recipient@0->{s=table ResRusU.Num{(ResRusU.sg)=>"Здравствуй";(ResRusU.pl)=>"Здравствуйте"}!(Recipient@0.n);n=Recipient@0.n;g=Recipient@0.g};"Здравствуй";
lincat Letter={s:Str}={s=str@0};"Letter";
lincat Message={s:(ResRusU.DepNum=>(ResRusU.DepGen=>(ResRusU.Num=>(ResRusU.Gen=>Str))))}={s=table ResRusU.DepNum{(ResRusU.depnum)(ResRusU.cnum(ResRusU.sg))(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>str@0}}}}};"Message";
lin MkLetter:Letter.Letter=\Heading@0,Message@1,Ending@2->{s=Heading@0.s++(","++("&-"++(Message@1.s!(Ending@2.n)!(Ending@2.g)!(Heading@0.n)!(Heading@0.g)++("."++("&-"++Ending@2.s!(Heading@0.n)!(Heading@0.g))))))};"Heading_0 , &- Message_1 . &- Ending_2";
lincat Mode={s:(ResRusU.DepNum=>(ResRusU.DepGen=>(ResRusU.Num=>(ResRusU.Gen=>Str))))}={s=table ResRusU.DepNum{(ResRusU.depnum)(ResRusU.cnum(ResRusU.sg))(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>str@0}}}}};"Mode";
lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResRusU.DepNum{(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.masc>}};(ResRusU.cgen(ResRusU.masc))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.masc>}};(ResRusU.depgen)=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.pl>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.masc>}}};(ResRusU.cnum(ResRusU.sg))=>table ResRusU.DepGen{(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.masc>}};(ResRusU.cgen(ResRusU.masc))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.masc>}};(ResRusU.depgen)=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.cnum<ResRusU.sg>>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.masc>}}};(ResRusU.depnum)=>table ResRusU.DepGen{(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.fem>>!<ResRusU.sg>!<ResRusU.masc>}};(ResRusU.cgen(ResRusU.masc))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.cgen<ResRusU.masc>>!<ResRusU.sg>!<ResRusU.masc>}};(ResRusU.depgen)=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.fem>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.masc>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.pl>!<ResRusU.masc>};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.fem>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.fem>;(ResRusU.masc)=>Mode@0.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.masc>++Sentence@1.s!<ResRusU.depnum>!<ResRusU.depgen>!<ResRusU.sg>!<ResRusU.masc>}}}}};"Mode_0 Sentence_1";
lin Mother:Letter.Author=\->{s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"мама"}};n=<ResRusU.cnum<ResRusU.sg>>;g=<ResRusU.cgen<ResRusU.fem>>};"мама";
lin Name:Letter.Author=\String@0->{s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>String@0.s}};n=<ResRusU.cnum<ResRusU.sg>>;g=<ResRusU.cgen<ResRusU.masc>>};"String_0";
lin NameHe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResRusU.sg>;g=<ResRusU.masc>};"String_0";
lin NameShe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResRusU.sg>;g=<ResRusU.fem>};"String_0";
lincat NounPhrase={s:Str;n:ResRusU.Num;g:ResRusU.Gen}={s=str@0;n=<ResRusU.sg>;g=<ResRusU.masc>};"NounPhrase";
lin OurCustomers:Letter.NounPhrase=\->{s="наши"++"клиенты";n=<ResRusU.pl>;g=<ResRusU.masc>};"наши клиенты";
lin PlainRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Recipient_0";
lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0";
lincat Position={s:(ResRusU.Num=>(ResRusU.Gen=>Str))}={s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>str@0}}};"Position";
lin President:Letter.Author=\->{s=table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"президент"}};n=<ResRusU.cnum<ResRusU.sg>>;g=<ResRusU.cgen<ResRusU.masc>>};"президент";
lin ProjectManager:Letter.Position=\->{s=table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"менеджерами"++"проектов"};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"менеджером"++"проекта"}}};"менеджером проекта";
lincat Recipient={s:Str;n:ResRusU.Num;g:ResRusU.Gen}={s=str@0;n=<ResRusU.sg>;g=<ResRusU.masc>};"Recipient";
lin Regret:Letter.Mode=\->{s=table ResRusU.DepNum{(ResRusU.depnum)=>table ResRusU.DepGen{(ResRusU.cgen(ResRusU.masc))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"вы"++("вынуждены"++("сообщить"++(","++"что")))};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("вынужден"++("сообщить"++(","++"что")))}};(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"вы"++("вынуждены"++("сообщить"++(","++"что")))};(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("вынуждена"++("сообщить"++(","++"что")))}};(ResRusU.depgen)=>table ResRusU.Num{(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>"я"++("вынужден"++("сообщить"++(","++"что")));(ResRusU.masc)=>"я"++("вынуждена"++("сообщить"++(","++"что")))};(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"вы"++("вынуждены"++("сообщить"++(","++"что")))}}};(ResRusU.cnum(ResRusU.sg))=>table ResRusU.DepGen{(ResRusU.depgen)=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.fem)=>"я"++("вынужден"++("сообщить"++(","++"что")));(ResRusU.masc)=>"я"++("вынуждена"++("сообщить"++(","++"что")))}};(ResRusU.cgen(ResRusU.masc))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("вынужден"++("сообщить"++(","++"что")))}};(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"я"++("вынуждена"++("сообщить"++(","++"что")))}}};(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"вы"++("вынуждены"++("сообщить"++(","++"что")))}}}}};"я вынуждена сообщить , что";
lin Senior:Letter.Position=\->{s=table ResRusU.Num{(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"старшим"++("научным"++"сотрудником")};(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>"старшими"++("научными"++"сотрудниками")}}};"старшим научным сотрудником";
lincat Sentence={s:(ResRusU.DepNum=>(ResRusU.DepGen=>(ResRusU.Num=>(ResRusU.Gen=>Str))))}={s=table ResRusU.DepNum{(ResRusU.depnum)(ResRusU.cnum(ResRusU.sg))(ResRusU.cnum(ResRusU.pl))=>table ResRusU.DepGen{(ResRusU.depgen)(ResRusU.cgen(ResRusU.masc))(ResRusU.cgen(ResRusU.fem))=>table ResRusU.Num{(ResRusU.sg)(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)(ResRusU.fem)=>str@0}}}}};"Sentence";
lin Spouse:Letter.Author=\->{s=table ResRusU.Num{(ResRusU.sg)=>table ResRusU.Gen{(ResRusU.fem)=>"твой"++"муж";(ResRusU.masc)=>"твоя"++"жена"};(ResRusU.pl)=>table ResRusU.Gen{(ResRusU.masc)=>"ваши"++"жены";(ResRusU.fem)=>"ваши"++"мужья"}};n=<ResRusU.depnum>;g=<ResRusU.depgen>};"твоя жена";
}
resource ResRusU={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResRusU.Gen;
param DepNum=depnum|cnum ResRusU.Num;
param Gen=masc|fem;
param Kas=nom|acc;
param Num=sg|pl;
}
concrete Finnish of Letter=open ResFin in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;lincat Author={s:(ResFin.Num=>(ResFin.Gen=>Str));n:ResFin.DepNum;g:ResFin.DepGen}={s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>str@0}};n=<ResFin.depnum>;g=<ResFin.depgen>};"Author";
lin BePromoted:Letter.Sentence=\Position@0->{s=table ResFin.DepNum{(ResFin.depnum)(ResFin.cnum(ResFin.sg))(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>"sinut"++"on"++("ylennetty"++Position@0.s!<ResFin.sg>!<ResFin.fem>);(ResFin.masc)=>"sinut"++"on"++("ylennetty"++Position@0.s!<ResFin.sg>!<ResFin.masc>)};(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>"teidät"++"on"++("ylennetty"++Position@0.s!<ResFin.pl>!<ResFin.fem>);(ResFin.masc)=>"teidät"++"on"++("ylennetty"++Position@0.s!<ResFin.pl>!<ResFin.masc>)}}}}};"(sinut on)ylennetty Position_0";
lin ColleagueHe:Letter.Recipient=\->{s="kollega";n=<ResFin.sg>;g=<ResFin.masc>};"kollega";
lin ColleagueShe:Letter.Recipient=\->{s="kollega";n=<ResFin.sg>;g=<ResFin.fem>};"kollega";
lin ColleaguesHe:Letter.Recipient=\->{s="kollegat";n=<ResFin.pl>;g=<ResFin.masc>};"kollegat";
lin ColleaguesShe:Letter.Recipient=\->{s="kollegat";n=<ResFin.pl>;g=<ResFin.fem>};"kollegat";
lin Company:Letter.NounPhrase=\->{s="yrityksemme";n=<ResFin.sg>;g=<ResFin.fem>};"yrityksemme";
lin Competitor:Letter.NounPhrase=\->{s="pahin"++"kilpailijamme";n=<ResFin.sg>;g=<ResFin.masc>};"pahin kilpailijamme";
lin DarlingHe:Letter.Recipient=\->{s="kulta";n=<ResFin.sg>;g=<ResFin.masc>};"kulta";
lin DarlingShe:Letter.Recipient=\->{s="kulta";n=<ResFin.sg>;g=<ResFin.fem>};"kulta";
lin Dean:Letter.Author=\->{s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"dekaani"}};n=<ResFin.cnum<ResFin.sg>>;g=<ResFin.cgen<ResFin.masc>>};"dekaani";
lin DearRec:Letter.Heading=\Recipient@0->{s=table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakas"}!(Recipient@0.g);(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakkaat"}!(Recipient@0.g)}!(Recipient@0.n)++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"rakas Recipient_0";
lincat Ending={s:(ResFin.Num=>(ResFin.Gen=>Str));n:ResFin.DepNum;g:ResFin.DepGen}={s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>str@0}};n=<ResFin.depnum>;g=<ResFin.depgen>};"Ending";
lin FormalEnding:Letter.Ending=\Author@0->{s=table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>"parhain"++("terveisin"++"&-")++Author@0.s!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>"parhain"++("terveisin"++"&-")++Author@0.s!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>"parhain"++("terveisin"++"&-")++Author@0.s!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>"parhain"++("terveisin"++"&-")++Author@0.s!<ResFin.sg>!<ResFin.masc>}};n=Author@0.n;g=Author@0.g};"(parhain terveisin &-)Author_0";
lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResFin.DepNum{(ResFin.depnum)(ResFin.cnum(ResFin.sg))(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>NounPhrase@0.s++(table ResFin.Num{(ResFin.sg)=>"on";(ResFin.pl)=>"ovat"}!(NounPhrase@0.n)++(table ResFin.Num{(ResFin.pl)=>"menneet";(ResFin.sg)=>"mennyt"}!(NounPhrase@0.n)++"konkurssiin"))}}}}};"NounPhrase_0 on mennyt konkurssiin";
lincat Heading={s:Str;n:ResFin.Num;g:ResFin.Gen}={s=str@0;n=<ResFin.sg>;g=<ResFin.masc>};"Heading";
lin HelloRec:Letter.Heading=\Recipient@0->{s="Terve"++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Terve Recipient_0";
lin Honour:Letter.Mode=\->{s=table ResFin.DepNum{(ResFin.depnum)=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"meillä"++"on"++("kunnia"++("ilmoittaa"++"teille"++"että"))};(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"minulla"++"on"++("kunnia"++("ilmoittaa"++"sinulle"++"että"))}}};(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"meillä"++"on"++("kunnia"++("ilmoittaa"++"sinulle"++"että"))};(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"meillä"++"on"++("kunnia"++("ilmoittaa"++"teille"++"että"))}}};(ResFin.cnum(ResFin.sg))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"minulla"++"on"++("kunnia"++("ilmoittaa"++"sinulle"++"että"))};(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"minulla"++"on"++("kunnia"++("ilmoittaa"++"teille"++"että"))}}}}};"(minulla on)kunnia (ilmoittaa sinulle)ett";
lin ILoveYou:Letter.Sentence=\->{s=table ResFin.DepNum{(ResFin.depnum)=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakastamme"++"teitä"};(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakastan"++"sinua"}}};(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakastamme"++"sinua"};(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakastamme"++"teitä"}}};(ResFin.cnum(ResFin.sg))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakastan"++"sinua"};(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"rakastan"++"teitä"}}}}};"rakastan sinua";
lin InformalEnding:Letter.Ending=\Author@0->{s=table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>"terveisin"++"&-"++Author@0.s!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>"terveisin"++"&-"++Author@0.s!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>"terveisin"++"&-"++Author@0.s!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>"terveisin"++"&-"++Author@0.s!<ResFin.sg>!<ResFin.masc>}};n=Author@0.n;g=Author@0.g};"(terveisin &-)Author_0";
lin JustHello:Letter.Heading=\Recipient@0->{s="Terve";n=Recipient@0.n;g=Recipient@0.g};"Terve";
lincat Letter={s:Str}={s=str@0};"Letter";
lincat Message={s:(ResFin.DepNum=>(ResFin.DepGen=>(ResFin.Num=>(ResFin.Gen=>Str))))}={s=table ResFin.DepNum{(ResFin.depnum)(ResFin.cnum(ResFin.sg))(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>str@0}}}}};"Message";
lin MkLetter:Letter.Letter=\Heading@0,Message@1,Ending@2->{s=Heading@0.s++(","++("&-"++(Message@1.s!(Ending@2.n)!(Ending@2.g)!(Heading@0.n)!(Heading@0.g)++("."++("&-"++Ending@2.s!(Heading@0.n)!(Heading@0.g))))))};"Heading_0 , &- Message_1 . &- Ending_2";
lincat Mode={s:(ResFin.DepNum=>(ResFin.DepGen=>(ResFin.Num=>(ResFin.Gen=>Str))))}={s=table ResFin.DepNum{(ResFin.depnum)(ResFin.cnum(ResFin.sg))(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>str@0}}}}};"Mode";
lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResFin.DepNum{(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.masc>}};(ResFin.cgen(ResFin.masc))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.masc>}};(ResFin.depgen)=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.pl>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.masc>}}};(ResFin.cnum(ResFin.sg))=>table ResFin.DepGen{(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.masc>}};(ResFin.cgen(ResFin.masc))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.masc>}};(ResFin.depgen)=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.cnum<ResFin.sg>>!<ResFin.depgen>!<ResFin.sg>!<ResFin.masc>}}};(ResFin.depnum)=>table ResFin.DepGen{(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.fem>>!<ResFin.sg>!<ResFin.masc>}};(ResFin.cgen(ResFin.masc))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.depnum>!<ResFin.cgen<ResFin.masc>>!<ResFin.sg>!<ResFin.masc>}};(ResFin.depgen)=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.pl>!<ResFin.fem>++Sentence@1.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.pl>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.pl>!<ResFin.masc>++Sentence@1.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.pl>!<ResFin.masc>};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>Mode@0.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.sg>!<ResFin.fem>++Sentence@1.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.sg>!<ResFin.fem>;(ResFin.masc)=>Mode@0.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.sg>!<ResFin.masc>++Sentence@1.s!<ResFin.depnum>!<ResFin.depgen>!<ResFin.sg>!<ResFin.masc>}}}}};"Mode_0 Sentence_1";
lin Mother:Letter.Author=\->{s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"äiti"}};n=<ResFin.cnum<ResFin.sg>>;g=<ResFin.cgen<ResFin.fem>>};"iti";
lin Name:Letter.Author=\String@0->{s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>String@0.s}};n=<ResFin.cnum<ResFin.sg>>;g=<ResFin.cgen<ResFin.masc>>};"String_0";
lin NameHe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResFin.sg>;g=<ResFin.masc>};"String_0";
lin NameShe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResFin.sg>;g=<ResFin.fem>};"String_0";
lincat NounPhrase={s:Str;n:ResFin.Num;g:ResFin.Gen}={s=str@0;n=<ResFin.sg>;g=<ResFin.masc>};"NounPhrase";
lin OurCustomers:Letter.NounPhrase=\->{s="asiakkaamme";n=<ResFin.pl>;g=<ResFin.masc>};"asiakkaamme";
lin PlainRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Recipient_0";
lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0";
lincat Position={s:(ResFin.Num=>(ResFin.Gen=>Str))}={s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>str@0}}};"Position";
lin President:Letter.Author=\->{s=table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"presidentti"}};n=<ResFin.cnum<ResFin.sg>>;g=<ResFin.cgen<ResFin.masc>>};"presidentti";
lin ProjectManager:Letter.Position=\->{s=table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"projektipäälliköiksi"};(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"projektipäälliköksi"}}};"projektipllikksi";
lincat Recipient={s:Str;n:ResFin.Num;g:ResFin.Gen}={s=str@0;n=<ResFin.sg>;g=<ResFin.masc>};"Recipient";
lin Regret:Letter.Mode=\->{s=table ResFin.DepNum{(ResFin.depnum)=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"meidän"++("on"++("valitettavasti"++"ilmoitettava")++"että")};(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"minun"++("on"++("valitettavasti"++"ilmoitettava")++"että")}}};(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"meidän"++("on"++("valitettavasti"++"ilmoitettava")++"että")}}};(ResFin.cnum(ResFin.sg))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"minun"++("on"++("valitettavasti"++"ilmoitettava")++"että")}}}}};"minun (on valitettavasti ilmoitettava)ett";
lin Senior:Letter.Position=\->{s=table ResFin.Num{(ResFin.sg)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"vanhemmaksi"++"tutkijaksi"};(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>"vanhemmiksi"++"tutkijoiksi"}}};"vanhemmaksi tutkijaksi";
lincat Sentence={s:(ResFin.DepNum=>(ResFin.DepGen=>(ResFin.Num=>(ResFin.Gen=>Str))))}={s=table ResFin.DepNum{(ResFin.depnum)(ResFin.cnum(ResFin.sg))(ResFin.cnum(ResFin.pl))=>table ResFin.DepGen{(ResFin.depgen)(ResFin.cgen(ResFin.masc))(ResFin.cgen(ResFin.fem))=>table ResFin.Num{(ResFin.sg)(ResFin.pl)=>table ResFin.Gen{(ResFin.masc)(ResFin.fem)=>str@0}}}}};"Sentence";
lin Spouse:Letter.Author=\->{s=table ResFin.Num{(ResFin.pl)=>table ResFin.Gen{(ResFin.fem)=>"miehenne";(ResFin.masc)=>"vaimonne"};(ResFin.sg)=>table ResFin.Gen{(ResFin.fem)=>"miehesi";(ResFin.masc)=>"vaimosi"}};n=<ResFin.depnum>;g=<ResFin.depgen>};"vaimosi";
}
resource ResFin={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResFin.Gen;
param DepNum=depnum|cnum ResFin.Num;
param Gen=masc|fem;
param Kas=nom|acc;
param Num=sg|pl;
}
concrete Swedish of Letter=open ResSve in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;lincat Author={s:(ResSve.Num=>(ResSve.Sex=>Str));n:ResSve.DepNum;x:ResSve.Sex}={s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>str@0}};n=<ResSve.depnum>;x=<ResSve.masc>};"Author";
lin BePromoted:Letter.Sentence=\Position@0->{s=table ResSve.DepNum{(ResSve.depnum)(ResSve.cnum(ResSve.sg))(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>"du"++("har"++"blivit"++("befordrad"++("till"++Position@0.s!<ResSve.sg>!<ResSve.fem>)));(ResSve.masc)=>"du"++("har"++"blivit"++("befordrad"++("till"++Position@0.s!<ResSve.sg>!<ResSve.masc>)))};(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>"ni"++("har"++"blivit"++("befordrade"++("till"++Position@0.s!<ResSve.pl>!<ResSve.fem>)));(ResSve.masc)=>"ni"++("har"++"blivit"++("befordrade"++("till"++Position@0.s!<ResSve.pl>!<ResSve.masc>)))}}}}};"du (har blivit)befordrad till Position_0";
lin ColleagueHe:Letter.Recipient=\->{s="kollega";n=<ResSve.sg>;x=<ResSve.masc>};"kollega";
lin ColleagueShe:Letter.Recipient=\->{s="kollega";n=<ResSve.sg>;x=<ResSve.fem>};"kollega";
lin ColleaguesHe:Letter.Recipient=\->{s="kollegor";n=<ResSve.pl>;x=<ResSve.masc>};"kollegor";
lin ColleaguesShe:Letter.Recipient=\->{s="kollegor";n=<ResSve.pl>;x=<ResSve.fem>};"kollegor";
lin Company:Letter.NounPhrase=\->{s="vårt"++"företag";n=<ResSve.sg>;g=<ResSve.ett>};"vrt fretag";
lin Competitor:Letter.NounPhrase=\->{s="vår"++("värsta"++"konkurrent");n=<ResSve.sg>;g=<ResSve.en>};"vr vrsta konkurrent";
lin DarlingHe:Letter.Recipient=\->{s="älskling";n=<ResSve.sg>;x=<ResSve.masc>};"lskling";
lin DarlingShe:Letter.Recipient=\->{s="älskling";n=<ResSve.sg>;x=<ResSve.fem>};"lskling";
lin Dean:Letter.Author=\->{s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"Dekanus"}};n=<ResSve.cnum<ResSve.sg>>;x=<ResSve.masc>};"Dekanus";
lin DearRec:Letter.Heading=\Recipient@0->{s=table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>"Kära";(ResSve.masc)=>"Käre"}!(Recipient@0.x);(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"Kära"}!(Recipient@0.x)}!(Recipient@0.n)++Recipient@0.s;n=Recipient@0.n;x=Recipient@0.x};"Kre Recipient_0";
lincat Ending={s:(ResSve.Num=>(ResSve.Sex=>Str));n:ResSve.DepNum;x:ResSve.Sex}={s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>str@0}};n=<ResSve.depnum>;x=<ResSve.masc>};"Ending";
lin FormalEnding:Letter.Ending=\Author@0->{s=table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>"Med"++("vänlig"++("hälsning"++"&-"))++Author@0.s!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>"Med"++("vänlig"++("hälsning"++"&-"))++Author@0.s!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>"Med"++("vänlig"++("hälsning"++"&-"))++Author@0.s!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>"Med"++("vänlig"++("hälsning"++"&-"))++Author@0.s!<ResSve.sg>!<ResSve.masc>}};n=Author@0.n;x=Author@0.x};"(Med vnlig hlsning &-)Author_0";
lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResSve.DepNum{(ResSve.depnum)(ResSve.cnum(ResSve.sg))(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>NounPhrase@0.s++("har"++("gått"++("i"++"konkurs")))}}}}};"NounPhrase_0 har gtt i konkurs";
lincat Heading={s:Str;n:ResSve.Num;x:ResSve.Sex}={s=str@0;n=<ResSve.sg>;x=<ResSve.masc>};"Heading";
lin HelloRec:Letter.Heading=\Recipient@0->{s="Hej"++Recipient@0.s;n=Recipient@0.n;x=Recipient@0.x};"Hej Recipient_0";
lin Honour:Letter.Mode=\->{s=table ResSve.DepNum{(ResSve.cnum(ResSve.sg))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("har"++("äran"++("att"++"meddela"))++("dig"++"att"))};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("har"++("äran"++("att"++"meddela"))++("er"++"att"))}}};(ResSve.depnum)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("har"++("äran"++("att"++"meddela"))++("dig"++"att"))};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("har"++("äran"++("att"++"meddela"))++("er"++"att"))}}};(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("har"++("äran"++("att"++"meddela"))++("dig"++"att"))};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("har"++("äran"++("att"++"meddela"))++("er"++"att"))}}}}};"jag (har ran att meddela)dig att";
lin ILoveYou:Letter.Sentence=\->{s=table ResSve.DepNum{(ResSve.cnum(ResSve.sg))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("älskar"++"dig")};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("älskar"++"er")}}};(ResSve.depnum)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("älskar"++"dig")};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("älskar"++"er")}}};(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("älskar"++"dig")};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("älskar"++"er")}}}}};"jag lskar dig";
lin InformalEnding:Letter.Ending=\Author@0->{s=table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>"Med"++("hälsningar"++"&-")++Author@0.s!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>"Med"++("hälsningar"++"&-")++Author@0.s!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>"Med"++("hälsningar"++"&-")++Author@0.s!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>"Med"++("hälsningar"++"&-")++Author@0.s!<ResSve.sg>!<ResSve.masc>}};n=Author@0.n;x=Author@0.x};"(Med hlsningar &-)Author_0";
lin JustHello:Letter.Heading=\Recipient@0->{s="Hej";n=Recipient@0.n;x=Recipient@0.x};"Hej";
lincat Letter={s:Str}={s=str@0};"Brev";
lincat Message={s:(ResSve.DepNum=>(ResSve.Sex=>(ResSve.Num=>(ResSve.Sex=>Str))))}={s=table ResSve.DepNum{(ResSve.depnum)(ResSve.cnum(ResSve.sg))(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>str@0}}}}};"Message";
lin MkLetter:Letter.Letter=\Heading@0,Message@1,Ending@2->{s=Heading@0.s++(","++("&-"++(Message@1.s!(Ending@2.n)!(Ending@2.x)!(Heading@0.n)!(Heading@0.x)++("."++("&-"++Ending@2.s!(Heading@0.n)!(Heading@0.x))))))};"brevmall";
lincat Mode={s:(ResSve.DepNum=>(ResSve.Sex=>(ResSve.Num=>(ResSve.Sex=>Str))))}={s=table ResSve.DepNum{(ResSve.depnum)(ResSve.cnum(ResSve.sg))(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>str@0}}}}};"Mode";
lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResSve.DepNum{(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.fem)=>table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.pl>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.pl>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.sg>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.sg>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.fem>!<ResSve.sg>!<ResSve.masc>}};(ResSve.masc)=>table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.pl>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.pl>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.sg>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.sg>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.pl>>!<ResSve.masc>!<ResSve.sg>!<ResSve.masc>}}};(ResSve.cnum(ResSve.sg))=>table ResSve.Sex{(ResSve.fem)=>table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.pl>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.pl>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.sg>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.sg>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.fem>!<ResSve.sg>!<ResSve.masc>}};(ResSve.masc)=>table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.pl>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.pl>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.sg>!<ResSve.fem>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.sg>!<ResSve.masc>++Sentence@1.s!<ResSve.cnum<ResSve.sg>>!<ResSve.masc>!<ResSve.sg>!<ResSve.masc>}}};(ResSve.depnum)=>table ResSve.Sex{(ResSve.fem)=>table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.pl>!<ResSve.fem>++Sentence@1.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.pl>!<ResSve.masc>++Sentence@1.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.sg>!<ResSve.fem>++Sentence@1.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.sg>!<ResSve.masc>++Sentence@1.s!<ResSve.depnum>!<ResSve.fem>!<ResSve.sg>!<ResSve.masc>}};(ResSve.masc)=>table ResSve.Num{(ResSve.pl)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.pl>!<ResSve.fem>++Sentence@1.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.pl>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.pl>!<ResSve.masc>++Sentence@1.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.pl>!<ResSve.masc>};(ResSve.sg)=>table ResSve.Sex{(ResSve.fem)=>Mode@0.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.sg>!<ResSve.fem>++Sentence@1.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.sg>!<ResSve.fem>;(ResSve.masc)=>Mode@0.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.sg>!<ResSve.masc>++Sentence@1.s!<ResSve.depnum>!<ResSve.masc>!<ResSve.sg>!<ResSve.masc>}}}}};"Mode_0 Sentence_1";
lin Mother:Letter.Author=\->{s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"Mamma"}};n=<ResSve.cnum<ResSve.sg>>;x=<ResSve.fem>};"Mamma";
lin Name:Letter.Author=\String@0->{s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>String@0.s}};n=<ResSve.cnum<ResSve.sg>>;x=<ResSve.masc>};"String_0";
lin NameHe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResSve.sg>;x=<ResSve.masc>};"String_0";
lin NameShe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResSve.sg>;x=<ResSve.fem>};"String_0";
lincat NounPhrase={s:Str;n:ResSve.Num;g:ResSve.Gen}={s=str@0;n=<ResSve.sg>;g=<ResSve.en>};"NounPhrase";
lin OurCustomers:Letter.NounPhrase=\->{s="våra"++"kunder";n=<ResSve.pl>;g=<ResSve.en>};"vra kunder";
lin PlainRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s;n=Recipient@0.n;x=Recipient@0.x};"Recipient_0";
lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0";
lincat Position={s:(ResSve.Num=>(ResSve.Sex=>Str))}={s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>str@0}}};"Position";
lin President:Letter.Author=\->{s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"Presidenten"}};n=<ResSve.cnum<ResSve.sg>>;x=<ResSve.masc>};"Presidenten";
lin ProjectManager:Letter.Position=\->{s=table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"projektchef"};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"projektchefer"}}};"projektchef";
lincat Recipient={s:Str;n:ResSve.Num;x:ResSve.Sex}={s=str@0;n=<ResSve.sg>;x=<ResSve.masc>};"Recipient";
lin Regret:Letter.Mode=\->{s=table ResSve.DepNum{(ResSve.cnum(ResSve.sg))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("måste"++("tyvärr"++"meddela")++("dig"++"att"))};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("måste"++("tyvärr"++"meddela")++("er"++"att"))}}};(ResSve.depnum)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"jag"++("måste"++("tyvärr"++"meddela")++("dig"++"att"))};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("måste"++("tyvärr"++"meddela")++("er"++"att"))}}};(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("måste"++("tyvärr"++"meddela")++("dig"++"att"))};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"vi"++("måste"++("tyvärr"++"meddela")++("er"++"att"))}}}}};"jag (mste tyvrr meddela)dig att";
lin Senior:Letter.Position=\->{s=table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>"äldre"++"forskare"}}};"ldre forskare";
lincat Sentence={s:(ResSve.DepNum=>(ResSve.Sex=>(ResSve.Num=>(ResSve.Sex=>Str))))}={s=table ResSve.DepNum{(ResSve.depnum)(ResSve.cnum(ResSve.sg))(ResSve.cnum(ResSve.pl))=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>table ResSve.Num{(ResSve.sg)(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)(ResSve.fem)=>str@0}}}}};"Sentence";
lin Spouse:Letter.Author=\->{s=table ResSve.Num{(ResSve.sg)=>table ResSve.Sex{(ResSve.masc)=>"din"++"hustru";(ResSve.fem)=>"din"++"man"};(ResSve.pl)=>table ResSve.Sex{(ResSve.masc)=>"era"++"hustrur";(ResSve.fem)=>"era"++"män"}};n=<ResSve.depnum>;x=<ResSve.masc>};"din hustru";
}
resource ResSve={flags coding=utf8;flags modulesize=n5;param DepNum=depnum|cnum ResSve.Num;
param Gen=en|ett;
param Kas=nom|acc;
param Num=sg|pl;
param Sex=masc|fem;
}
concrete French of Letter=open ResFra in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;lincat Author={s:(ResFra.Num=>(ResFra.Gen=>Str));n:ResFra.DepNum;g:ResFra.DepGen}={s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>str@0}};n=<ResFra.depnum>;g=<ResFra.depgen>};"Author";
lin BePromoted:Letter.Sentence=\Position@0->{s=table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.sg))(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>"vous"++("avez"++"été")++("promues"++Position@0.s!<ResFra.pl>!<ResFra.fem>);(ResFra.masc)=>"vous"++("avez"++"été")++("promus"++Position@0.s!<ResFra.pl>!<ResFra.masc>)};(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)=>"tu"++("as"++"été")++("promu"++Position@0.s!<ResFra.sg>!<ResFra.masc>);(ResFra.fem)=>"tu"++("as"++"été")++("promue"++Position@0.s!<ResFra.sg>!<ResFra.fem>)}}}}};"(tu as t)promu Position_0";
lin ColleagueHe:Letter.Recipient=\->{s="collègue";n=<ResFra.sg>;g=<ResFra.masc>};"collgue";
lin ColleagueShe:Letter.Recipient=\->{s="collègue";n=<ResFra.sg>;g=<ResFra.fem>};"collgue";
lin ColleaguesHe:Letter.Recipient=\->{s="collègues";n=<ResFra.pl>;g=<ResFra.masc>};"collgues";
lin ColleaguesShe:Letter.Recipient=\->{s="collègues";n=<ResFra.pl>;g=<ResFra.fem>};"collgues";
lin Company:Letter.NounPhrase=\->{s="notre"++"entreprise";n=<ResFra.sg>;g=<ResFra.fem>};"notre entreprise";
lin Competitor:Letter.NounPhrase=\->{s="notre"++("pire"++"compétiteur");n=<ResFra.sg>;g=<ResFra.masc>};"notre pire comptiteur";
lin DarlingHe:Letter.Recipient=\->{s="chéri";n=<ResFra.sg>;g=<ResFra.masc>};"chri";
lin DarlingShe:Letter.Recipient=\->{s="chérie";n=<ResFra.sg>;g=<ResFra.fem>};"chrie";
lin Dean:Letter.Author=\->{s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"le"++"doyen"}};n=<ResFra.cnum<ResFra.sg>>;g=<ResFra.cgen<ResFra.masc>>};"le doyen";
lin DearRec:Letter.Heading=\Recipient@0->{s=table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)=>"cher";(ResFra.fem)=>"chère"}!(Recipient@0.g);(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)=>"chers";(ResFra.fem)=>"chères"}!(Recipient@0.g)}!(Recipient@0.n)++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"cher Recipient_0";
lincat Ending={s:(ResFra.Num=>(ResFra.Gen=>Str));n:ResFra.DepNum;g:ResFra.DepGen}={s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>str@0}};n=<ResFra.depnum>;g=<ResFra.depgen>};"Ending";
lin FormalEnding:Letter.Ending=\Author@0->{s=table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>"avec"++(table ResFra.Num{(ResFra.sg)=>"mes";(ResFra.pl)=>"nos"}!(table ResFra.DepNum{(ResFra.cnum(ResFra.pl))=><ResFra.pl>;(ResFra.depnum)(ResFra.cnum(ResFra.sg))=><ResFra.sg>}!(Author@0.n))++("salutations"++("distinguées"++"&-")++Author@0.s!<ResFra.sg>!<ResFra.fem>));(ResFra.masc)=>"avec"++(table ResFra.Num{(ResFra.sg)=>"mes";(ResFra.pl)=>"nos"}!(table ResFra.DepNum{(ResFra.cnum(ResFra.pl))=><ResFra.pl>;(ResFra.depnum)(ResFra.cnum(ResFra.sg))=><ResFra.sg>}!(Author@0.n))++("salutations"++("distinguées"++"&-")++Author@0.s!<ResFra.sg>!<ResFra.masc>))};(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>"avec"++(table ResFra.Num{(ResFra.sg)=>"mes";(ResFra.pl)=>"nos"}!(table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.pl))=><ResFra.pl>;(ResFra.cnum(ResFra.sg))=><ResFra.sg>}!(Author@0.n))++("salutations"++("distinguées"++"&-")++Author@0.s!<ResFra.pl>!<ResFra.fem>));(ResFra.masc)=>"avec"++(table ResFra.Num{(ResFra.sg)=>"mes";(ResFra.pl)=>"nos"}!(table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.pl))=><ResFra.pl>;(ResFra.cnum(ResFra.sg))=><ResFra.sg>}!(Author@0.n))++("salutations"++("distinguées"++"&-")++Author@0.s!<ResFra.pl>!<ResFra.masc>))}};n=Author@0.n;g=Author@0.g};"avec mes (salutations distingues &-)Author_0";
lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.sg))(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>NounPhrase@0.s++(table ResFra.Num{(ResFra.sg)=>"a";(ResFra.pl)=>"ont"}!(NounPhrase@0.n)++("fait"++"banqueroute"))}}}}};"NounPhrase_0 a fait banqueroute";
lincat Heading={s:Str;n:ResFra.Num;g:ResFra.Gen}={s=str@0;n=<ResFra.sg>;g=<ResFra.masc>};"Heading";
lin HelloRec:Letter.Heading=\Recipient@0->{s="Bonjour"++Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Bonjour Recipient_0";
lin Honour:Letter.Mode=\->{s=table ResFra.DepNum{(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"avons"++("l'honneur"++"de"++("vous"++"informer"++"que"))};(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"avons"++("l'honneur"++"de"++("t'informer"++"que"))}}};(ResFra.depnum)=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"avons"++("l'honneur"++"de"++("vous"++"informer"++"que"))};(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"j'ai"++("l'honneur"++"de"++("t'informer"++"que"))}}};(ResFra.cnum(ResFra.sg))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"j'ai"++("l'honneur"++"de"++("vous"++"informer"++"que"))};(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"j'ai"++("l'honneur"++"de"++("t'informer"++"que"))}}}}};"j'ai (l'honneur de)t'informer que";
lin ILoveYou:Letter.Sentence=\->{s=table ResFra.DepNum{(ResFra.cnum(ResFra.sg))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++("vous"++"aime")};(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++"t'aime"}}};(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++("vous"++"aimons")};(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"t'aimons"}}};(ResFra.depnum)=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++"t'aime"};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++("vous"++"aimons")}}}}};"je t'aime";
lin InformalEnding:Letter.Ending=\Author@0->{s=table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>"Amicalement"++"&-"++Author@0.s!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>"Amicalement"++"&-"++Author@0.s!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>"Amicalement"++"&-"++Author@0.s!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>"Amicalement"++"&-"++Author@0.s!<ResFra.sg>!<ResFra.masc>}};n=Author@0.n;g=Author@0.g};"(Amicalement &-)Author_0";
lin JustHello:Letter.Heading=\Recipient@0->{s="Bonjour";n=Recipient@0.n;g=Recipient@0.g};"Bonjour";
lincat Letter={s:Str}={s=str@0};"Letter";
lincat Message={s:(ResFra.DepNum=>(ResFra.DepGen=>(ResFra.Num=>(ResFra.Gen=>Str))))}={s=table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.sg))(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>str@0}}}}};"Message";
lin MkLetter:Letter.Letter=\Heading@0,Message@1,Ending@2->{s=Heading@0.s++(","++("&-"++(Message@1.s!(Ending@2.n)!(Ending@2.g)!(Heading@0.n)!(Heading@0.g)++("."++("&-"++Ending@2.s!(Heading@0.n)!(Heading@0.g))))))};"Heading_0 , &- Message_1 . &- Ending_2";
lincat Mode={s:(ResFra.DepNum=>(ResFra.DepGen=>(ResFra.Num=>(ResFra.Gen=>Str))))}={s=table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.sg))(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>str@0}}}}};"Mode";
lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResFra.DepNum{(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.masc>}};(ResFra.cgen(ResFra.masc))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.masc>}};(ResFra.depgen)=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.pl>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.masc>}}};(ResFra.cnum(ResFra.sg))=>table ResFra.DepGen{(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.masc>}};(ResFra.cgen(ResFra.masc))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.masc>}};(ResFra.depgen)=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.cnum<ResFra.sg>>!<ResFra.depgen>!<ResFra.sg>!<ResFra.masc>}}};(ResFra.depnum)=>table ResFra.DepGen{(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.fem>>!<ResFra.sg>!<ResFra.masc>}};(ResFra.cgen(ResFra.masc))=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.depnum>!<ResFra.cgen<ResFra.masc>>!<ResFra.sg>!<ResFra.masc>}};(ResFra.depgen)=>table ResFra.Num{(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.pl>!<ResFra.fem>++Sentence@1.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.pl>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.pl>!<ResFra.masc>++Sentence@1.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.pl>!<ResFra.masc>};(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>Mode@0.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.sg>!<ResFra.fem>++Sentence@1.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.sg>!<ResFra.fem>;(ResFra.masc)=>Mode@0.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.sg>!<ResFra.masc>++Sentence@1.s!<ResFra.depnum>!<ResFra.depgen>!<ResFra.sg>!<ResFra.masc>}}}}};"Mode_0 Sentence_1";
lin Mother:Letter.Author=\->{s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"maman"}};n=<ResFra.cnum<ResFra.sg>>;g=<ResFra.cgen<ResFra.fem>>};"maman";
lin Name:Letter.Author=\String@0->{s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>String@0.s}};n=<ResFra.cnum<ResFra.sg>>;g=<ResFra.cgen<ResFra.masc>>};"String_0";
lin NameHe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResFra.sg>;g=<ResFra.masc>};"String_0";
lin NameShe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResFra.sg>;g=<ResFra.fem>};"String_0";
lincat NounPhrase={s:Str;n:ResFra.Num;g:ResFra.Gen}={s=str@0;n=<ResFra.sg>;g=<ResFra.masc>};"NounPhrase";
lin OurCustomers:Letter.NounPhrase=\->{s="nos"++"clients";n=<ResFra.pl>;g=<ResFra.masc>};"nos clients";
lin PlainRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s;n=Recipient@0.n;g=Recipient@0.g};"Recipient_0";
lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0";
lincat Position={s:(ResFra.Num=>(ResFra.Gen=>Str))}={s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>str@0}}};"Position";
lin President:Letter.Author=\->{s=table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"le"++"président"}};n=<ResFra.cnum<ResFra.sg>>;g=<ResFra.cgen<ResFra.masc>>};"le prsident";
lin ProjectManager:Letter.Position=\->{s=table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"chef"++("de"++"projet")};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"chefs"++("de"++"projets")}}};"chef de projet";
lincat Recipient={s:Str;n:ResFra.Num;g:ResFra.Gen}={s=str@0;n=<ResFra.sg>;g=<ResFra.masc>};"Recipient";
lin Regret:Letter.Mode=\->{s=table ResFra.DepNum{(ResFra.depnum)=>table ResFra.DepGen{(ResFra.depgen)=>table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.fem)=>"je"++"suis"++("désolé"++("d'informer"++"que"));(ResFra.masc)=>"je"++"suis"++("désolée"++("d'informer"++"que"))};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)=>"nous"++"sommes"++("désolées"++("d'informer"++"que"));(ResFra.fem)=>"nous"++"sommes"++("désolés"++("d'informer"++"que"))}};(ResFra.cgen(ResFra.masc))=>table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++"suis"++("désolé"++("d'informer"++"que"))};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"sommes"++("désolés"++("d'informer"++"que"))}};(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++"suis"++("désolée"++("d'informer"++"que"))};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"sommes"++("désolées"++("d'informer"++"que"))}}};(ResFra.cnum(ResFra.sg))=>table ResFra.DepGen{(ResFra.depgen)=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.fem)=>"je"++"suis"++("désolé"++("d'informer"++"que"));(ResFra.masc)=>"je"++"suis"++("désolée"++("d'informer"++"que"))}};(ResFra.cgen(ResFra.masc))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++"suis"++("désolé"++("d'informer"++"que"))}};(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"je"++"suis"++("désolée"++("d'informer"++"que"))}}};(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)=>"nous"++"sommes"++("désolées"++("d'informer"++"que"));(ResFra.fem)=>"nous"++"sommes"++("désolés"++("d'informer"++"que"))}};(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"sommes"++("désolées"++("d'informer"++"que"))}};(ResFra.cgen(ResFra.masc))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"nous"++"sommes"++("désolés"++("d'informer"++"que"))}}}}};"(je suis)dsole d'informer que";
lin Senior:Letter.Position=\->{s=table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"responsable"++"scientifique"};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>"responsables"++"scientifiques"}}};"responsable scientifique";
lincat Sentence={s:(ResFra.DepNum=>(ResFra.DepGen=>(ResFra.Num=>(ResFra.Gen=>Str))))}={s=table ResFra.DepNum{(ResFra.depnum)(ResFra.cnum(ResFra.sg))(ResFra.cnum(ResFra.pl))=>table ResFra.DepGen{(ResFra.depgen)(ResFra.cgen(ResFra.masc))(ResFra.cgen(ResFra.fem))=>table ResFra.Num{(ResFra.sg)(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)(ResFra.fem)=>str@0}}}}};"Sentence";
lin Spouse:Letter.Author=\->{s=table ResFra.Num{(ResFra.sg)=>table ResFra.Gen{(ResFra.masc)=>"ta"++"femme";(ResFra.fem)=>"ton"++"mari"};(ResFra.pl)=>table ResFra.Gen{(ResFra.masc)=>"vos"++"femmes";(ResFra.fem)=>"vos"++"maris"}};n=<ResFra.depnum>;g=<ResFra.depgen>};"ta femme";
}
resource ResFra={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResFra.Gen;
param DepNum=depnum|cnum ResFra.Num;
param Gen=masc|fem;
param Kas=nom|acc;
param Num=sg|pl;
}
concrete English of Letter=open ResEng in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;lincat Author={s:(ResEng.Num=>(ResEng.Sex=>Str));n:ResEng.DepNum;x:ResEng.Sex}={s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>str@0}};n=<ResEng.depnum>;x=<ResEng.masc>};"Author";
lin BePromoted:Letter.Sentence=\Position@0->{s=table ResEng.DepNum{(ResEng.depnum)(ResEng.cnum(ResEng.sg))(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>"you"++("have"++("been"++("promoted"++"to")))++Position@0.s!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>"you"++("have"++("been"++("promoted"++"to")))++Position@0.s!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>"you"++("have"++("been"++("promoted"++"to")))++Position@0.s!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>"you"++("have"++("been"++("promoted"++"to")))++Position@0.s!<ResEng.sg>!<ResEng.masc>}}}}};"(you have been promoted to)Position_0";
lin ColleagueHe:Letter.Recipient=\->{s="colleague";n=<ResEng.sg>;x=<ResEng.masc>};"colleague";
lin ColleagueShe:Letter.Recipient=\->{s="colleague";n=<ResEng.sg>;x=<ResEng.fem>};"colleague";
lin ColleaguesHe:Letter.Recipient=\->{s="colleagues";n=<ResEng.pl>;x=<ResEng.masc>};"colleagues";
lin ColleaguesShe:Letter.Recipient=\->{s="colleagues";n=<ResEng.pl>;x=<ResEng.fem>};"colleagues";
lin Company:Letter.NounPhrase=\->{s="our"++"company";n=<ResEng.sg>};"our company";
lin Competitor:Letter.NounPhrase=\->{s="our"++("worst"++"competitor");n=<ResEng.sg>};"our worst competitor";
lin DarlingHe:Letter.Recipient=\->{s="darling";n=<ResEng.sg>;x=<ResEng.masc>};"darling";
lin DarlingShe:Letter.Recipient=\->{s="darling";n=<ResEng.sg>;x=<ResEng.fem>};"darling";
lin Dean:Letter.Author=\->{s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"the"++"Dean"}};n=<ResEng.cnum<ResEng.sg>>;x=<ResEng.masc>};"the Dean";
lin DearRec:Letter.Heading=\Recipient@0->{s="Dear"++Recipient@0.s;n=Recipient@0.n;x=Recipient@0.x};"Dear Recipient_0";
lincat Ending={s:(ResEng.Num=>(ResEng.Sex=>Str));n:ResEng.DepNum;x:ResEng.Sex}={s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>str@0}};n=<ResEng.depnum>;x=<ResEng.masc>};"Ending";
lin FormalEnding:Letter.Ending=\Author@0->{s=table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>"Sincerely"++("yours"++"&-")++Author@0.s!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>"Sincerely"++("yours"++"&-")++Author@0.s!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>"Sincerely"++("yours"++"&-")++Author@0.s!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>"Sincerely"++("yours"++"&-")++Author@0.s!<ResEng.sg>!<ResEng.masc>}};n=Author@0.n;x=Author@0.x};"(Sincerely yours &-)Author_0";
lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResEng.DepNum{(ResEng.depnum)(ResEng.cnum(ResEng.sg))(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>NounPhrase@0.s++(table ResEng.Num{(ResEng.sg)=>"has";(ResEng.pl)=>"have"}!(NounPhrase@0.n)++("gone"++"bankrupt"))}}}}};"NounPhrase_0 has gone bankrupt";
lincat Heading={s:Str;n:ResEng.Num;x:ResEng.Sex}={s=str@0;n=<ResEng.sg>;x=<ResEng.masc>};"Heading";
lin HelloRec:Letter.Heading=\Recipient@0->{s="Hello"++Recipient@0.s;n=Recipient@0.n;x=Recipient@0.x};"Hello Recipient_0";
lin Honour:Letter.Mode=\->{s=table ResEng.DepNum{(ResEng.depnum)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"I"++("have"++("the"++("honour"++("to"++("inform"++("you"++"that"))))))};(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"we"++("have"++("the"++("honour"++("to"++("inform"++("you"++"that"))))))}}};(ResEng.cnum(ResEng.sg))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"I"++("have"++("the"++("honour"++("to"++("inform"++("you"++"that"))))))}}};(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"we"++("have"++("the"++("honour"++("to"++("inform"++("you"++"that"))))))}}}}};"I have the honour to inform you that";
lin ILoveYou:Letter.Sentence=\->{s=table ResEng.DepNum{(ResEng.depnum)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"I"++("love"++"you")};(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"we"++("love"++"you")}}};(ResEng.cnum(ResEng.sg))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"I"++("love"++"you")}}};(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"we"++("love"++"you")}}}}};"I love you";
lin InformalEnding:Letter.Ending=\Author@0->{s=table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>"With"++("best"++("regards"++"&-"))++Author@0.s!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>"With"++("best"++("regards"++"&-"))++Author@0.s!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>"With"++("best"++("regards"++"&-"))++Author@0.s!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>"With"++("best"++("regards"++"&-"))++Author@0.s!<ResEng.sg>!<ResEng.masc>}};n=Author@0.n;x=Author@0.x};"(With best regards &-)Author_0";
lin JustHello:Letter.Heading=\Recipient@0->{s="Hello";n=Recipient@0.n;x=Recipient@0.x};"Hello";
lincat Letter={s:Str}={s=str@0};"Letter";
lincat Message={s:(ResEng.DepNum=>(ResEng.Sex=>(ResEng.Num=>(ResEng.Sex=>Str))))}={s=table ResEng.DepNum{(ResEng.depnum)(ResEng.cnum(ResEng.sg))(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>str@0}}}}};"Message";
lin MkLetter:Letter.Letter=\Heading@0,Message@1,Ending@2->{s=Heading@0.s++(","++("&-"++(Message@1.s!(Ending@2.n)!(Ending@2.x)!(Heading@0.n)!(Heading@0.x)++("."++("&-"++Ending@2.s!(Heading@0.n)!(Heading@0.x))))))};"Heading_0 , &- Message_1 . &- Ending_2";
lincat Mode={s:(ResEng.DepNum=>(ResEng.Sex=>(ResEng.Num=>(ResEng.Sex=>Str))))}={s=table ResEng.DepNum{(ResEng.depnum)(ResEng.cnum(ResEng.sg))(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>str@0}}}}};"Mode";
lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResEng.DepNum{(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.fem)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.pl>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.pl>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.sg>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.sg>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.fem>!<ResEng.sg>!<ResEng.masc>}};(ResEng.masc)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.pl>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.pl>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.sg>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.sg>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.pl>>!<ResEng.masc>!<ResEng.sg>!<ResEng.masc>}}};(ResEng.cnum(ResEng.sg))=>table ResEng.Sex{(ResEng.fem)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.pl>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.pl>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.sg>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.sg>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.fem>!<ResEng.sg>!<ResEng.masc>}};(ResEng.masc)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.pl>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.pl>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.sg>!<ResEng.fem>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.sg>!<ResEng.masc>++Sentence@1.s!<ResEng.cnum<ResEng.sg>>!<ResEng.masc>!<ResEng.sg>!<ResEng.masc>}}};(ResEng.depnum)=>table ResEng.Sex{(ResEng.fem)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.pl>!<ResEng.fem>++Sentence@1.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.pl>!<ResEng.masc>++Sentence@1.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.sg>!<ResEng.fem>++Sentence@1.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.sg>!<ResEng.masc>++Sentence@1.s!<ResEng.depnum>!<ResEng.fem>!<ResEng.sg>!<ResEng.masc>}};(ResEng.masc)=>table ResEng.Num{(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.pl>!<ResEng.fem>++Sentence@1.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.pl>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.pl>!<ResEng.masc>++Sentence@1.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.pl>!<ResEng.masc>};(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>Mode@0.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.sg>!<ResEng.fem>++Sentence@1.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.sg>!<ResEng.fem>;(ResEng.masc)=>Mode@0.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.sg>!<ResEng.masc>++Sentence@1.s!<ResEng.depnum>!<ResEng.masc>!<ResEng.sg>!<ResEng.masc>}}}}};"Mode_0 Sentence_1";
lin Mother:Letter.Author=\->{s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"Mom"}};n=<ResEng.cnum<ResEng.sg>>;x=<ResEng.fem>};"Mom";
lin Name:Letter.Author=\String@0->{s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>String@0.s}};n=<ResEng.cnum<ResEng.sg>>;x=<ResEng.masc>};"String_0";
lin NameHe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResEng.sg>;x=<ResEng.masc>};"String_0";
lin NameShe:Letter.Recipient=\String@0->{s=String@0.s;n=<ResEng.sg>;x=<ResEng.fem>};"String_0";
lincat NounPhrase={s:Str;n:ResEng.Num}={s=str@0;n=<ResEng.sg>};"NounPhrase";
lin OurCustomers:Letter.NounPhrase=\->{s="our"++"customers";n=<ResEng.pl>};"our customers";
lin PlainRec:Letter.Heading=\Recipient@0->{s=Recipient@0.s;n=Recipient@0.n;x=Recipient@0.x};"Recipient_0";
lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0";
lincat Position={s:(ResEng.Num=>(ResEng.Sex=>Str))}={s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>str@0}}};"Position";
lin President:Letter.Author=\->{s=table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"the"++"President"}};n=<ResEng.cnum<ResEng.sg>>;x=<ResEng.masc>};"the President";
lin ProjectManager:Letter.Position=\->{s=table ResEng.Num{(ResEng.sg)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"a"++("project"++"manager")};(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"project"++"managers"}}};"a project manager";
lincat Recipient={s:Str;n:ResEng.Num;x:ResEng.Sex}={s=str@0;n=<ResEng.sg>;x=<ResEng.masc>};"Recipient";
lin Regret:Letter.Mode=\->{s=table ResEng.DepNum{(ResEng.depnum)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"I"++("am"++("sorry"++("to"++("inform"++("you"++"that")))))};(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"we"++("are"++("sorry"++("to"++("inform"++("you"++"that")))))}}};(ResEng.cnum(ResEng.sg))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"I"++("am"++("sorry"++("to"++("inform"++("you"++"that")))))}}};(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"we"++("are"++("sorry"++("to"++("inform"++("you"++"that")))))}}}}};"I am sorry to inform you that";
lin Senior:Letter.Position=\->{s=table ResEng.Num{(ResEng.sg)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"a"++("senior"++"fellow")};(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>"senior"++"fellows"}}};"a senior fellow";
lincat Sentence={s:(ResEng.DepNum=>(ResEng.Sex=>(ResEng.Num=>(ResEng.Sex=>Str))))}={s=table ResEng.DepNum{(ResEng.depnum)(ResEng.cnum(ResEng.sg))(ResEng.cnum(ResEng.pl))=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>table ResEng.Num{(ResEng.sg)(ResEng.pl)=>table ResEng.Sex{(ResEng.masc)(ResEng.fem)=>str@0}}}}};"Sentence";
lin Spouse:Letter.Author=\->{s=table ResEng.Num{(ResEng.sg)=>table ResEng.Sex{(ResEng.fem)=>"your"++"husband";(ResEng.masc)=>"your"++"wife"};(ResEng.pl)=>table ResEng.Sex{(ResEng.fem)=>"your"++"husbands";(ResEng.masc)=>"your"++"wives"}};n=<ResEng.depnum>;x=<ResEng.masc>};"your wife";
}
resource ResEng={flags coding=utf8;flags modulesize=n4;param DepNum=depnum|cnum ResEng.Num;
param Kas=nom|acc;
param Num=sg|pl;
param Sex=masc|fem;
}
|