@rsconcept/rstool 0.7.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/CONSTITUENTA.md +1 -1
- package/docs/MODEL-TESTING.md +1 -1
- package/examples/README.md +52 -29
- package/examples/build-chocolate-nim-rsform.ts +311 -0
- package/examples/chocolate-nim/build-rsform.ts +311 -0
- package/examples/chocolate-nim/build-rsmodel.ts +100 -0
- package/examples/chocolate-nim/constants.ts +10 -0
- package/examples/chocolate-nim/rsform-session.json +778 -0
- package/examples/chocolate-nim/rsmodel-session.json +802 -0
- package/examples/expression-bank/bank-constituents.ts +370 -0
- package/examples/expression-bank/build-rsform.ts +59 -0
- package/examples/expression-bank/constants.ts +1 -0
- package/examples/expression-bank/rsform-session.json +4006 -0
- package/examples/{build-kinship-rsform.ts → kinship/build-rsform.ts} +276 -54
- package/examples/{build-kinship-rsmodel.ts → kinship/build-rsmodel.ts} +18 -7
- package/examples/kinship/constants.ts +5 -3
- package/examples/{kinship-rsmodel-session.json → kinship/rsform-session.json} +614 -92
- package/examples/{kinship-rsform-session.json → kinship/rsmodel-session.json} +704 -50
- package/examples/kinship/x1-actions.test.ts +2 -1
- package/examples/movd/build-rsform.ts +325 -0
- package/examples/movd/build-rsmodel.ts +159 -0
- package/examples/movd/constants.ts +18 -0
- package/examples/movd/rsform-session.json +738 -0
- package/examples/movd/rsmodel-session.json +832 -0
- package/examples/{build-sample-rsform.ts → sample/build-rsform.ts} +2 -2
- package/examples/{build-sample-rsmodel.ts → sample/build-rsmodel.ts} +3 -4
- package/examples/template-apply/build-rsform.ts +236 -0
- package/examples/template-apply/constants.ts +13 -0
- package/examples/template-apply/rsform-session.json +333 -0
- package/package.json +12 -6
- package/skills/rstool-helper/EXAMPLES.md +2 -2
- /package/examples/{sample-rsform-session.json → sample/rsform-session.json} +0 -0
- /package/examples/{sample-rsmodel-session.json → sample/rsmodel-session.json} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { writeFile } from 'node:fs/promises';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
|
|
4
|
-
import { CstType, RSToolWrapperClient, type AddOrUpdateConstituentaInput } from '
|
|
4
|
+
import { CstType, RSToolWrapperClient, type AddOrUpdateConstituentaInput } from '../../src';
|
|
5
|
+
|
|
6
|
+
import { DEFAULT_RSFORM_SESSION_PATH } from './constants';
|
|
5
7
|
|
|
6
8
|
async function run() {
|
|
7
9
|
const client = new RSToolWrapperClient({
|
|
@@ -30,8 +32,7 @@ async function run() {
|
|
|
30
32
|
cstType: CstType.STRUCTURED,
|
|
31
33
|
definitionFormal: 'ℬ(X1×X1)',
|
|
32
34
|
term: 'родитель-ребенок',
|
|
33
|
-
convention:
|
|
34
|
-
'Элементы — пары (p, c): p — родитель, c — ребёнок; p, c ∈ X1. Отношение задаётся конвенцией на предметной области.'
|
|
35
|
+
convention: 'Множество пар: родитель и его ребёнок. Порядок в паре задаётся конвенцией на предметной области.'
|
|
35
36
|
}
|
|
36
37
|
},
|
|
37
38
|
{
|
|
@@ -51,8 +52,7 @@ async function run() {
|
|
|
51
52
|
cstType: CstType.FUNCTION,
|
|
52
53
|
definitionFormal: '[ξ∈X1] Pr1(Fi2[{ξ}](S1))',
|
|
53
54
|
term: 'родители данного человека',
|
|
54
|
-
definitionText:
|
|
55
|
-
'Для человека ξ — множество его родителей (первая проекция пар из S1, у которых вторая проекция равна ξ).'
|
|
55
|
+
definitionText: ''
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
{
|
|
@@ -62,8 +62,7 @@ async function run() {
|
|
|
62
62
|
cstType: CstType.FUNCTION,
|
|
63
63
|
definitionFormal: '[σ∈ℬ(X1)] Pr2(Fi1[σ](S1))',
|
|
64
64
|
term: 'дети',
|
|
65
|
-
definitionText:
|
|
66
|
-
'Прямые дети людей из σ: вторая проекция пар из S1, у которых родитель (первая проекция) лежит в σ. Для одного человека ξ используют F6[{ξ}].'
|
|
65
|
+
definitionText: 'Совокупность детей людей, одним из родителей которых является человек из данной группы людей'
|
|
67
66
|
}
|
|
68
67
|
},
|
|
69
68
|
{
|
|
@@ -73,8 +72,7 @@ async function run() {
|
|
|
73
72
|
cstType: CstType.TERM,
|
|
74
73
|
definitionFormal: 'Pr2(S1)',
|
|
75
74
|
term: 'потомки',
|
|
76
|
-
definitionText:
|
|
77
|
-
'Множество людей, выступающих ребёнком хотя бы в одной паре из S1 (симметрично терму «родители»).'
|
|
75
|
+
definitionText: 'Люди, являющиеся ребёнком хотя бы в одном отношении родитель — ребёнок'
|
|
78
76
|
}
|
|
79
77
|
},
|
|
80
78
|
{
|
|
@@ -84,8 +82,7 @@ async function run() {
|
|
|
84
82
|
cstType: CstType.FUNCTION,
|
|
85
83
|
definitionFormal: '[ξ∈X1] R{ρ:=F6[{ξ}] | ρ≠∅ | ρ∪F6[ρ]}',
|
|
86
84
|
term: 'потомки данного человека',
|
|
87
|
-
definitionText:
|
|
88
|
-
'Для человека ξ — транзитивное замыкание отношения «ребёнок»: прямые дети, внуки и все последующие поколения.'
|
|
85
|
+
definitionText: 'Дети людей данного человека или дети людей его потомков'
|
|
89
86
|
}
|
|
90
87
|
},
|
|
91
88
|
{
|
|
@@ -93,10 +90,9 @@ async function run() {
|
|
|
93
90
|
id: 7,
|
|
94
91
|
alias: 'F3',
|
|
95
92
|
cstType: CstType.FUNCTION,
|
|
96
|
-
definitionFormal: '[ξ∈X1]
|
|
93
|
+
definitionFormal: '[ξ∈X1] Pr2(Fi1[F1[ξ]](S1))\\{ξ}',
|
|
97
94
|
term: 'братья и сестры данного человека',
|
|
98
|
-
definitionText:
|
|
99
|
-
'Люди μ ≠ ξ, у которых есть общий с ξ родитель (в т.ч. сводные братья и сестры при одном общем родителе).'
|
|
95
|
+
definitionText: 'Дети людей родителей данного человека за исключением его самого'
|
|
100
96
|
}
|
|
101
97
|
},
|
|
102
98
|
{
|
|
@@ -106,7 +102,7 @@ async function run() {
|
|
|
106
102
|
cstType: CstType.FUNCTION,
|
|
107
103
|
definitionFormal: '[ξ∈X1] D{κ∈X1 | ∃μ∈F3[ξ] κ∈F6[{μ}] & κ∉F2[ξ]}',
|
|
108
104
|
term: 'племянники данного человека',
|
|
109
|
-
definitionText: 'Прямые дети братьев и сестёр
|
|
105
|
+
definitionText: 'Прямые дети братьев и сестёр данного человека, не являющиеся его потомками'
|
|
110
106
|
}
|
|
111
107
|
},
|
|
112
108
|
{
|
|
@@ -116,8 +112,7 @@ async function run() {
|
|
|
116
112
|
cstType: CstType.FUNCTION,
|
|
117
113
|
definitionFormal: '[ξ∈X1] D{ν∈X1 | ∃κ∈F4[ξ] ν∈F6[{κ}]}',
|
|
118
114
|
term: 'внучатые племянники данного человека',
|
|
119
|
-
definitionText:
|
|
120
|
-
'Прямые дети племянников ξ: потомки братьев/сестёр на два поколения ниже (ребёнок племянника или племянницы).'
|
|
115
|
+
definitionText: 'Прямые дети племянников и племянниц данного человека'
|
|
121
116
|
}
|
|
122
117
|
},
|
|
123
118
|
{
|
|
@@ -125,10 +120,9 @@ async function run() {
|
|
|
125
120
|
id: 11,
|
|
126
121
|
alias: 'D3',
|
|
127
122
|
cstType: CstType.TERM,
|
|
128
|
-
definitionFormal: '
|
|
123
|
+
definitionFormal: 'I{ν | ξ:∈X1; ν:∈F5[ξ]}',
|
|
129
124
|
term: 'внучатые племянники',
|
|
130
|
-
definitionText:
|
|
131
|
-
'Множество людей, являющихся внучатыми племянниками или племянницами хотя бы одного человека из X1 (объединение значений F5 по всем ξ).'
|
|
125
|
+
definitionText: 'Люди, являющиеся внучатыми племянниками или племянницами хотя бы одного человека'
|
|
132
126
|
}
|
|
133
127
|
},
|
|
134
128
|
{
|
|
@@ -138,8 +132,7 @@ async function run() {
|
|
|
138
132
|
cstType: CstType.STRUCTURED,
|
|
139
133
|
definitionFormal: 'ℬ(X1)',
|
|
140
134
|
term: 'мужчины',
|
|
141
|
-
convention:
|
|
142
|
-
'Пол устанавливается по документам; каждый индивид из X1 входит ровно в одно из множеств S2 или S3.'
|
|
135
|
+
convention: 'Пол человека устанавливается в соответствии с документами'
|
|
143
136
|
}
|
|
144
137
|
},
|
|
145
138
|
{
|
|
@@ -149,8 +142,7 @@ async function run() {
|
|
|
149
142
|
cstType: CstType.STRUCTURED,
|
|
150
143
|
definitionFormal: 'ℬ(X1)',
|
|
151
144
|
term: 'женщины',
|
|
152
|
-
convention:
|
|
153
|
-
'Пол устанавливается по документам; каждый индивид из X1 входит ровно в одно из множеств S2 или S3.'
|
|
145
|
+
convention: 'Пол человека устанавливается в соответствии с документами'
|
|
154
146
|
}
|
|
155
147
|
},
|
|
156
148
|
{
|
|
@@ -160,7 +152,167 @@ async function run() {
|
|
|
160
152
|
cstType: CstType.AXIOM,
|
|
161
153
|
definitionFormal: 'S2∪S3=X1 & S2∩S3=∅',
|
|
162
154
|
term: 'разбиение людей по полу',
|
|
163
|
-
definitionText: 'Каждый человек
|
|
155
|
+
definitionText: 'Каждый человек является либо мужчиной, либо женщиной'
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
draft: {
|
|
160
|
+
id: 41,
|
|
161
|
+
alias: 'S4',
|
|
162
|
+
cstType: CstType.STRUCTURED,
|
|
163
|
+
definitionFormal: 'ℬ(S2×S3)',
|
|
164
|
+
term: 'браки',
|
|
165
|
+
convention: 'Действующие браки'
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
draft: {
|
|
170
|
+
id: 42,
|
|
171
|
+
alias: 'D4',
|
|
172
|
+
cstType: CstType.TERM,
|
|
173
|
+
definitionFormal: 'Pr1(S4)',
|
|
174
|
+
term: 'мужья',
|
|
175
|
+
definitionText: 'Мужчины, состоящие в браке'
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
draft: {
|
|
180
|
+
id: 43,
|
|
181
|
+
alias: 'D5',
|
|
182
|
+
cstType: CstType.TERM,
|
|
183
|
+
definitionFormal: 'Pr2(S4)',
|
|
184
|
+
term: 'жены',
|
|
185
|
+
definitionText: 'Женщины, состоящие в браке'
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
draft: {
|
|
190
|
+
id: 44,
|
|
191
|
+
alias: 'D6',
|
|
192
|
+
cstType: CstType.TERM,
|
|
193
|
+
definitionFormal: 'Pr1(S4)∪Pr2(S4)',
|
|
194
|
+
term: 'супруги',
|
|
195
|
+
definitionText: 'Люди, состоящие в браке'
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
draft: {
|
|
200
|
+
id: 45,
|
|
201
|
+
alias: 'F31',
|
|
202
|
+
cstType: CstType.FUNCTION,
|
|
203
|
+
definitionFormal: '[σ∈ℬ(X1)] Pr1(Fi2[σ](S4))',
|
|
204
|
+
term: 'мужья группы людей',
|
|
205
|
+
definitionText: 'Мужья людей из данной группы людей'
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
draft: {
|
|
210
|
+
id: 46,
|
|
211
|
+
alias: 'F32',
|
|
212
|
+
cstType: CstType.FUNCTION,
|
|
213
|
+
definitionFormal: '[σ∈ℬ(X1)] Pr2(Fi1[σ](S4))',
|
|
214
|
+
term: 'жены группы людей',
|
|
215
|
+
definitionText: 'Жёны людей из данной группы людей'
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
draft: {
|
|
220
|
+
id: 47,
|
|
221
|
+
alias: 'F33',
|
|
222
|
+
cstType: CstType.FUNCTION,
|
|
223
|
+
definitionFormal: '[σ∈ℬ(X1)] F31[σ]∪F32[σ]',
|
|
224
|
+
term: 'супруги группы людей',
|
|
225
|
+
definitionText: 'Супруги людей из данной группы людей'
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
draft: {
|
|
230
|
+
id: 48,
|
|
231
|
+
alias: 'F34',
|
|
232
|
+
cstType: CstType.FUNCTION,
|
|
233
|
+
definitionFormal: '[α∈D5] debool(F31[{α}])',
|
|
234
|
+
term: 'муж жены',
|
|
235
|
+
definitionText: ''
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
draft: {
|
|
240
|
+
id: 49,
|
|
241
|
+
alias: 'F35',
|
|
242
|
+
cstType: CstType.FUNCTION,
|
|
243
|
+
definitionFormal: '[α∈D4] debool(F32[{α}])',
|
|
244
|
+
term: 'жена мужа',
|
|
245
|
+
definitionText: ''
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
draft: {
|
|
250
|
+
id: 50,
|
|
251
|
+
alias: 'A4',
|
|
252
|
+
cstType: CstType.AXIOM,
|
|
253
|
+
definitionFormal: 'card(S4)=card(D4) & card(S4)=card(D5)',
|
|
254
|
+
term: 'единственность браков',
|
|
255
|
+
definitionText: 'Каждый человек может состоять только в одном браке'
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
draft: {
|
|
260
|
+
id: 51,
|
|
261
|
+
alias: 'D7',
|
|
262
|
+
cstType: CstType.TERM,
|
|
263
|
+
definitionFormal: 'D{ξ∈X1 | card(F33[{ξ}]\\{ξ})>1}',
|
|
264
|
+
term: 'люди в нескольких браках',
|
|
265
|
+
definitionText: 'Люди, у которых больше одного супруга'
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
draft: {
|
|
270
|
+
id: 55,
|
|
271
|
+
alias: 'D10',
|
|
272
|
+
cstType: CstType.TERM,
|
|
273
|
+
definitionFormal: 'D{ξ∈D2 | F33[F1[ξ]]=F1[ξ]}',
|
|
274
|
+
term: 'законные дети',
|
|
275
|
+
definitionText: 'Дети людей, родители которых состоят в браке'
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
draft: {
|
|
280
|
+
id: 56,
|
|
281
|
+
alias: 'D11',
|
|
282
|
+
cstType: CstType.TERM,
|
|
283
|
+
definitionFormal: 'D2\\D10',
|
|
284
|
+
term: 'бастарды',
|
|
285
|
+
definitionText: 'Дети людей, родители которых не состоят в браке'
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
draft: {
|
|
290
|
+
id: 54,
|
|
291
|
+
alias: 'D9',
|
|
292
|
+
cstType: CstType.TERM,
|
|
293
|
+
definitionFormal: 'I{(σ, γ) | σ:∈D4; γ:=F35[σ]}',
|
|
294
|
+
term: 'пары муж — жена',
|
|
295
|
+
definitionText: 'Множество пар, состоящих из мужа и его жены'
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
draft: {
|
|
300
|
+
id: 53,
|
|
301
|
+
alias: 'D8',
|
|
302
|
+
cstType: CstType.TERM,
|
|
303
|
+
definitionFormal: 'X1\\D2',
|
|
304
|
+
term: 'бездетные люди',
|
|
305
|
+
definitionText: 'Люди, не являющиеся детьми людей'
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
draft: {
|
|
310
|
+
id: 52,
|
|
311
|
+
alias: 'A5',
|
|
312
|
+
cstType: CstType.AXIOM,
|
|
313
|
+
definitionFormal: '∀ξ∈X1 ξ∉F2[ξ]',
|
|
314
|
+
term: 'ацикличность родства',
|
|
315
|
+
definitionText: 'Человек не может быть своим потомком'
|
|
164
316
|
}
|
|
165
317
|
},
|
|
166
318
|
{
|
|
@@ -170,7 +322,7 @@ async function run() {
|
|
|
170
322
|
cstType: CstType.FUNCTION,
|
|
171
323
|
definitionFormal: '[ξ∈X1] F1[ξ]∩S2',
|
|
172
324
|
term: 'отцы данного человека',
|
|
173
|
-
definitionText: '
|
|
325
|
+
definitionText: ''
|
|
174
326
|
}
|
|
175
327
|
},
|
|
176
328
|
{
|
|
@@ -180,7 +332,7 @@ async function run() {
|
|
|
180
332
|
cstType: CstType.FUNCTION,
|
|
181
333
|
definitionFormal: '[ξ∈X1] F1[ξ]∩S3',
|
|
182
334
|
term: 'матери данного человека',
|
|
183
|
-
definitionText: '
|
|
335
|
+
definitionText: ''
|
|
184
336
|
}
|
|
185
337
|
},
|
|
186
338
|
{
|
|
@@ -190,7 +342,7 @@ async function run() {
|
|
|
190
342
|
cstType: CstType.AXIOM,
|
|
191
343
|
definitionFormal: '∀ξ∈X1 (card(F7[ξ])≤1 & card(F8[ξ])≤1)',
|
|
192
344
|
term: 'не более одного отца и одной матери',
|
|
193
|
-
definitionText: 'У
|
|
345
|
+
definitionText: 'У ребёнка людей может быть максимум один отец и одна мать'
|
|
194
346
|
}
|
|
195
347
|
},
|
|
196
348
|
{
|
|
@@ -200,7 +352,7 @@ async function run() {
|
|
|
200
352
|
cstType: CstType.FUNCTION,
|
|
201
353
|
definitionFormal: '[ξ∈X1] F3[ξ]∩S2',
|
|
202
354
|
term: 'братья данного человека',
|
|
203
|
-
definitionText: 'Братья и сёстры
|
|
355
|
+
definitionText: 'Братья и сёстры данного человека, являющиеся мужчинами'
|
|
204
356
|
}
|
|
205
357
|
},
|
|
206
358
|
{
|
|
@@ -210,7 +362,7 @@ async function run() {
|
|
|
210
362
|
cstType: CstType.FUNCTION,
|
|
211
363
|
definitionFormal: '[ξ∈X1] F3[ξ]∩S3',
|
|
212
364
|
term: 'сёстры данного человека',
|
|
213
|
-
definitionText: 'Братья и сёстры
|
|
365
|
+
definitionText: 'Братья и сёстры данного человека, являющиеся женщинами'
|
|
214
366
|
}
|
|
215
367
|
},
|
|
216
368
|
{
|
|
@@ -220,7 +372,7 @@ async function run() {
|
|
|
220
372
|
cstType: CstType.FUNCTION,
|
|
221
373
|
definitionFormal: '[ξ∈X1] D{μ∈F3[ξ] | F1[ξ]=F1[μ]}',
|
|
222
374
|
term: 'полнородные братья и сёстры',
|
|
223
|
-
definitionText: 'Сиблинги
|
|
375
|
+
definitionText: 'Сиблинги данного человека, родители которых полностью совпадают с его родителями'
|
|
224
376
|
}
|
|
225
377
|
},
|
|
226
378
|
{
|
|
@@ -230,7 +382,7 @@ async function run() {
|
|
|
230
382
|
cstType: CstType.FUNCTION,
|
|
231
383
|
definitionFormal: '[ξ∈X1] F11[ξ]∩S2',
|
|
232
384
|
term: 'полнородные братья',
|
|
233
|
-
definitionText: 'Полнородные сиблинги
|
|
385
|
+
definitionText: 'Полнородные сиблинги данного человека, являющиеся мужчинами'
|
|
234
386
|
}
|
|
235
387
|
},
|
|
236
388
|
{
|
|
@@ -240,7 +392,7 @@ async function run() {
|
|
|
240
392
|
cstType: CstType.FUNCTION,
|
|
241
393
|
definitionFormal: '[ξ∈X1] F11[ξ]∩S3',
|
|
242
394
|
term: 'полнородные сёстры',
|
|
243
|
-
definitionText: 'Полнородные сиблинги
|
|
395
|
+
definitionText: 'Полнородные сиблинги данного человека, являющиеся женщинами'
|
|
244
396
|
}
|
|
245
397
|
},
|
|
246
398
|
{
|
|
@@ -250,7 +402,7 @@ async function run() {
|
|
|
250
402
|
cstType: CstType.FUNCTION,
|
|
251
403
|
definitionFormal: '[ξ∈X1] D{μ∈F3[ξ] | F7[ξ]=F7[μ] & F8[ξ]≠F8[μ]}',
|
|
252
404
|
term: 'единокровные братья и сёстры',
|
|
253
|
-
definitionText: '
|
|
405
|
+
definitionText: 'Сиблинги, у которых общий отец, но разные матери'
|
|
254
406
|
}
|
|
255
407
|
},
|
|
256
408
|
{
|
|
@@ -260,7 +412,7 @@ async function run() {
|
|
|
260
412
|
cstType: CstType.FUNCTION,
|
|
261
413
|
definitionFormal: '[ξ∈X1] F14[ξ]∩S2',
|
|
262
414
|
term: 'единокровные братья',
|
|
263
|
-
definitionText: 'Единокровные сиблинги
|
|
415
|
+
definitionText: 'Единокровные сиблинги данного человека, являющиеся мужчинами'
|
|
264
416
|
}
|
|
265
417
|
},
|
|
266
418
|
{
|
|
@@ -270,7 +422,7 @@ async function run() {
|
|
|
270
422
|
cstType: CstType.FUNCTION,
|
|
271
423
|
definitionFormal: '[ξ∈X1] F14[ξ]∩S3',
|
|
272
424
|
term: 'единокровные сёстры',
|
|
273
|
-
definitionText: 'Единокровные сиблинги
|
|
425
|
+
definitionText: 'Единокровные сиблинги данного человека, являющиеся женщинами'
|
|
274
426
|
}
|
|
275
427
|
},
|
|
276
428
|
{
|
|
@@ -280,7 +432,7 @@ async function run() {
|
|
|
280
432
|
cstType: CstType.FUNCTION,
|
|
281
433
|
definitionFormal: '[ξ∈X1] D{μ∈F3[ξ] | F7[ξ]≠F7[μ] & F8[ξ]=F8[μ]}',
|
|
282
434
|
term: 'единоутробные братья и сёстры',
|
|
283
|
-
definitionText: '
|
|
435
|
+
definitionText: 'Сиблинги, у которых общая мать, но разные отцы'
|
|
284
436
|
}
|
|
285
437
|
},
|
|
286
438
|
{
|
|
@@ -290,7 +442,7 @@ async function run() {
|
|
|
290
442
|
cstType: CstType.FUNCTION,
|
|
291
443
|
definitionFormal: '[ξ∈X1] F17[ξ]∩S2',
|
|
292
444
|
term: 'единоутробные братья',
|
|
293
|
-
definitionText: 'Единоутробные сиблинги
|
|
445
|
+
definitionText: 'Единоутробные сиблинги данного человека, являющиеся мужчинами'
|
|
294
446
|
}
|
|
295
447
|
},
|
|
296
448
|
{
|
|
@@ -300,7 +452,7 @@ async function run() {
|
|
|
300
452
|
cstType: CstType.FUNCTION,
|
|
301
453
|
definitionFormal: '[ξ∈X1] F17[ξ]∩S3',
|
|
302
454
|
term: 'единоутробные сёстры',
|
|
303
|
-
definitionText: 'Единоутробные сиблинги
|
|
455
|
+
definitionText: 'Единоутробные сиблинги данного человека, являющиеся женщинами'
|
|
304
456
|
}
|
|
305
457
|
},
|
|
306
458
|
{
|
|
@@ -310,7 +462,7 @@ async function run() {
|
|
|
310
462
|
cstType: CstType.FUNCTION,
|
|
311
463
|
definitionFormal: '[ξ∈X1] F6[{ξ}]∩S2',
|
|
312
464
|
term: 'сыновья данного человека',
|
|
313
|
-
definitionText: '
|
|
465
|
+
definitionText: 'Дети людей данного человека, являющиеся мужчинами'
|
|
314
466
|
}
|
|
315
467
|
},
|
|
316
468
|
{
|
|
@@ -320,7 +472,7 @@ async function run() {
|
|
|
320
472
|
cstType: CstType.FUNCTION,
|
|
321
473
|
definitionFormal: '[ξ∈X1] F6[{ξ}]∩S3',
|
|
322
474
|
term: 'дочери данного человека',
|
|
323
|
-
definitionText: '
|
|
475
|
+
definitionText: 'Дети людей данного человека, являющиеся женщинами'
|
|
324
476
|
}
|
|
325
477
|
},
|
|
326
478
|
{
|
|
@@ -330,7 +482,7 @@ async function run() {
|
|
|
330
482
|
cstType: CstType.FUNCTION,
|
|
331
483
|
definitionFormal: '[ξ∈X1] F6[F6[{ξ}]]∩S2',
|
|
332
484
|
term: 'внуки данного человека',
|
|
333
|
-
definitionText: '
|
|
485
|
+
definitionText: 'Сыновья детей данного человека'
|
|
334
486
|
}
|
|
335
487
|
},
|
|
336
488
|
{
|
|
@@ -338,9 +490,9 @@ async function run() {
|
|
|
338
490
|
id: 33,
|
|
339
491
|
alias: 'F23',
|
|
340
492
|
cstType: CstType.FUNCTION,
|
|
341
|
-
definitionFormal: '[ξ∈X1] F6[F6[
|
|
493
|
+
definitionFormal: '[ξ∈X1] F6[F6[bool(ξ)]]∩S3',
|
|
342
494
|
term: 'внучки данного человека',
|
|
343
|
-
definitionText: '
|
|
495
|
+
definitionText: 'Дочери детей данного человека'
|
|
344
496
|
}
|
|
345
497
|
},
|
|
346
498
|
{
|
|
@@ -350,7 +502,7 @@ async function run() {
|
|
|
350
502
|
cstType: CstType.FUNCTION,
|
|
351
503
|
definitionFormal: '[ξ∈X1] D{μ∈X1 | ∃p∈F1[ξ] μ∈F7[p]}',
|
|
352
504
|
term: 'дедушки данного человека',
|
|
353
|
-
definitionText: 'Отцы родителей
|
|
505
|
+
definitionText: 'Отцы родителей данного человека'
|
|
354
506
|
}
|
|
355
507
|
},
|
|
356
508
|
{
|
|
@@ -360,7 +512,7 @@ async function run() {
|
|
|
360
512
|
cstType: CstType.FUNCTION,
|
|
361
513
|
definitionFormal: '[ξ∈X1] D{μ∈X1 | ∃p∈F1[ξ] μ∈F8[p]}',
|
|
362
514
|
term: 'бабушки данного человека',
|
|
363
|
-
definitionText: 'Матери родителей
|
|
515
|
+
definitionText: 'Матери родителей данного человека'
|
|
364
516
|
}
|
|
365
517
|
},
|
|
366
518
|
{
|
|
@@ -370,7 +522,7 @@ async function run() {
|
|
|
370
522
|
cstType: CstType.FUNCTION,
|
|
371
523
|
definitionFormal: '[ξ∈X1] F4[ξ]∩S2',
|
|
372
524
|
term: 'племянники данного человека (мужчины)',
|
|
373
|
-
definitionText: 'Племянники
|
|
525
|
+
definitionText: 'Племянники данного человека, являющиеся мужчинами'
|
|
374
526
|
}
|
|
375
527
|
},
|
|
376
528
|
{
|
|
@@ -380,7 +532,7 @@ async function run() {
|
|
|
380
532
|
cstType: CstType.FUNCTION,
|
|
381
533
|
definitionFormal: '[ξ∈X1] F4[ξ]∩S3',
|
|
382
534
|
term: 'племянницы данного человека',
|
|
383
|
-
definitionText: '
|
|
535
|
+
definitionText: 'Племянницы данного человека'
|
|
384
536
|
}
|
|
385
537
|
},
|
|
386
538
|
{
|
|
@@ -390,7 +542,7 @@ async function run() {
|
|
|
390
542
|
cstType: CstType.FUNCTION,
|
|
391
543
|
definitionFormal: '[ξ∈X1] D{ν∈X1 | ∃p∈F1[ξ] ∃κ∈F3[p] ν∈F6[{κ}]}',
|
|
392
544
|
term: 'двоюродные братья и сёстры',
|
|
393
|
-
definitionText: 'Дети
|
|
545
|
+
definitionText: 'Дети людей сиблингов родителей данного человека'
|
|
394
546
|
}
|
|
395
547
|
},
|
|
396
548
|
{
|
|
@@ -400,7 +552,7 @@ async function run() {
|
|
|
400
552
|
cstType: CstType.FUNCTION,
|
|
401
553
|
definitionFormal: '[ξ∈X1] F28[ξ]∩S2',
|
|
402
554
|
term: 'двоюродные братья',
|
|
403
|
-
definitionText: 'Двоюродные сиблинги
|
|
555
|
+
definitionText: 'Двоюродные сиблинги данного человека, являющиеся мужчинами'
|
|
404
556
|
}
|
|
405
557
|
},
|
|
406
558
|
{
|
|
@@ -410,7 +562,77 @@ async function run() {
|
|
|
410
562
|
cstType: CstType.FUNCTION,
|
|
411
563
|
definitionFormal: '[ξ∈X1] F28[ξ]∩S3',
|
|
412
564
|
term: 'двоюродные сёстры',
|
|
413
|
-
definitionText: 'Двоюродные сиблинги
|
|
565
|
+
definitionText: 'Двоюродные сиблинги данного человека, являющиеся женщинами'
|
|
566
|
+
}
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
draft: {
|
|
570
|
+
id: 57,
|
|
571
|
+
alias: 'D12',
|
|
572
|
+
cstType: CstType.TERM,
|
|
573
|
+
definitionFormal: 'S2∆S3',
|
|
574
|
+
term: 'люди',
|
|
575
|
+
definitionText: 'Совокупность мужчин и женщин как симметрическая разность разбиения по полу'
|
|
576
|
+
}
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
draft: {
|
|
580
|
+
id: 58,
|
|
581
|
+
alias: 'F36',
|
|
582
|
+
cstType: CstType.FUNCTION,
|
|
583
|
+
definitionFormal: '[ξ∈X1] red({F7[ξ], F8[ξ]})',
|
|
584
|
+
term: 'родители данного человека (через red)',
|
|
585
|
+
definitionText: 'Объединение множеств отца и матери данного человека'
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
draft: {
|
|
590
|
+
id: 59,
|
|
591
|
+
alias: 'D13',
|
|
592
|
+
cstType: CstType.TERM,
|
|
593
|
+
definitionFormal: 'Pr2,1(S1)',
|
|
594
|
+
term: 'пары ребёнок — родитель',
|
|
595
|
+
definitionText: 'Все отношения ребёнок — родитель как пары людей'
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
draft: {
|
|
600
|
+
id: 64,
|
|
601
|
+
alias: 'A6',
|
|
602
|
+
cstType: CstType.AXIOM,
|
|
603
|
+
definitionFormal: '(S2⊆X1 & S3⊆X1 & S2∩S3=∅) ⇔ S2∪S3=X1',
|
|
604
|
+
term: 'эквивалентность разбиения по полу',
|
|
605
|
+
definitionText: 'Мужчины и женщины образуют разбиение множества людей'
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
draft: {
|
|
610
|
+
id: 65,
|
|
611
|
+
alias: 'A7',
|
|
612
|
+
cstType: CstType.AXIOM,
|
|
613
|
+
definitionFormal: '∀ξ∈X1 (ξ∈S2 ∨ ξ∈S3)',
|
|
614
|
+
term: 'каждый человек — мужчина или женщина',
|
|
615
|
+
definitionText: ''
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
draft: {
|
|
620
|
+
id: 67,
|
|
621
|
+
alias: 'T1',
|
|
622
|
+
cstType: CstType.STATEMENT,
|
|
623
|
+
definitionFormal: '∀(μ,ν)∈S1 μ∉F2[ν]',
|
|
624
|
+
term: 'родитель не потомок ребёнка',
|
|
625
|
+
definitionText: 'В каждой паре родитель — ребёнок родитель не является потомком ребёнка'
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
draft: {
|
|
630
|
+
id: 69,
|
|
631
|
+
alias: 'T2',
|
|
632
|
+
cstType: CstType.STATEMENT,
|
|
633
|
+
definitionFormal: 'S2⊄S3',
|
|
634
|
+
term: 'не все мужчины — женщины',
|
|
635
|
+
definitionText: 'Множество мужчин не содержится в множестве женщин'
|
|
414
636
|
}
|
|
415
637
|
},
|
|
416
638
|
{
|
|
@@ -420,7 +642,7 @@ async function run() {
|
|
|
420
642
|
cstType: CstType.AXIOM,
|
|
421
643
|
definitionFormal: 'card(X1)≤10',
|
|
422
644
|
term: 'не более десяти человек',
|
|
423
|
-
definitionText: 'В предметной области не более десяти
|
|
645
|
+
definitionText: 'В предметной области не более десяти человек'
|
|
424
646
|
}
|
|
425
647
|
}
|
|
426
648
|
];
|
|
@@ -446,13 +668,13 @@ async function run() {
|
|
|
446
668
|
await client.call('commitStep', {
|
|
447
669
|
sessionId: session.sessionId,
|
|
448
670
|
message:
|
|
449
|
-
'КС «родственные отношения»:
|
|
671
|
+
'КС «родственные отношения»: браки, пол, сиблинги; ∆ ⊆ ⊂ ⊄ ∨ ⇒ ⇔ bool red Pr1,2 Fi1,2 pr1,2, упакованные кванторы'
|
|
450
672
|
});
|
|
451
673
|
|
|
452
674
|
const exported = await client.call<string>('exportSession', {
|
|
453
675
|
sessionId: session.sessionId
|
|
454
676
|
});
|
|
455
|
-
const outputPath = resolve(process.cwd(),
|
|
677
|
+
const outputPath = resolve(process.cwd(), DEFAULT_RSFORM_SESSION_PATH);
|
|
456
678
|
await writeFile(outputPath, exported, 'utf8');
|
|
457
679
|
console.log(`Exported: ${outputPath}`);
|
|
458
680
|
} finally {
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { TUPLE_ID } from '@rsconcept/domain';
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { EvalStatus, RSToolWrapperClient } from '../../src';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import {
|
|
9
|
+
A1_ID,
|
|
10
|
+
D3_ID,
|
|
11
|
+
DEFAULT_RSFORM_SESSION_PATH,
|
|
12
|
+
DEFAULT_RSMODEL_SESSION_PATH,
|
|
13
|
+
S2_ID,
|
|
14
|
+
S3_ID,
|
|
15
|
+
S4_ID
|
|
16
|
+
} from './constants';
|
|
10
17
|
|
|
11
18
|
/**
|
|
12
19
|
* Minimal family so D3 (внучатые племянники) is non-empty:
|
|
@@ -37,6 +44,9 @@ const S1_VALUE = [
|
|
|
37
44
|
[TUPLE_ID, 5, 6]
|
|
38
45
|
] as const;
|
|
39
46
|
|
|
47
|
+
/** S4: браки (муж, жена) — Иван (0) и Мария (1). */
|
|
48
|
+
const S4_VALUE = [[TUPLE_ID, 0, 1]] as const;
|
|
49
|
+
|
|
40
50
|
/** Indices of men and women in the sample family (Иван, Пётр, Олег, Семён — м; остальные — ж). */
|
|
41
51
|
const S2_VALUE = [0, 2, 4, 6] as const;
|
|
42
52
|
const S3_VALUE = [1, 3, 5] as const;
|
|
@@ -48,7 +58,7 @@ async function run() {
|
|
|
48
58
|
|
|
49
59
|
try {
|
|
50
60
|
await client.waitUntilReady();
|
|
51
|
-
const kinshipPath = resolve(process.cwd(),
|
|
61
|
+
const kinshipPath = resolve(process.cwd(), DEFAULT_RSFORM_SESSION_PATH);
|
|
52
62
|
const kinshipJson = await readFile(kinshipPath, 'utf8');
|
|
53
63
|
|
|
54
64
|
const imported = await client.call<{ sessionId: string }>('importSession', {
|
|
@@ -62,7 +72,8 @@ async function run() {
|
|
|
62
72
|
{ target: 1, value: X1_BINDING },
|
|
63
73
|
{ target: 2, value: S1_VALUE },
|
|
64
74
|
{ target: S2_ID, value: S2_VALUE },
|
|
65
|
-
{ target: S3_ID, value: S3_VALUE }
|
|
75
|
+
{ target: S3_ID, value: S3_VALUE },
|
|
76
|
+
{ target: S4_ID, value: S4_VALUE }
|
|
66
77
|
]
|
|
67
78
|
}
|
|
68
79
|
});
|
|
@@ -111,7 +122,7 @@ async function run() {
|
|
|
111
122
|
const exported = await client.call<string>('exportSession', {
|
|
112
123
|
sessionId: imported.sessionId
|
|
113
124
|
});
|
|
114
|
-
const outputPath = resolve(process.cwd(),
|
|
125
|
+
const outputPath = resolve(process.cwd(), DEFAULT_RSMODEL_SESSION_PATH);
|
|
115
126
|
await writeFile(outputPath, exported, 'utf8');
|
|
116
127
|
console.log(`Exported: ${outputPath}`);
|
|
117
128
|
} finally {
|