@rsconcept/domain 1.0.0 → 1.1.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.
Files changed (183) hide show
  1. package/README.md +3 -3
  2. package/dist/analyzer-DlSq3Y3r.d.ts +39 -0
  3. package/dist/arguments-extractor-1acwjQNc.d.ts +38 -0
  4. package/dist/ast-C8sIpKdL.d.ts +51 -0
  5. package/dist/ast-annotations-BiMjkKvz.d.ts +16 -0
  6. package/dist/branded-ZlzIcxzu.d.ts +9 -0
  7. package/dist/calculator-C9W2jkSx.d.ts +39 -0
  8. package/dist/cctext/index.d.ts +2 -1
  9. package/dist/cctext/index.js +2 -42
  10. package/dist/cctext/language-api.d.ts +10 -12
  11. package/dist/cctext/language-api.js +157 -227
  12. package/dist/cctext/language-api.js.map +1 -1
  13. package/dist/cctext/language.d.ts +24 -22
  14. package/dist/cctext/language.js +43 -39
  15. package/dist/cctext/language.js.map +1 -1
  16. package/dist/error-E1LVq_3w.d.ts +87 -0
  17. package/dist/graph/graph.d.ts +2 -62
  18. package/dist/graph/graph.js +339 -382
  19. package/dist/graph/graph.js.map +1 -1
  20. package/dist/graph/index.d.ts +2 -1
  21. package/dist/graph/index.js +2 -384
  22. package/dist/graph-DR8rL2o3.d.ts +64 -0
  23. package/dist/hash-Y8I4c6Al.d.ts +8 -0
  24. package/dist/index-BKZ67WMa.d.ts +1 -0
  25. package/dist/index-BVVgDSdq.d.ts +1 -0
  26. package/dist/index-DmtQKWjk.d.ts +1 -0
  27. package/dist/index-_6s0AX1B.d.ts +1 -0
  28. package/dist/index.d.ts +27 -28
  29. package/dist/index.js +23 -5851
  30. package/dist/lezer-tree-iS7LpLBJ.d.ts +14 -0
  31. package/dist/library/folder-tree.d.ts +22 -20
  32. package/dist/library/folder-tree.js +108 -130
  33. package/dist/library/folder-tree.js.map +1 -1
  34. package/dist/library/index.d.ts +8 -17
  35. package/dist/library/index.js +7 -2800
  36. package/dist/library/library-api.d.ts +3 -1
  37. package/dist/library/library-api.js +9 -8
  38. package/dist/library/library-api.js.map +1 -1
  39. package/dist/library/library.d.ts +2 -56
  40. package/dist/library/library.js +23 -19
  41. package/dist/library/library.js.map +1 -1
  42. package/dist/library/oss-api.d.ts +26 -37
  43. package/dist/library/oss-api.js +257 -1096
  44. package/dist/library/oss-api.js.map +1 -1
  45. package/dist/library/oss-layout-api.d.ts +28 -28
  46. package/dist/library/oss-layout-api.js +239 -316
  47. package/dist/library/oss-layout-api.js.map +1 -1
  48. package/dist/library/oss-layout.d.ts +2 -25
  49. package/dist/library/oss-layout.js +1 -1
  50. package/dist/library/oss.d.ts +87 -89
  51. package/dist/library/oss.js +27 -26
  52. package/dist/library/oss.js.map +1 -1
  53. package/dist/library/rsengine.d.ts +100 -106
  54. package/dist/library/rsengine.js +439 -2599
  55. package/dist/library/rsengine.js.map +1 -1
  56. package/dist/library/rsform-api.d.ts +11 -16
  57. package/dist/library/rsform-api.js +313 -825
  58. package/dist/library/rsform-api.js.map +1 -1
  59. package/dist/library/rsform.d.ts +159 -167
  60. package/dist/library/rsform.js +29 -28
  61. package/dist/library/rsform.js.map +1 -1
  62. package/dist/library/rsmodel-api.d.ts +8 -15
  63. package/dist/library/rsmodel-api.js +172 -813
  64. package/dist/library/rsmodel-api.js.map +1 -1
  65. package/dist/library/rsmodel.d.ts +27 -33
  66. package/dist/library/rsmodel.js +16 -23
  67. package/dist/library/rsmodel.js.map +1 -1
  68. package/dist/library/structure-planner.d.ts +20 -26
  69. package/dist/library/structure-planner.js +106 -474
  70. package/dist/library/structure-planner.js.map +1 -1
  71. package/dist/library-CYun28Xz.d.ts +58 -0
  72. package/dist/oss-layout-3glgAqfn.d.ts +27 -0
  73. package/dist/parser-Bwd8LxJ1.d.ts +7 -0
  74. package/dist/parsing/ast.d.ts +2 -49
  75. package/dist/parsing/ast.js +68 -76
  76. package/dist/parsing/ast.js.map +1 -1
  77. package/dist/parsing/index.d.ts +3 -3
  78. package/dist/parsing/index.js +3 -141
  79. package/dist/parsing/lezer-tree.d.ts +2 -13
  80. package/dist/parsing/lezer-tree.js +50 -43
  81. package/dist/parsing/lezer-tree.js.map +1 -1
  82. package/dist/rslang/api.d.ts +9 -14
  83. package/dist/rslang/api.js +114 -827
  84. package/dist/rslang/api.js.map +1 -1
  85. package/dist/rslang/ast-annotations.d.ts +2 -18
  86. package/dist/rslang/ast-annotations.js +34 -45
  87. package/dist/rslang/ast-annotations.js.map +1 -1
  88. package/dist/rslang/error.d.ts +2 -85
  89. package/dist/rslang/error.js +88 -150
  90. package/dist/rslang/error.js.map +1 -1
  91. package/dist/rslang/eval/calculator.d.ts +2 -43
  92. package/dist/rslang/eval/calculator.js +81 -1636
  93. package/dist/rslang/eval/calculator.js.map +1 -1
  94. package/dist/rslang/eval/evaluation-cache.d.ts +22 -26
  95. package/dist/rslang/eval/evaluation-cache.js +168 -287
  96. package/dist/rslang/eval/evaluation-cache.js.map +1 -1
  97. package/dist/rslang/eval/evaluator.d.ts +59 -63
  98. package/dist/rslang/eval/evaluator.js +602 -1509
  99. package/dist/rslang/eval/evaluator.js.map +1 -1
  100. package/dist/rslang/eval/value-api.d.ts +2 -48
  101. package/dist/rslang/eval/value-api.js +2 -490
  102. package/dist/rslang/eval/value.d.ts +2 -36
  103. package/dist/rslang/eval/value.js +2 -118
  104. package/dist/rslang/index.d.ts +14 -17
  105. package/dist/rslang/index.js +12 -4314
  106. package/dist/rslang/labels.d.ts +6 -6
  107. package/dist/rslang/labels.js +139 -305
  108. package/dist/rslang/labels.js.map +1 -1
  109. package/dist/rslang/parser/expression-generator.d.ts +5 -5
  110. package/dist/rslang/parser/expression-generator.js +248 -446
  111. package/dist/rslang/parser/expression-generator.js.map +1 -1
  112. package/dist/rslang/parser/normalize.d.ts +4 -8
  113. package/dist/rslang/parser/normalize.js +286 -481
  114. package/dist/rslang/parser/normalize.js.map +1 -1
  115. package/dist/rslang/parser/parser.d.ts +2 -5
  116. package/dist/rslang/parser/parser.js +30 -21
  117. package/dist/rslang/parser/parser.js.map +1 -1
  118. package/dist/rslang/parser/parser.terms.d.ts +43 -41
  119. package/dist/rslang/parser/parser.terms.js +44 -83
  120. package/dist/rslang/parser/parser.terms.js.map +1 -1
  121. package/dist/rslang/parser/syntax-errors.d.ts +5 -8
  122. package/dist/rslang/parser/syntax-errors.js +113 -382
  123. package/dist/rslang/parser/syntax-errors.js.map +1 -1
  124. package/dist/rslang/parser/token.d.ts +2 -79
  125. package/dist/rslang/parser/token.js +81 -93
  126. package/dist/rslang/parser/token.js.map +1 -1
  127. package/dist/rslang/semantic/analyzer.d.ts +2 -39
  128. package/dist/rslang/semantic/analyzer.js +186 -2600
  129. package/dist/rslang/semantic/analyzer.js.map +1 -1
  130. package/dist/rslang/semantic/arguments-extractor.d.ts +2 -42
  131. package/dist/rslang/semantic/arguments-extractor.js +202 -361
  132. package/dist/rslang/semantic/arguments-extractor.js.map +1 -1
  133. package/dist/rslang/semantic/type-auditor.d.ts +64 -68
  134. package/dist/rslang/semantic/type-auditor.js +594 -1564
  135. package/dist/rslang/semantic/type-auditor.js.map +1 -1
  136. package/dist/rslang/semantic/typification-api.d.ts +4 -7
  137. package/dist/rslang/semantic/typification-api.js +162 -303
  138. package/dist/rslang/semantic/typification-api.js.map +1 -1
  139. package/dist/rslang/semantic/typification-parser.d.ts +2 -12
  140. package/dist/rslang/semantic/typification-parser.js +165 -219
  141. package/dist/rslang/semantic/typification-parser.js.map +1 -1
  142. package/dist/rslang/semantic/typification.d.ts +2 -119
  143. package/dist/rslang/semantic/typification.js +66 -52
  144. package/dist/rslang/semantic/typification.js.map +1 -1
  145. package/dist/rslang/semantic/value-auditor.d.ts +32 -38
  146. package/dist/rslang/semantic/value-auditor.js +206 -518
  147. package/dist/rslang/semantic/value-auditor.js.map +1 -1
  148. package/dist/rslang/semantic/value-class.d.ts +2 -10
  149. package/dist/rslang/semantic/value-class.js +8 -7
  150. package/dist/rslang/semantic/value-class.js.map +1 -1
  151. package/dist/rslang/typification-graph.d.ts +2 -33
  152. package/dist/rslang/typification-graph.js +94 -306
  153. package/dist/rslang/typification-graph.js.map +1 -1
  154. package/dist/shared/branded.d.ts +2 -7
  155. package/dist/shared/branded.js +1 -1
  156. package/dist/shared/hash.d.ts +2 -6
  157. package/dist/shared/hash.js +13 -13
  158. package/dist/shared/hash.js.map +1 -1
  159. package/dist/shared/index.d.ts +3 -2
  160. package/dist/shared/index.js +2 -18
  161. package/dist/token-DeXAmzwr.d.ts +81 -0
  162. package/dist/typification-Dk-fisgO.d.ts +120 -0
  163. package/dist/typification-graph-6HcZ-rKH.d.ts +30 -0
  164. package/dist/typification-parser-BBVx1RxP.d.ts +13 -0
  165. package/dist/value-B8UtCqaK.js +366 -0
  166. package/dist/value-B8UtCqaK.js.map +1 -0
  167. package/dist/value-CTjX6825.d.ts +33 -0
  168. package/dist/value-api-Bw-SgaYY.d.ts +49 -0
  169. package/dist/value-class-CNI-lqXJ.d.ts +12 -0
  170. package/package.json +8 -8
  171. package/src/library/rsform-api.test.ts +24 -0
  172. package/src/library/rsform-api.ts +12 -4
  173. package/dist/cctext/index.js.map +0 -1
  174. package/dist/graph/index.js.map +0 -1
  175. package/dist/index.js.map +0 -1
  176. package/dist/library/index.js.map +0 -1
  177. package/dist/library/oss-layout.js.map +0 -1
  178. package/dist/parsing/index.js.map +0 -1
  179. package/dist/rslang/eval/value-api.js.map +0 -1
  180. package/dist/rslang/eval/value.js.map +0 -1
  181. package/dist/rslang/index.js.map +0 -1
  182. package/dist/shared/branded.js.map +0 -1
  183. package/dist/shared/index.js.map +0 -1
@@ -1,879 +1,367 @@
1
- // src/rslang/error.ts
2
- var RSErrorCode = {
3
- unknownSyntax: 33792,
4
- // 33792
5
- missingParenthesis: 33798,
6
- // 33798
7
- missingCurlyBrace: 33799,
8
- // 33799
9
- missingSquareBracket: 33800,
10
- // 33800
11
- bracketMismatch: 33801,
12
- // 33801
13
- doubleParenthesis: 33802,
14
- // 33802
15
- missingOpenBracket: 33803,
16
- // 33803
17
- expectedLocal: 33813,
18
- // 33813
19
- expectedType: 33814,
20
- // 33814
21
- localDoubleDeclare: 10241,
22
- // 10241
23
- localNotUsed: 10242,
24
- // 10242
25
- localUndeclared: 34817,
26
- // 34817
27
- localShadowing: 34818,
28
- // 34818
29
- typesNotEqual: 34819,
30
- // 34819
31
- globalNotTyped: 34820,
32
- // 34820
33
- invalidDecart: 34821,
34
- // 34821
35
- invalidBoolean: 34822,
36
- // 34822
37
- invalidTypeOperation: 34823,
38
- // 34823
39
- invalidCard: 34824,
40
- // 34824
41
- invalidDebool: 34825,
42
- // 34825
43
- globalFuncWithoutArgs: 34827,
44
- // 34827
45
- invalidReduce: 34832,
46
- // 34832
47
- invalidProjectionTuple: 34833,
48
- // 34833
49
- invalidProjectionSet: 34834,
50
- // 34834
51
- invalidEnumeration: 34835,
52
- // 34835
53
- invalidCortegeDeclare: 34836,
54
- // 34836
55
- localOutOfScope: 34837,
56
- // 34837
57
- invalidElementPredicate: 34838,
58
- // 34838
59
- invalidEmptySetUsage: 34839,
60
- // 34839
61
- invalidArgsArity: 34840,
62
- // 34840
63
- invalidArgumentType: 34841,
64
- // 34841
65
- globalStructure: 34844,
66
- // 34844
67
- radicalUsage: 34849,
68
- // 34849
69
- invalidFilterArgumentType: 34850,
70
- // 34850
71
- invalidFilterArity: 34851,
72
- // 34851
73
- arithmeticNotSupported: 34852,
74
- // 34852
75
- typesNotCompatible: 34853,
76
- // 34853
77
- orderingNotSupported: 34854,
78
- // 34854
79
- expectedLogic: 34855,
80
- // 34855
81
- expectedSetexpr: 34856,
82
- // 34856
83
- invalidArgumentCortegeDeclare: 34857,
84
- // 34857
85
- globalNoValue: 34880,
86
- // 34880
87
- invalidPropertyUsage: 34881,
88
- // 34881
89
- // Value evaluation (runtime)
90
- calcUnknownError: 33024,
91
- // 35328
92
- setOverflow: 33025,
93
- // 35329
94
- booleanBaseLimit: 33026,
95
- // 35330
96
- calcGlobalMissing: 33027,
97
- // 35331
98
- iterationsLimit: 33028,
99
- // 35332
100
- calcInvalidDebool: 33029,
101
- // 35333
102
- iterateInfinity: 33030,
103
- // 35334
104
- calculationNotSupported: 33031,
105
- // 35335
106
- cstEmptyDerived: 34913,
107
- // 34913
108
- definitionNotAllowed: 34914
109
- // 34914
1
+ import { RSErrorCode } from "../rslang/error.js";
2
+ import { TypeClass, TypeID, basic, bool, constant, isTypification } from "../rslang/semantic/typification.js";
3
+ import { applyPath } from "../rslang/semantic/typification-api.js";
4
+ import { ValueClass } from "../rslang/semantic/value-class.js";
5
+ import "../rslang/index.js";
6
+ import { CstClass, CstStatus, CstType } from "./rsform.js";
7
+ //#region src/library/rsform-api.ts
8
+ /**
9
+ * Module: API for formal representation for systems of concepts.
10
+ */
11
+ /** Record of {@link CstType} prefixes. */
12
+ const CST_TYPE_PREFIX = {
13
+ [CstType.NOMINAL]: "N",
14
+ [CstType.BASE]: "X",
15
+ [CstType.CONSTANT]: "C",
16
+ [CstType.STRUCTURED]: "S",
17
+ [CstType.AXIOM]: "A",
18
+ [CstType.TERM]: "D",
19
+ [CstType.FUNCTION]: "F",
20
+ [CstType.PREDICATE]: "P",
21
+ [CstType.STATEMENT]: "T"
110
22
  };
111
-
112
- // src/parsing/ast.ts
113
- var TOKEN_ERROR = 0;
114
-
115
- // src/rslang/parser/token.ts
116
- var TokenID = {
117
- // Global, local IDs and literals
118
- ERROR: TOKEN_ERROR,
119
- ID_LOCAL: 258,
120
- ID_GLOBAL: 259,
121
- ID_FUNCTION: 260,
122
- ID_PREDICATE: 261,
123
- ID_RADICAL: 262,
124
- LIT_INTEGER: 263,
125
- LIT_WHOLE_NUMBERS: 264,
126
- LIT_EMPTYSET: 265,
127
- // Arithmetic
128
- PLUS: 266,
129
- MINUS: 267,
130
- MULTIPLY: 268,
131
- // Integer predicate symbols
132
- GREATER: 269,
133
- LESSER: 270,
134
- GREATER_OR_EQ: 271,
135
- LESSER_OR_EQ: 272,
136
- // Equality comparison
137
- EQUAL: 273,
138
- NOTEQUAL: 274,
139
- // Logic predicate symbols
140
- QUANTOR_UNIVERSAL: 275,
141
- QUANTOR_EXISTS: 276,
142
- LOGIC_NOT: 277,
143
- LOGIC_EQUIVALENT: 278,
144
- LOGIC_IMPLICATION: 279,
145
- LOGIC_OR: 280,
146
- LOGIC_AND: 281,
147
- // Set theory predicate symbols
148
- SET_IN: 282,
149
- SET_NOT_IN: 283,
150
- SUBSET: 284,
151
- SUBSET_OR_EQ: 285,
152
- NOT_SUBSET: 286,
153
- // Set theory operators
154
- DECART: 287,
155
- SET_UNION: 288,
156
- SET_INTERSECTION: 289,
157
- SET_MINUS: 290,
158
- SET_SYMMETRIC_MINUS: 291,
159
- BOOLEAN: 292,
160
- // Structure operations
161
- BIGPR: 293,
162
- SMALLPR: 294,
163
- FILTER: 295,
164
- CARD: 296,
165
- BOOL: 297,
166
- DEBOOL: 298,
167
- REDUCE: 299,
168
- // Term constructions prefixes
169
- DECLARATIVE: 300,
170
- RECURSIVE: 301,
171
- IMPERATIVE: 302,
172
- ITERATE: 303,
173
- ASSIGN: 304,
174
- // Punctuation
175
- PUNCTUATION_DEFINE: 305,
176
- PUNCTUATION_STRUCT: 306,
177
- PUNCTUATION_PL: 307,
178
- PUNCTUATION_PR: 308,
179
- PUNCTUATION_CL: 309,
180
- PUNCTUATION_CR: 310,
181
- PUNCTUATION_SL: 311,
182
- PUNCTUATION_SR: 312,
183
- PUNCTUATION_BAR: 313,
184
- PUNCTUATION_COMMA: 314,
185
- PUNCTUATION_SEMICOLON: 315,
186
- // ======= Non-terminal tokens =========
187
- NT_ENUM_DECL: 316,
188
- NT_TUPLE: 317,
189
- NT_ENUMERATION: 318,
190
- NT_TUPLE_DECL: 319,
191
- NT_ARG_DECL: 320,
192
- NT_FUNC_DEFINITION: 321,
193
- NT_ARGUMENTS: 322,
194
- NT_FUNC_CALL: 323,
195
- NT_DECLARATIVE_EXPR: 324,
196
- NT_IMPERATIVE_EXPR: 325,
197
- NT_RECURSIVE_FULL: 326,
198
- NT_RECURSIVE_SHORT: 327,
199
- // ======= Helper tokens ========
200
- INTERRUPT: 328,
201
- END: 329
202
- };
203
-
204
- // src/rslang/semantic/typification.ts
205
- var TypeID = {
206
- anyTypification: 1,
207
- integer: 2,
208
- basic: 3,
209
- tuple: 4,
210
- collection: 5,
211
- logic: 6,
212
- function: 7,
213
- predicate: 8
214
- };
215
- var TypeClass = {
216
- logic: 1,
217
- typification: 2,
218
- function: 3,
219
- predicate: 4
220
- };
221
- var LogicT = { typeID: TypeID.logic };
222
- var IntegerT = {
223
- typeID: TypeID.integer,
224
- isOrdered: true,
225
- isArithmetic: true,
226
- isIntegerCompatible: true
227
- };
228
- var AnyTypificationT = { typeID: TypeID.anyTypification };
229
- var EmptySetT = bool(AnyTypificationT);
230
- function basic(alias) {
231
- return { typeID: TypeID.basic, baseID: alias };
232
- }
233
- function constant(alias) {
234
- return { typeID: TypeID.basic, baseID: alias, isOrdered: true, isArithmetic: true, isIntegerCompatible: true };
235
- }
236
- function bool(base) {
237
- return { typeID: TypeID.collection, base };
238
- }
239
- function component(target, index) {
240
- return target.factors[index - 1] ?? null;
241
- }
242
- function isTypification(type) {
243
- return type?.typeID === TypeID.basic || type?.typeID === TypeID.anyTypification || type?.typeID === TypeID.integer || type?.typeID === TypeID.collection || type?.typeID === TypeID.tuple;
244
- }
245
-
246
- // src/rslang/parser/parser.ts
247
- import { LRParser } from "@lezer/lr";
248
- var parser = LRParser.deserialize({
249
- version: 14,
250
- states: "2lO!sQPOOOVQPO'#CdO$qQPO'#C`O&pQPO'#C`O*bQPO'#C_Q*jQPOOO,TQPO'#CyOVQPO'#CtO,]QPO'#CtOOQO'#Ct'#CtOOQO'#C^'#C^OOQO'#ES'#ESOOQO'#ET'#ETO,bQPO'#DeO,iQPO'#DfO,qQPO'#DhO,vQPO'#DjO,{QPO'#DnO-QQPO'#DrOOQO'#EU'#EUOOQO'#EV'#EVOOQO'#DS'#DSO-VQPO'#DSO-[QPO'#DSOOQO'#EQ'#EQO,TQPO'#DzQOQPOOO-aQPO'#ERO-nQPO,59OO-vQPO'#CeO-{QPO,58xO/lQPO,59tOVQPO,58yOVQPO,58yOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO'#CdOOQO'#C`'#C`OOQO'#C{'#C{O1]QPO,59eO2rQPO,59`OVQPO,59`OOQO'#ER'#ERO5TQPO,5:PO5]QPO,5:UOVQPO,5:QOOQO,5:Q,5:QOVQPO,5:SO,TQPO,5:UOVQPO,5:YO,TQPO,5:^OVQPO,59nOVQPO,59nO5dQPO'#D|OOQO'#D{'#D{O5iQPO,5:fOOQO1G.j1G.jOVQPO,59POOQO1G.d1G.dOOQO1G/`1G/`O5qQPO1G.eO7vQPO1G.eO:zQPO1G/TO=]QPO1G/TO?nQPO1G/TOBPQPO1G/TOGyQPO1G/`OHQQPO1G/`OKpQPO1G/`O! `QPO1G/`O! gQPO1G/`O! nQPO1G/`O! uQPO1G/`O,TQPO,59gOVQPO1G/PO!%aQPO1G.zOOQO1G/k1G/kOVQPO1G/pO!%iQPO1G/lO!%pQPO1G/nO!%xQPO1G/pO!%}QPO1G/tO!&UQPO1G/xO!&ZQPO1G/YO!&cQPO1G/YOVQPO,5:hO,TQPO,5:gOVQPO1G0QO!&jQPO1G.kOOQO1G/R1G/RO!&zQPO7+$kOOQO7+$f7+$fO!(gQPO7+%[OOQO7+%W7+%WO!(nQPO7+%YOVQPO7+%[OVQPO7+%`OVQPO7+%dOOQO7+$t7+$tO!(sQPO1G0SOOQO1G0R1G0RO!(}QPO7+%lO!)UQPO<<HVOVQPO<<HvOVQPO<<HtO!+gQPO<<HvO!+nQPO'#DoO!+xQPO<<HzO!,QQPO<<IOO!,XQPOAN>bO!,`QPOAN>`OVQPOAN>bOVQPO,5:ZOOQOAN>fAN>fOVQPOAN>jOOQOG23|G23|OOQOG23zG23zO!,gQPOG23|O!,nQPO1G/uO!,xQPOG24UOOQOLD)hLD)hOOQOLD)pLD)pOVQPOLD)pO!-SQPO!$'M[OOQO!)9Bv!)9Bv",
251
- stateData: "!-l~O!sOS~OTQOVPOiVOjWOnUOpUOwZOxZOyZOz[O{[O!W]O!Z^O!]_O!``O!aaO!ebO!gfO!hdO!idO!jdO!kdO!ldO!mdO~OkiO~PVOZSX[SX]!wX^!wX_!wX`!wXa!wXb!wXc!wXd!wXe!wXf!wXg!wXr!wXs!wXt!wXu!wX}!wX!O!wX!P!wX!Q!wX!R!wX!S!wX!T!wX!U!wXY!wX!V!wX~O!q!wXU!wXl!wX!_!wXT!wXV!wXi!wXj!wXn!wXp!wXw!wXx!wXy!wXz!wX{!wX!W!wX!Z!wX!]!wX!`!wX!a!wX!e!wX!g!wX!h!wX!i!wX!j!wX!k!wX!l!wX!m!wX!d!wX~P!zOZSX[SX]!xX^!xX_!xX`!xXa!xXb!xXc!xXd!xXe!xXf!xXg!xXr!xXs!xXt!xXu!xX}!xX!O!xX!P!xX!Q!xX!R!xX!S!xX!T!xX!U!xX!q!xXY!xX!V!xXU!xXl!xX!_!xXT!xXV!xXi!xXj!xXn!xXp!xXw!xXx!xXy!xXz!xX{!xX!W!xX!Z!xX!]!xX!`!xX!a!xX!e!xX!g!xX!h!xX!i!xX!j!xX!k!xX!l!xX!m!xX!d!xX~OZpO[pO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~OT!POV!OO~Ok!TO~OT!WO~PYOV!XO!Z^O~Ok!ZO~O!W![O~O!W!]O~O!W!^O~Ok!_O~OV!`O~OY!uX!V!uXl!uX~P*jOU!dOY!uX~OY!eO~OU!fOY!tX]!tX^!tX_!tX`!tXa!tXb!tXc!tXd!tXe!tXf!tXg!tXr!tXs!tXt!tXu!tX}!tX!O!tX!P!tX!Q!tX!R!tX!S!tX!T!tX!U!tX~OU!gOYvX]vX^vX_vX`vXavXbvXcvXdvXevXfvXgvXrvXsvXtvXuvX}vX!OvX!PvX!QvX!RvX!SvX!TvX!UvX~OY!uO]!vO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~Orhashathauha!qhaUhaYha!Vhalha!_haThaVhaihajhanhaphawhaxhayhazha{ha!Wha!Zha!]ha!`ha!aha!eha!gha!hha!iha!jha!kha!lha!mha!dha~P1eOY!eO!V!xO~O]!yO~P!zO]#RO~OY#SOl#TO~O!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P*jO]Ri^Ri_Ri`RiaRibRicRidRieRifRigRirRisRitRiuRi!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P+iOssOttOuuOrqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOttOuuOrqisqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOuuOrqisqitqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOrqisqitqiuqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eO}vO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!P|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!O|i~PDbO!OwO~PDbO}vO!OwO!PxO!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!R|i!S|i!T|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!Q|i~PHXO}vO!OwO!PxO!QyO!T|O!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!S|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!R|i~PKwO!RzO~PKwO!QyO~PHXO}vO!OwO!PxO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~OY!eOl#XO~OU#ZO~P*jOY!eOl#[O~O]#]O~O!_#^O~P*jO[#_O~OY!eOl#`O~OU#`O~P*jOUXiYXi!VXilXi~P*jO]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~PVO!_#eO~P*jOV#fO~OY!pil!pi~P*jO!q!nq~P*jOrmysmytmyumy!qmyUmyYmy!Vmylmy!_myTmyVmyimyjmynmypmywmyxmyymyzmy{my!Wmy!Zmy!]my!`my!amy!emy!gmy!hmy!imy!jmy!kmy!lmy!mmy!dmy~P1eO!_#mO~P*jO!V!cX!d!cX~P*jO!V#oO!d#nO~O!_#pO~P*jO!V#qO~P*jOU#rO~P*jO!V#vO~P*jO!V!ci!d!ci~P*jO!V#wO!_#xO~P*jO!V#zO~P*jO!]!hj!gz{!j!k!l!m!iT!e!a!`!a~",
252
- goto: "1O!zPP!{#y$uPPP&R'VPPPPPPPPPPPPPP#yPPPP'aP(]P#yPPPP(`PPPPP)[PPPPPPPPPP*Y+UP*YP*YPPP*Y,TPP*YPPPPPPP,W,Z,^PPP,d.v/W/W/W0S!phOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRnP!sYOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rSOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xQ!QUS!ai#SQ!|![Q#O!^R#V!u!rROPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x]!PUi![!^!u#SSlP!OX!U]!T!Z!_!sXOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!RU!shOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!peOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRoP!scOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rcOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!Y^R#i#^RjOR!ciQ!biR#b#SQTO[kP]!O!T!Z!_Q!SVQ!gvQ!hpQ!iqQ!jrQ!ksQ!ltQ!muQ!nwQ!oxQ!pyQ!qzQ!r{Q!s|Q!t}Q!z!XQ!}!]Q#Q!`Q#U!eQ#W!vQ#Y!yQ#a#RQ#c#TQ#d#WQ#g#]Q#h#^Q#j#_Q#k#eQ#l#fQ#s#mQ#t#nQ#u#pR#y#xSmP!OQ!V]Q!w!TQ!{!ZR#P!_!seOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!sgOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x",
253
- nodeNames: "\u26A0 Expression Logic Logic_predicates Variable Local ) ( Tuple Expr_enum_min2 , :\u2208 := \u2208 \u2209 \u2286 \u2284 \u2282 > \u2265 < \u2264 \u2260 = Logic_unary \xAC Predicate [ ] Logic_quantor \u2200 Variable_pack \u2203 Logic_binary \u21D4 \u21D2 \u2228 & Setexpr Integer EmptySet IntegerSet Global Radical Setexpr_binary * + - \u222A \\ \u2206 \u2229 \xD7 } { Enumeration Boolean \u212C Filter_expression Filter Declarative | PrefixD PrefixI Imperative Imp_blocks ; PrefixR Recursion Function BigPr SmallPr Card Bool Debool Red Function_decl Arguments Declaration",
254
- maxTerm: 87,
255
- nodeProps: [
256
- ["openedBy", 6, "(", 53, "{"],
257
- ["closedBy", 7, ")", 54, "}"]
258
- ],
259
- skippedNodes: [0],
260
- repeatNodeCount: 0,
261
- tokenData: "6j~R!jX^%spq%svw&hxy&myz&rz{&w{|&||}'R}!O'W!Q![']![!]'e!]!^'x!^!_'}!_!`(S!`!a(X!c!d(^!e!f(^!f!g(l!h!i(t!k!l)h!p!q(^!r!s)m!t!u*a!u!v(^!v!w(^!z!{(^!|!}*q!}#O*v#O#P*{#P#Q+Q#R#S+V#T#U+V#U#V+m#V#W-]#W#X.x#X#d+V#d#e1b#e#f+V#f#g2w#g#o+V#o#p4R#p#q4W#q#r4]#y#z%s$f$g%s$r$s4b%o%p4g5i6S+V#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s% l% m4l%%Y%%Z4q%%[%%]4v%&Y%&Z4{%&]%&^5Q%&_%&`5V%&`%&a5[%&b%&c5a%&c%&d5f%'S%'T5k%'T%'U5p%'U%'V5u%(^%(_5z%(b%(c6P%(c%(d6U%)Q%)R6Z%)S%)T6`%)U%)V6e&FU&FV%s~%xY!s~X^%spq%s#y#z%s$f$g%s#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s&FU&FV%s~&mOu~~&rOV~~&wOU~~&|O}~~'RO!O~~'WOY~~']O!P~~'bPw~!Q![']~'hQ!_!`'n%&b%&c's~'sO[~~'xOZ~~'}O!d~~(SOd~~(XOg~~(^Ob~~(aP!Q![(d~(iPz~!Q![(d~(qP!`~!Q![(d~(wQ!Q![(}#]#^)V~)SP!g~!Q![(}~)YP!R![)]~)bQ!]~|})V!Q![)]~)mO!a~~)pQ!Q![)v#f#g*O~){Pj~!Q![)v~*RP!R![*U~*ZQ!h~|}*O!Q![*U~*fP!e~!Q![*i~*nP{~!Q![*i~*vOy~~*{Ok~~+QO!R~~+VOl~~+[RT~!Q![+e#T#o+V5i6S+V~+jPT~!Q![+e~+rTT~!Q![+e#T#c+V#c#d,R#d#o+V5i6S+V~,WTT~!Q![+e#T#c+V#c#d,g#d#o+V5i6S+V~,lTT~!Q![+e#T#`+V#`#a,{#a#o+V5i6S+V~-SR!k~T~!Q![+e#T#o+V5i6S+V~-bST~!Q![+e#T#U-n#U#o+V5i6S+V~-sTT~!Q![+e#T#f+V#f#g.S#g#o+V5i6S+V~.XTT~!Q![+e#T#W+V#W#X.h#X#o+V5i6S+V~.oR!j~T~!Q![+e#T#o+V5i6S+V~.}TT~!Q![+e#T#X+V#X#Y/^#Y#o+V5i6S+V~/cTT~!Q![+e#T#U+V#U#V/r#V#o+V5i6S+V~/wTT~!Q![+e#T#c+V#c#d0W#d#o+V5i6S+V~0]TT~!Q![+e#T#c+V#c#d0l#d#o+V5i6S+V~0qTT~!Q![+e#T#`+V#`#a1Q#a#o+V5i6S+V~1XR!l~T~!Q![+e#T#o+V5i6S+V~1gTT~!Q![+e#T#f+V#f#g1v#g#o+V5i6S+V~1{ST~!Q!R+e!R![2X#T#o+V5i6S+V~2`Q!i~T~|}2f!Q![2X~2iP!R![2l~2qQ!i~|}2f!Q![2l~2|TT~!Q![+e#T#X+V#X#Y3]#Y#o+V5i6S+V~3bTT~!Q![+e#T#W+V#W#X3q#X#o+V5i6S+V~3xR!m~T~!Q![+e#T#o+V5i6S+V~4WO!W~~4]O!_~~4bO!V~~4gOi~~4lO!U~~4qO!Z~~4vOs~~4{Or~~5QOn~~5VOp~~5[Ox~~5aO!S~~5fO]~~5kO^~~5pOt~~5uO!T~~5zO!Q~~6POf~~6UOe~~6ZOc~~6`Oa~~6eO`~~6jO_~",
262
- tokenizers: [0],
263
- topRules: { "Expression": [0, 1] },
264
- tokenPrec: 2679
265
- });
266
-
267
- // src/rslang/parser/parser.terms.ts
268
- var Local = 5;
269
- var Tuple = 8;
270
- var Predicate = 26;
271
- var Variable_pack = 31;
272
- var Integer = 39;
273
- var EmptySet = 40;
274
- var IntegerSet = 41;
275
- var Global = 42;
276
- var Radical = 43;
277
- var Enumeration = 55;
278
- var Boolean = 56;
279
- var Filter = 59;
280
- var Declarative = 60;
281
- var Imperative = 64;
282
- var Function = 69;
283
- var BigPr = 70;
284
- var SmallPr = 71;
285
- var Card = 72;
286
- var Bool = 73;
287
- var Debool = 74;
288
- var Red = 75;
289
- var Function_decl = 76;
290
- var Arguments = 77;
291
- var Declaration = 78;
292
-
293
- // src/rslang/parser/normalize.ts
294
- var idRecord = {
295
- [Global]: TokenID.ID_GLOBAL,
296
- [Local]: TokenID.ID_LOCAL,
297
- [Radical]: TokenID.ID_RADICAL,
298
- [Function]: TokenID.ID_FUNCTION,
299
- [Predicate]: TokenID.ID_PREDICATE,
300
- [Integer]: TokenID.LIT_INTEGER,
301
- [EmptySet]: TokenID.LIT_EMPTYSET,
302
- [IntegerSet]: TokenID.LIT_WHOLE_NUMBERS,
303
- [Boolean]: TokenID.BOOLEAN,
304
- [BigPr]: TokenID.BIGPR,
305
- [SmallPr]: TokenID.SMALLPR,
306
- [Filter]: TokenID.FILTER,
307
- [Bool]: TokenID.BOOL,
308
- [Debool]: TokenID.DEBOOL,
309
- [Red]: TokenID.REDUCE,
310
- [Card]: TokenID.CARD,
311
- [Enumeration]: TokenID.NT_ENUMERATION,
312
- [Tuple]: TokenID.NT_TUPLE,
313
- [Arguments]: TokenID.NT_ARGUMENTS,
314
- [Declaration]: TokenID.NT_ARG_DECL,
315
- [Function_decl]: TokenID.NT_FUNC_DEFINITION,
316
- [Variable_pack]: TokenID.NT_ENUM_DECL,
317
- [Declarative]: TokenID.NT_DECLARATIVE_EXPR,
318
- [Imperative]: TokenID.NT_IMPERATIVE_EXPR
319
- };
320
-
321
- // src/rslang/labels.ts
322
- var labelTokenRecord = {
323
- [TokenID.DECART]: "\xD7",
324
- [TokenID.PUNCTUATION_PL]: "( )",
325
- [TokenID.PUNCTUATION_SL]: "[ ]",
326
- [TokenID.QUANTOR_UNIVERSAL]: "\u2200",
327
- [TokenID.QUANTOR_EXISTS]: "\u2203",
328
- [TokenID.LOGIC_NOT]: "\xAC",
329
- [TokenID.LOGIC_AND]: "&",
330
- [TokenID.LOGIC_OR]: "\u2228",
331
- [TokenID.LOGIC_IMPLICATION]: "\u21D2",
332
- [TokenID.LOGIC_EQUIVALENT]: "\u21D4",
333
- [TokenID.LIT_EMPTYSET]: "\u2205",
334
- [TokenID.LIT_WHOLE_NUMBERS]: "Z",
335
- [TokenID.MULTIPLY]: "*",
336
- [TokenID.EQUAL]: "=",
337
- [TokenID.NOTEQUAL]: "\u2260",
338
- [TokenID.GREATER_OR_EQ]: "\u2265",
339
- [TokenID.LESSER_OR_EQ]: "\u2264",
340
- [TokenID.SET_IN]: "\u2208",
341
- [TokenID.SET_NOT_IN]: "\u2209",
342
- [TokenID.SUBSET_OR_EQ]: "\u2286",
343
- [TokenID.SUBSET]: "\u2282",
344
- [TokenID.NOT_SUBSET]: "\u2284",
345
- [TokenID.SET_INTERSECTION]: "\u2229",
346
- [TokenID.SET_UNION]: "\u222A",
347
- [TokenID.SET_MINUS]: "\\",
348
- [TokenID.SET_SYMMETRIC_MINUS]: "\u2206",
349
- [TokenID.BOOLEAN]: "\u212C()",
350
- [TokenID.NT_DECLARATIVE_EXPR]: "D{}",
351
- [TokenID.NT_IMPERATIVE_EXPR]: "I{}",
352
- [TokenID.NT_RECURSIVE_FULL]: "R{}",
353
- [TokenID.BIGPR]: "Pr1()",
354
- [TokenID.SMALLPR]: "pr1()",
355
- [TokenID.FILTER]: "Fi1[]()",
356
- [TokenID.REDUCE]: "red()",
357
- [TokenID.CARD]: "card()",
358
- [TokenID.BOOL]: "bool()",
359
- [TokenID.DEBOOL]: "debool()",
360
- [TokenID.ASSIGN]: ":=",
361
- [TokenID.ITERATE]: ":\u2208"
362
- };
363
-
364
- // src/rslang/semantic/typification-api.ts
365
- var TypeIDToClass = {
366
- [TypeID.anyTypification]: TypeClass.typification,
367
- [TypeID.integer]: TypeClass.typification,
368
- [TypeID.basic]: TypeClass.typification,
369
- [TypeID.tuple]: TypeClass.typification,
370
- [TypeID.collection]: TypeClass.typification,
371
- [TypeID.logic]: TypeClass.logic,
372
- [TypeID.function]: TypeClass.function,
373
- [TypeID.predicate]: TypeClass.predicate
374
- };
375
- function applyPath(target, path, index = 0) {
376
- let current = target;
377
- let i = index;
378
- while (i < path.length && current) {
379
- switch (current.typeID) {
380
- case TypeID.anyTypification:
381
- case TypeID.integer:
382
- case TypeID.basic:
383
- return null;
384
- case TypeID.collection:
385
- current = current.base;
386
- i++;
387
- break;
388
- case TypeID.tuple:
389
- current = component(current, path[i]);
390
- if (current === null) {
391
- return null;
392
- }
393
- i++;
394
- break;
395
- }
396
- }
397
- return current;
398
- }
399
-
400
- // src/rslang/semantic/value-class.ts
401
- var ValueClass = {
402
- VALUE: "value",
403
- PROPERTY: "property"
404
- };
405
-
406
- // src/library/rsform.ts
407
- var CstType = {
408
- NOMINAL: "nominal",
409
- BASE: "basic",
410
- STRUCTURED: "structure",
411
- TERM: "term",
412
- AXIOM: "axiom",
413
- FUNCTION: "function",
414
- PREDICATE: "predicate",
415
- CONSTANT: "constant",
416
- STATEMENT: "statement"
417
- };
418
- var CstClass = {
419
- NOMINAL: "nominal",
420
- BASIC: "basic",
421
- DERIVED: "derived",
422
- STATEMENT: "statement",
423
- TEMPLATE: "template"
424
- };
425
- var CstStatus = {
426
- VERIFIED: "verified",
427
- INCORRECT: "incorrect",
428
- INCALCULABLE: "incalculable",
429
- PROPERTY: "property",
430
- UNKNOWN: "unknown"
431
- };
432
-
433
- // src/library/rsform-api.ts
434
- var CST_TYPE_PREFIX = {
435
- [CstType.NOMINAL]: "N",
436
- [CstType.BASE]: "X",
437
- [CstType.CONSTANT]: "C",
438
- [CstType.STRUCTURED]: "S",
439
- [CstType.AXIOM]: "A",
440
- [CstType.TERM]: "D",
441
- [CstType.FUNCTION]: "F",
442
- [CstType.PREDICATE]: "P",
443
- [CstType.STATEMENT]: "T"
444
- };
445
- var CST_TYPE_TO_CLASS = {
446
- [CstType.NOMINAL]: CstClass.NOMINAL,
447
- [CstType.BASE]: CstClass.BASIC,
448
- [CstType.CONSTANT]: CstClass.BASIC,
449
- [CstType.STRUCTURED]: CstClass.BASIC,
450
- [CstType.TERM]: CstClass.DERIVED,
451
- [CstType.FUNCTION]: CstClass.DERIVED,
452
- [CstType.AXIOM]: CstClass.STATEMENT,
453
- [CstType.PREDICATE]: CstClass.DERIVED,
454
- [CstType.STATEMENT]: CstClass.STATEMENT
23
+ /** Record of {@link CstType} to {@link CstClass} mapping. */
24
+ const CST_TYPE_TO_CLASS = {
25
+ [CstType.NOMINAL]: CstClass.NOMINAL,
26
+ [CstType.BASE]: CstClass.BASIC,
27
+ [CstType.CONSTANT]: CstClass.BASIC,
28
+ [CstType.STRUCTURED]: CstClass.BASIC,
29
+ [CstType.TERM]: CstClass.DERIVED,
30
+ [CstType.FUNCTION]: CstClass.DERIVED,
31
+ [CstType.AXIOM]: CstClass.STATEMENT,
32
+ [CstType.PREDICATE]: CstClass.DERIVED,
33
+ [CstType.STATEMENT]: CstClass.STATEMENT
455
34
  };
35
+ /** Checks if {@link Constituenta} is a schema issue. */
456
36
  function isSchemaIssue(cst) {
457
- if (cst.homonyms.length > 0 || cst.formalDuplicates.length > 0 || cst.status === CstStatus.INCORRECT || cst.status === CstStatus.INCALCULABLE || cst.is_type_mismatch) {
458
- return true;
459
- }
460
- if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
461
- if (!cst.convention || !cst.term_resolved) {
462
- return true;
463
- }
464
- }
465
- return false;
37
+ if (cst.homonyms.length > 0 || cst.formalDuplicates.length > 0 || cst.status === CstStatus.INCORRECT || cst.status === CstStatus.INCALCULABLE || cst.is_type_mismatch) return true;
38
+ if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
39
+ if (!cst.convention || !cst.term_resolved) return true;
40
+ }
41
+ return false;
466
42
  }
43
+ /** Infers the status of an expression based on parsing and value information. */
467
44
  function inferStatus(parse, value) {
468
- if (!parse) {
469
- return CstStatus.INCORRECT;
470
- }
471
- if (value === null) {
472
- return CstStatus.INCALCULABLE;
473
- }
474
- if (value === ValueClass.PROPERTY) {
475
- return CstStatus.PROPERTY;
476
- }
477
- return CstStatus.VERIFIED;
45
+ if (!parse) return CstStatus.INCORRECT;
46
+ if (value === null) return CstStatus.INCALCULABLE;
47
+ if (value === ValueClass.PROPERTY) return CstStatus.PROPERTY;
48
+ return CstStatus.VERIFIED;
478
49
  }
50
+ /** Infers type of constituent for a given template and arguments. */
479
51
  function inferTemplatedType(templateType, args) {
480
- if (args.length === 0 || args.some((arg) => !arg.value)) {
481
- return templateType;
482
- } else if (templateType === CstType.PREDICATE) {
483
- return CstType.AXIOM;
484
- } else {
485
- return CstType.TERM;
486
- }
52
+ if (args.length === 0 || args.some((arg) => !arg.value)) return templateType;
53
+ else if (templateType === CstType.PREDICATE) return CstType.AXIOM;
54
+ else return CstType.TERM;
487
55
  }
56
+ /** Checks if given expression is a template. */
488
57
  function inferTemplate(expression) {
489
- const match = expression.match(/R\d+/g);
490
- return (match && match?.length > 0) ?? false;
58
+ const match = expression.match(/R\d+/g);
59
+ return (match && match?.length > 0) ?? false;
491
60
  }
61
+ /** Infers the {@link CstClass} based on the provided {@link CstType} and template status. */
492
62
  function inferClass(type, isTemplate = false) {
493
- if (isTemplate) {
494
- return CstClass.TEMPLATE;
495
- }
496
- return CST_TYPE_TO_CLASS[type];
63
+ if (isTemplate) return CstClass.TEMPLATE;
64
+ return CST_TYPE_TO_CLASS[type];
497
65
  }
66
+ /** Check if {@link Constituenta} is a template or a category. */
498
67
  function isTemplateCst(cst) {
499
- return cst.cst_type === CstType.FUNCTION || cst.cst_type === CstType.PREDICATE || cst.cst_type === CstType.STATEMENT;
68
+ return cst.cst_type === CstType.FUNCTION || cst.cst_type === CstType.PREDICATE || cst.cst_type === CstType.STATEMENT;
500
69
  }
70
+ /** Apply filter based on start {@link Constituenta} type. */
501
71
  function applyFilterCategory(start, items) {
502
- const startIndex = items.indexOf(start);
503
- if (startIndex === -1) {
504
- return [];
505
- }
506
- const nextCategoryIndex = items.findIndex((cst, index) => index > startIndex && cst.cst_type === CstType.STATEMENT);
507
- return items.filter((_, index) => index >= startIndex && (nextCategoryIndex === -1 || index < nextCategoryIndex));
72
+ const startIndex = items.indexOf(start);
73
+ if (startIndex === -1) return [];
74
+ const nextCategoryIndex = items.findIndex((cst, index) => index > startIndex && cst.cst_type === CstType.STATEMENT);
75
+ return items.filter((_, index) => index >= startIndex && (nextCategoryIndex === -1 || index < nextCategoryIndex));
508
76
  }
77
+ /** Prefix for alias indicating {@link CstType}. */
509
78
  function getCstTypePrefix(type) {
510
- return CST_TYPE_PREFIX[type];
79
+ return CST_TYPE_PREFIX[type];
511
80
  }
81
+ /** Guess {@link CstType} from user input hint. */
512
82
  function guessCstType(hint) {
513
- if (hint.length !== 1) {
514
- return null;
515
- }
516
- for (const [type, prefix] of Object.entries(CST_TYPE_PREFIX)) {
517
- if (hint === prefix) {
518
- return type;
519
- }
520
- }
521
- return null;
83
+ if (hint.length !== 1) return null;
84
+ for (const [type, prefix] of Object.entries(CST_TYPE_PREFIX)) if (hint === prefix) return type;
85
+ return null;
522
86
  }
87
+ /** Evaluate if {@link CstType} is basic concept. */
523
88
  function isBasicConcept(type) {
524
- switch (type) {
525
- case CstType.NOMINAL:
526
- case CstType.BASE:
527
- case CstType.CONSTANT:
528
- case CstType.STRUCTURED:
529
- case CstType.AXIOM:
530
- return true;
531
- case CstType.TERM:
532
- case CstType.FUNCTION:
533
- case CstType.PREDICATE:
534
- case CstType.STATEMENT:
535
- return false;
536
- }
537
- }
89
+ switch (type) {
90
+ case CstType.NOMINAL:
91
+ case CstType.BASE:
92
+ case CstType.CONSTANT:
93
+ case CstType.STRUCTURED:
94
+ case CstType.AXIOM: return true;
95
+ case CstType.TERM:
96
+ case CstType.FUNCTION:
97
+ case CstType.PREDICATE:
98
+ case CstType.STATEMENT: return false;
99
+ }
100
+ }
101
+ /** Evaluate if {@link CstType} is base set or constant set. */
538
102
  function isBaseSet(type) {
539
- switch (type) {
540
- case CstType.BASE:
541
- case CstType.CONSTANT:
542
- return true;
543
- case CstType.NOMINAL:
544
- case CstType.STRUCTURED:
545
- case CstType.AXIOM:
546
- case CstType.TERM:
547
- case CstType.FUNCTION:
548
- case CstType.PREDICATE:
549
- case CstType.STATEMENT:
550
- return false;
551
- }
552
- }
103
+ switch (type) {
104
+ case CstType.BASE:
105
+ case CstType.CONSTANT: return true;
106
+ case CstType.NOMINAL:
107
+ case CstType.STRUCTURED:
108
+ case CstType.AXIOM:
109
+ case CstType.TERM:
110
+ case CstType.FUNCTION:
111
+ case CstType.PREDICATE:
112
+ case CstType.STATEMENT: return false;
113
+ }
114
+ }
115
+ /** Evaluate if {@link CstType} is a function. */
553
116
  function isFunctional(type) {
554
- switch (type) {
555
- case CstType.FUNCTION:
556
- case CstType.PREDICATE:
557
- return true;
558
- case CstType.NOMINAL:
559
- case CstType.BASE:
560
- case CstType.CONSTANT:
561
- case CstType.STRUCTURED:
562
- case CstType.AXIOM:
563
- case CstType.TERM:
564
- case CstType.STATEMENT:
565
- return false;
566
- }
567
- }
117
+ switch (type) {
118
+ case CstType.FUNCTION:
119
+ case CstType.PREDICATE: return true;
120
+ case CstType.NOMINAL:
121
+ case CstType.BASE:
122
+ case CstType.CONSTANT:
123
+ case CstType.STRUCTURED:
124
+ case CstType.AXIOM:
125
+ case CstType.TERM:
126
+ case CstType.STATEMENT: return false;
127
+ }
128
+ }
129
+ /** Evaluate if {@link CstType} is logical. */
568
130
  function isLogical(type) {
569
- switch (type) {
570
- case CstType.AXIOM:
571
- case CstType.STATEMENT:
572
- return true;
573
- case CstType.NOMINAL:
574
- case CstType.BASE:
575
- case CstType.CONSTANT:
576
- case CstType.STRUCTURED:
577
- case CstType.TERM:
578
- case CstType.FUNCTION:
579
- case CstType.PREDICATE:
580
- return false;
581
- }
582
- }
131
+ switch (type) {
132
+ case CstType.AXIOM:
133
+ case CstType.STATEMENT: return true;
134
+ case CstType.NOMINAL:
135
+ case CstType.BASE:
136
+ case CstType.CONSTANT:
137
+ case CstType.STRUCTURED:
138
+ case CstType.TERM:
139
+ case CstType.FUNCTION:
140
+ case CstType.PREDICATE: return false;
141
+ }
142
+ }
143
+ /** Evaluate if {@link Constituenta} can be used produce structure. */
583
144
  function canProduceStructure(cst) {
584
- switch (cst.cst_type) {
585
- case CstType.NOMINAL:
586
- case CstType.BASE:
587
- case CstType.CONSTANT:
588
- case CstType.AXIOM:
589
- case CstType.STATEMENT:
590
- case CstType.PREDICATE:
591
- return false;
592
- }
593
- if (!cst.effectiveType) {
594
- return false;
595
- }
596
- if (cst.cst_type === CstType.FUNCTION) {
597
- const result = cst.effectiveType.result;
598
- return typeCanProduceStructure(result);
599
- }
600
- if (!isTypification(cst.effectiveType)) {
601
- return false;
602
- }
603
- return typeCanProduceStructure(cst.effectiveType);
604
- }
145
+ switch (cst.cst_type) {
146
+ case CstType.NOMINAL:
147
+ case CstType.BASE:
148
+ case CstType.CONSTANT:
149
+ case CstType.AXIOM:
150
+ case CstType.STATEMENT:
151
+ case CstType.PREDICATE: return false;
152
+ }
153
+ if (!cst.effectiveType) return false;
154
+ if (cst.cst_type === CstType.FUNCTION) {
155
+ const result = cst.effectiveType.result;
156
+ return typeCanProduceStructure(result);
157
+ }
158
+ if (!isTypification(cst.effectiveType)) return false;
159
+ return typeCanProduceStructure(cst.effectiveType);
160
+ }
161
+ /** Evaluate if {@link CstType} can have manual typification. */
605
162
  function canHaveManualTypification(type) {
606
- switch (type) {
607
- case CstType.STRUCTURED:
608
- case CstType.TERM:
609
- case CstType.FUNCTION:
610
- case CstType.PREDICATE:
611
- return true;
612
- case CstType.NOMINAL:
613
- case CstType.BASE:
614
- case CstType.CONSTANT:
615
- case CstType.AXIOM:
616
- case CstType.STATEMENT:
617
- return false;
618
- }
619
- }
163
+ switch (type) {
164
+ case CstType.STRUCTURED:
165
+ case CstType.TERM:
166
+ case CstType.FUNCTION:
167
+ case CstType.PREDICATE: return true;
168
+ case CstType.NOMINAL:
169
+ case CstType.BASE:
170
+ case CstType.CONSTANT:
171
+ case CstType.AXIOM:
172
+ case CstType.STATEMENT: return false;
173
+ }
174
+ }
175
+ /** Validate alias format for a given {@link CstType} (prefix + digits, min length 2). */
176
+ function validateAliasFormat(alias, type) {
177
+ if (alias.length < 2) return false;
178
+ const prefix = getCstTypePrefix(type);
179
+ if (!alias.startsWith(prefix)) return false;
180
+ if (!/^\d+$/.exec(alias.substring(prefix.length))) return false;
181
+ return true;
182
+ }
183
+ /** Validate new alias against {@link CstType} and {@link RSForm}. */
620
184
  function validateNewAlias(alias, type, schema) {
621
- if (alias.length < 2) {
622
- return false;
623
- }
624
- const prefix = getCstTypePrefix(type);
625
- if (!alias.startsWith(prefix)) {
626
- return false;
627
- }
628
- if (schema.cstByAlias.has(alias)) {
629
- return false;
630
- }
631
- if (!/^\d+$/.exec(alias.substring(prefix.length))) {
632
- return false;
633
- }
634
- return true;
185
+ if (!validateAliasFormat(alias, type)) return false;
186
+ if (schema.cstByAlias.has(alias)) return false;
187
+ return true;
635
188
  }
189
+ /** Generate alias for new {@link Constituenta} of a given {@link CstType} for current {@link RSForm}. */
636
190
  function generateAlias(type, schema, takenAliases = []) {
637
- const prefix = getCstTypePrefix(type);
638
- if (schema.items.length <= 0) {
639
- return `${prefix}1`;
640
- }
641
- let index = schema.items.reduce((prev, cst, index2) => {
642
- if (cst.cst_type !== type) {
643
- return prev;
644
- }
645
- index2 = Number(cst.alias.slice(1 - cst.alias.length)) + 1;
646
- return Math.max(prev, index2);
647
- }, 1);
648
- let alias = `${prefix}${index}`;
649
- while (takenAliases.includes(alias)) {
650
- index = index + 1;
651
- alias = `${prefix}${index}`;
652
- }
653
- return alias;
654
- }
191
+ const prefix = getCstTypePrefix(type);
192
+ if (schema.items.length <= 0) return `${prefix}1`;
193
+ let index = schema.items.reduce((prev, cst, index) => {
194
+ if (cst.cst_type !== type) return prev;
195
+ index = Number(cst.alias.slice(1 - cst.alias.length)) + 1;
196
+ return Math.max(prev, index);
197
+ }, 1);
198
+ let alias = `${prefix}${index}`;
199
+ while (takenAliases.includes(alias)) {
200
+ index = index + 1;
201
+ alias = `${prefix}${index}`;
202
+ }
203
+ return alias;
204
+ }
205
+ /**
206
+ * Id to pass as `insert_after` when creating a new {@link Constituenta} spawned by `targetId`:
207
+ * after the last existing child of that spawner, or after the spawner itself if none.
208
+ */
655
209
  function inferNewSpawnPosition(schema, targetId) {
656
- let last = null;
657
- for (const cst of schema.items) {
658
- if (cst.spawner === targetId) {
659
- last = cst.id;
660
- }
661
- }
662
- return last ?? targetId;
210
+ let last = null;
211
+ for (const cst of schema.items) if (cst.spawner === targetId) last = cst.id;
212
+ return last ?? targetId;
663
213
  }
214
+ /** Sorts library items relevant for InlineSynthesis with specified {@link RSForm}. */
664
215
  function sortItemsForInlineSynthesis(receiver, items) {
665
- const result = items.filter((item) => item.location === receiver.location);
666
- for (const item of items) {
667
- if (item.visible && item.owner === item.owner && !result.includes(item)) {
668
- result.push(item);
669
- }
670
- }
671
- for (const item of items) {
672
- if (item.visible && !result.includes(item)) {
673
- result.push(item);
674
- }
675
- }
676
- for (const item of items) {
677
- if (!result.includes(item)) {
678
- result.push(item);
679
- }
680
- }
681
- return result;
216
+ const result = items.filter((item) => item.location === receiver.location);
217
+ for (const item of items) if (item.visible && item.owner === item.owner && !result.includes(item)) result.push(item);
218
+ for (const item of items) if (item.visible && !result.includes(item)) result.push(item);
219
+ for (const item of items) if (!result.includes(item)) result.push(item);
220
+ return result;
682
221
  }
222
+ /** Remove alias from expression. */
683
223
  function removeAliasReference(expression, alias) {
684
- const result = expression.replaceAll(new RegExp(`\\b${alias}\\b`, "g"), "DEL");
685
- return result === "DEL" ? "" : result;
224
+ const result = expression.replaceAll(new RegExp(`\\b${alias}\\b`, "g"), "DEL");
225
+ return result === "DEL" ? "" : result;
686
226
  }
227
+ /** Add alias to expression. */
687
228
  function addAliasReference(expression, alias) {
688
- return expression + " " + alias;
229
+ return expression + " " + alias;
689
230
  }
231
+ /** Returns expected {@link TypeClass} of formal definition for {@link CstType}. */
690
232
  function typeClassForCstType(cstType) {
691
- switch (cstType) {
692
- case CstType.NOMINAL:
693
- case CstType.BASE:
694
- case CstType.CONSTANT:
695
- case CstType.STRUCTURED:
696
- case CstType.TERM:
697
- return TypeClass.typification;
698
- case CstType.FUNCTION:
699
- return TypeClass.function;
700
- case CstType.PREDICATE:
701
- return TypeClass.predicate;
702
- case CstType.AXIOM:
703
- case CstType.STATEMENT:
704
- return TypeClass.logic;
705
- }
706
- }
233
+ switch (cstType) {
234
+ case CstType.NOMINAL:
235
+ case CstType.BASE:
236
+ case CstType.CONSTANT:
237
+ case CstType.STRUCTURED:
238
+ case CstType.TERM: return TypeClass.typification;
239
+ case CstType.FUNCTION: return TypeClass.function;
240
+ case CstType.PREDICATE: return TypeClass.predicate;
241
+ case CstType.AXIOM:
242
+ case CstType.STATEMENT: return TypeClass.logic;
243
+ }
244
+ }
245
+ /** Checks whether a constituenta type supports formal definitions. */
707
246
  function canHaveFormalDefinition(cstType) {
708
- return cstType !== CstType.BASE && cstType !== CstType.CONSTANT;
247
+ return cstType !== CstType.BASE && cstType !== CstType.CONSTANT;
709
248
  }
249
+ /** Analyze expression for {@link RSForm}. */
710
250
  function getAnalysisFor(expression, cstType, schema, alias) {
711
- if (!canHaveFormalDefinition(cstType)) {
712
- if (expression.trim().length === 0) {
713
- const fallbackAlias = alias && alias.length > 0 ? alias : "X0";
714
- const type = cstType === CstType.BASE ? bool(basic(fallbackAlias)) : bool(constant(fallbackAlias));
715
- return {
716
- success: true,
717
- type,
718
- valueClass: ValueClass.VALUE,
719
- errors: [],
720
- ast: null
721
- };
722
- }
723
- return {
724
- success: false,
725
- type: null,
726
- valueClass: null,
727
- errors: [
728
- {
729
- code: RSErrorCode.definitionNotAllowed,
730
- from: 0,
731
- to: Math.max(0, expression.length - 1)
732
- }
733
- ],
734
- ast: null
735
- };
736
- }
737
- return schema.analyzer.checkFull(expression, {
738
- expected: typeClassForCstType(cstType),
739
- isDomain: cstType === CstType.STRUCTURED
740
- });
741
- }
251
+ if (!canHaveFormalDefinition(cstType)) {
252
+ if (expression.trim().length === 0) {
253
+ const fallbackAlias = alias && alias.length > 0 ? alias : "X0";
254
+ return {
255
+ success: true,
256
+ type: cstType === CstType.BASE ? bool(basic(fallbackAlias)) : bool(constant(fallbackAlias)),
257
+ valueClass: ValueClass.VALUE,
258
+ errors: [],
259
+ ast: null
260
+ };
261
+ }
262
+ return {
263
+ success: false,
264
+ type: null,
265
+ valueClass: null,
266
+ errors: [{
267
+ code: RSErrorCode.definitionNotAllowed,
268
+ from: 0,
269
+ to: Math.max(0, expression.length - 1)
270
+ }],
271
+ ast: null
272
+ };
273
+ }
274
+ return schema.analyzer.checkFull(expression, {
275
+ expected: typeClassForCstType(cstType),
276
+ isDomain: cstType === CstType.STRUCTURED
277
+ });
278
+ }
279
+ /** Calculate statistics for {@link RSForm}. */
742
280
  function calculateSchemaStats(target) {
743
- const items = target.items;
744
- return {
745
- count_all: items.length,
746
- count_crucial: items.reduce((sum, cst) => sum + (cst.crucial ? 1 : 0), 0),
747
- step_complexity: items.reduce((sum, cst) => sum + calculateStepComplexity(cst), 0),
748
- count_problematic: items.reduce((sum, cst) => sum + (isSchemaIssue(cst) ? 1 : 0), 0),
749
- count_homonyms: items.reduce((sum, cst) => sum + (cst.homonyms.length > 0 ? 1 : 0), 0),
750
- count_formal_duplicates: items.reduce((sum, cst) => sum + (cst.formalDuplicates.length > 0 ? 1 : 0), 0),
751
- count_missing_convention: items.reduce((sum, cst) => sum + (isMissingConvention(cst) ? 1 : 0), 0),
752
- count_type_mismatch: items.reduce((sum, cst) => sum + (cst.is_type_mismatch ? 1 : 0), 0),
753
- count_incorrect: items.reduce((sum, cst) => sum + (cst.status === CstStatus.INCORRECT ? 1 : 0), 0),
754
- count_property: items.reduce((sum, cst) => sum + (cst.analysis?.valueClass === ValueClass.PROPERTY ? 1 : 0), 0),
755
- count_incalculable: items.reduce(
756
- (sum, cst) => sum + (cst.analysis?.success && cst.analysis.valueClass === null ? 1 : 0),
757
- 0
758
- ),
759
- count_inherited: items.reduce((sum, cst) => sum + (cst.is_inherited ? 1 : 0), 0),
760
- count_text_term: items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0), 0),
761
- count_definition: items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0), 0),
762
- count_convention: items.reduce((sum, cst) => sum + (isBasicConcept(cst.cst_type) && cst.convention ? 1 : 0), 0),
763
- count_comment: items.reduce((sum, cst) => sum + (!isBasicConcept(cst.cst_type) && !cst.convention ? 1 : 0), 0),
764
- count_base: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0),
765
- count_constant: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0),
766
- count_structured: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0),
767
- count_axiom: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0),
768
- count_term: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0),
769
- count_function: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0),
770
- count_predicate: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0),
771
- count_statement: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STATEMENT ? 1 : 0), 0),
772
- count_nominal: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.NOMINAL ? 1 : 0), 0)
773
- };
774
- }
281
+ const items = target.items;
282
+ return {
283
+ count_all: items.length,
284
+ count_crucial: items.reduce((sum, cst) => sum + (cst.crucial ? 1 : 0), 0),
285
+ step_complexity: items.reduce((sum, cst) => sum + calculateStepComplexity(cst), 0),
286
+ count_problematic: items.reduce((sum, cst) => sum + (isSchemaIssue(cst) ? 1 : 0), 0),
287
+ count_homonyms: items.reduce((sum, cst) => sum + (cst.homonyms.length > 0 ? 1 : 0), 0),
288
+ count_formal_duplicates: items.reduce((sum, cst) => sum + (cst.formalDuplicates.length > 0 ? 1 : 0), 0),
289
+ count_missing_convention: items.reduce((sum, cst) => sum + (isMissingConvention(cst) ? 1 : 0), 0),
290
+ count_type_mismatch: items.reduce((sum, cst) => sum + (cst.is_type_mismatch ? 1 : 0), 0),
291
+ count_incorrect: items.reduce((sum, cst) => sum + (cst.status === CstStatus.INCORRECT ? 1 : 0), 0),
292
+ count_property: items.reduce((sum, cst) => sum + (cst.analysis?.valueClass === ValueClass.PROPERTY ? 1 : 0), 0),
293
+ count_incalculable: items.reduce((sum, cst) => sum + (cst.analysis?.success && cst.analysis.valueClass === null ? 1 : 0), 0),
294
+ count_inherited: items.reduce((sum, cst) => sum + (cst.is_inherited ? 1 : 0), 0),
295
+ count_text_term: items.reduce((sum, cst) => sum + (cst.term_raw ? 1 : 0), 0),
296
+ count_definition: items.reduce((sum, cst) => sum + (cst.definition_raw ? 1 : 0), 0),
297
+ count_convention: items.reduce((sum, cst) => sum + (isBasicConcept(cst.cst_type) && cst.convention ? 1 : 0), 0),
298
+ count_comment: items.reduce((sum, cst) => sum + (!isBasicConcept(cst.cst_type) && !cst.convention ? 1 : 0), 0),
299
+ count_base: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.BASE ? 1 : 0), 0),
300
+ count_constant: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.CONSTANT ? 1 : 0), 0),
301
+ count_structured: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STRUCTURED ? 1 : 0), 0),
302
+ count_axiom: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.AXIOM ? 1 : 0), 0),
303
+ count_term: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.TERM ? 1 : 0), 0),
304
+ count_function: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.FUNCTION ? 1 : 0), 0),
305
+ count_predicate: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.PREDICATE ? 1 : 0), 0),
306
+ count_statement: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.STATEMENT ? 1 : 0), 0),
307
+ count_nominal: items.reduce((sum, cst) => sum + (cst.cst_type === CstType.NOMINAL ? 1 : 0), 0)
308
+ };
309
+ }
310
+ /** Finds {@link Constituenta} by structure path. */
775
311
  function findCstByStructure(schema, target, path) {
776
- for (const cst of schema.items) {
777
- if (cst.spawner === target.id && cst.spawner_path) {
778
- if (cst.spawner_path.length === path.length && cst.spawner_path.every((v, i) => v === path[i])) {
779
- return cst;
780
- }
781
- }
782
- }
783
- return null;
312
+ for (const cst of schema.items) if (cst.spawner === target.id && cst.spawner_path) {
313
+ if (cst.spawner_path.length === path.length && cst.spawner_path.every((v, i) => v === path[i])) return cst;
314
+ }
315
+ return null;
784
316
  }
317
+ /** Retrieves name for piece of target {@link Constituenta} structure. */
785
318
  function getStructureName(schema, target, path) {
786
- const representation = findCstByStructure(schema, target, path);
787
- if (representation) {
788
- return `${representation.alias}: ${representation.term_resolved}`;
789
- }
790
- if (!isTypification(target.effectiveType)) {
791
- return "";
792
- }
793
- const type = applyPath(target.effectiveType, path);
794
- if (type?.typeID === TypeID.basic) {
795
- const cst = schema.cstByAlias.get(type.baseID);
796
- if (cst?.term_resolved) {
797
- return `${cst.alias}: ${cst.term_resolved}`;
798
- }
799
- }
800
- return "";
319
+ const representation = findCstByStructure(schema, target, path);
320
+ if (representation) return `${representation.alias}: ${representation.term_resolved}`;
321
+ if (!isTypification(target.effectiveType)) return "";
322
+ const type = applyPath(target.effectiveType, path);
323
+ if (type?.typeID === TypeID.basic) {
324
+ const cst = schema.cstByAlias.get(type.baseID);
325
+ if (cst?.term_resolved) return `${cst.alias}: ${cst.term_resolved}`;
326
+ }
327
+ return "";
801
328
  }
802
329
  function calculateStepComplexity(cst) {
803
- if (cst.cst_type === CstType.AXIOM || cst.cst_type === CstType.NOMINAL || !isBasicConcept(cst.cst_type)) {
804
- return 0;
805
- }
806
- if (cst.cst_type === CstType.BASE || cst.cst_type === CstType.CONSTANT || !cst.effectiveType) {
807
- return 1;
808
- }
809
- const type = cst.effectiveType;
810
- return calculateTypificationComplexity(type) + 1;
330
+ if (cst.cst_type === CstType.AXIOM || cst.cst_type === CstType.NOMINAL || !isBasicConcept(cst.cst_type)) return 0;
331
+ if (cst.cst_type === CstType.BASE || cst.cst_type === CstType.CONSTANT || !cst.effectiveType) return 1;
332
+ const type = cst.effectiveType;
333
+ return calculateTypificationComplexity(type) + 1;
811
334
  }
812
335
  function calculateTypificationComplexity(type) {
813
- switch (type.typeID) {
814
- case TypeID.basic:
815
- case TypeID.integer:
816
- case TypeID.anyTypification:
817
- return 0;
818
- case TypeID.tuple:
819
- return type.factors.length + type.factors.reduce((sum, factor) => sum + calculateTypificationComplexity(factor), 0);
820
- case TypeID.collection:
821
- if (type.base.typeID === TypeID.tuple) {
822
- let sum = 0;
823
- type.base.factors.forEach((factor) => {
824
- sum += calculateTypificationComplexity(factor);
825
- });
826
- return sum + type.base.factors.length;
827
- } else if (type.base.typeID === TypeID.collection) {
828
- return calculateTypificationComplexity(type.base) + 1;
829
- }
830
- return 0;
831
- }
336
+ switch (type.typeID) {
337
+ case TypeID.basic:
338
+ case TypeID.integer:
339
+ case TypeID.anyTypification: return 0;
340
+ case TypeID.tuple: return type.factors.length + type.factors.reduce((sum, factor) => sum + calculateTypificationComplexity(factor), 0);
341
+ case TypeID.collection:
342
+ if (type.base.typeID === TypeID.tuple) {
343
+ let sum = 0;
344
+ type.base.factors.forEach((factor) => {
345
+ sum += calculateTypificationComplexity(factor);
346
+ });
347
+ return sum + type.base.factors.length;
348
+ } else if (type.base.typeID === TypeID.collection) return calculateTypificationComplexity(type.base) + 1;
349
+ return 0;
350
+ }
832
351
  }
833
352
  function isMissingConvention(cst) {
834
- if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
835
- if (!cst.convention || !cst.term_resolved) {
836
- return true;
837
- }
838
- }
839
- return false;
353
+ if (isBasicConcept(cst.cst_type) && !isLogical(cst.cst_type)) {
354
+ if (!cst.convention || !cst.term_resolved) return true;
355
+ }
356
+ return false;
840
357
  }
358
+ /** Evaluate if {@link Typification} can be used to produce structure. */
841
359
  function typeCanProduceStructure(type) {
842
- if (type.typeID === TypeID.basic || type.typeID === TypeID.integer || type.typeID === TypeID.anyTypification) {
843
- return false;
844
- } else if (type.typeID === TypeID.tuple) {
845
- return true;
846
- } else {
847
- return type.base.typeID !== TypeID.basic && type.base.typeID !== TypeID.integer && type.base.typeID !== TypeID.anyTypification;
848
- }
849
- }
850
- export {
851
- addAliasReference,
852
- applyFilterCategory,
853
- calculateSchemaStats,
854
- canHaveFormalDefinition,
855
- canHaveManualTypification,
856
- canProduceStructure,
857
- findCstByStructure,
858
- generateAlias,
859
- getAnalysisFor,
860
- getCstTypePrefix,
861
- getStructureName,
862
- guessCstType,
863
- inferClass,
864
- inferNewSpawnPosition,
865
- inferStatus,
866
- inferTemplate,
867
- inferTemplatedType,
868
- isBaseSet,
869
- isBasicConcept,
870
- isFunctional,
871
- isLogical,
872
- isSchemaIssue,
873
- isTemplateCst,
874
- removeAliasReference,
875
- sortItemsForInlineSynthesis,
876
- typeClassForCstType,
877
- validateNewAlias
878
- };
360
+ if (type.typeID === TypeID.basic || type.typeID === TypeID.integer || type.typeID === TypeID.anyTypification) return false;
361
+ else if (type.typeID === TypeID.tuple) return true;
362
+ else return type.base.typeID !== TypeID.basic && type.base.typeID !== TypeID.integer && type.base.typeID !== TypeID.anyTypification;
363
+ }
364
+ //#endregion
365
+ export { addAliasReference, applyFilterCategory, calculateSchemaStats, canHaveFormalDefinition, canHaveManualTypification, canProduceStructure, findCstByStructure, generateAlias, getAnalysisFor, getCstTypePrefix, getStructureName, guessCstType, inferClass, inferNewSpawnPosition, inferStatus, inferTemplate, inferTemplatedType, isBaseSet, isBasicConcept, isFunctional, isLogical, isSchemaIssue, isTemplateCst, removeAliasReference, sortItemsForInlineSynthesis, typeClassForCstType, validateAliasFormat, validateNewAlias };
366
+
879
367
  //# sourceMappingURL=rsform-api.js.map