@stevenvo780/st-lang 4.5.2 → 4.6.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 (185) hide show
  1. package/dist/categorical/fin-set.d.ts +39 -0
  2. package/dist/categorical/fin-set.d.ts.map +1 -0
  3. package/dist/categorical/fin-set.js +217 -0
  4. package/dist/categorical/fin-set.js.map +1 -0
  5. package/dist/categorical/free.d.ts +23 -0
  6. package/dist/categorical/free.d.ts.map +1 -0
  7. package/dist/categorical/free.js +168 -0
  8. package/dist/categorical/free.js.map +1 -0
  9. package/dist/categorical/functor.d.ts +40 -0
  10. package/dist/categorical/functor.d.ts.map +1 -0
  11. package/dist/categorical/functor.js +139 -0
  12. package/dist/categorical/functor.js.map +1 -0
  13. package/dist/categorical/index.d.ts +11 -0
  14. package/dist/categorical/index.d.ts.map +1 -0
  15. package/dist/categorical/index.js +33 -0
  16. package/dist/categorical/index.js.map +1 -0
  17. package/dist/categorical/limits.d.ts +64 -0
  18. package/dist/categorical/limits.d.ts.map +1 -0
  19. package/dist/categorical/limits.js +248 -0
  20. package/dist/categorical/limits.js.map +1 -0
  21. package/dist/categorical/monoidal.d.ts +14 -0
  22. package/dist/categorical/monoidal.d.ts.map +1 -0
  23. package/dist/categorical/monoidal.js +148 -0
  24. package/dist/categorical/monoidal.js.map +1 -0
  25. package/dist/categorical/poset.d.ts +14 -0
  26. package/dist/categorical/poset.d.ts.map +1 -0
  27. package/dist/categorical/poset.js +115 -0
  28. package/dist/categorical/poset.js.map +1 -0
  29. package/dist/categorical/types.d.ts +111 -0
  30. package/dist/categorical/types.d.ts.map +1 -0
  31. package/dist/categorical/types.js +15 -0
  32. package/dist/categorical/types.js.map +1 -0
  33. package/dist/csp-hoare/analysis.d.ts +51 -0
  34. package/dist/csp-hoare/analysis.d.ts.map +1 -0
  35. package/dist/csp-hoare/analysis.js +317 -0
  36. package/dist/csp-hoare/analysis.js.map +1 -0
  37. package/dist/csp-hoare/examples.d.ts +33 -0
  38. package/dist/csp-hoare/examples.d.ts.map +1 -0
  39. package/dist/csp-hoare/examples.js +108 -0
  40. package/dist/csp-hoare/examples.js.map +1 -0
  41. package/dist/csp-hoare/index.d.ts +6 -0
  42. package/dist/csp-hoare/index.d.ts.map +1 -0
  43. package/dist/csp-hoare/index.js +50 -0
  44. package/dist/csp-hoare/index.js.map +1 -0
  45. package/dist/csp-hoare/semantics.d.ts +49 -0
  46. package/dist/csp-hoare/semantics.d.ts.map +1 -0
  47. package/dist/csp-hoare/semantics.js +494 -0
  48. package/dist/csp-hoare/semantics.js.map +1 -0
  49. package/dist/csp-hoare/types.d.ts +60 -0
  50. package/dist/csp-hoare/types.d.ts.map +1 -0
  51. package/dist/csp-hoare/types.js +31 -0
  52. package/dist/csp-hoare/types.js.map +1 -0
  53. package/dist/hindley-milner/index.d.ts +7 -0
  54. package/dist/hindley-milner/index.d.ts.map +1 -0
  55. package/dist/hindley-milner/index.js +60 -0
  56. package/dist/hindley-milner/index.js.map +1 -0
  57. package/dist/hindley-milner/infer.d.ts +26 -0
  58. package/dist/hindley-milner/infer.d.ts.map +1 -0
  59. package/dist/hindley-milner/infer.js +278 -0
  60. package/dist/hindley-milner/infer.js.map +1 -0
  61. package/dist/hindley-milner/substitution.d.ts +21 -0
  62. package/dist/hindley-milner/substitution.d.ts.map +1 -0
  63. package/dist/hindley-milner/substitution.js +215 -0
  64. package/dist/hindley-milner/substitution.js.map +1 -0
  65. package/dist/hindley-milner/types.d.ts +84 -0
  66. package/dist/hindley-milner/types.d.ts.map +1 -0
  67. package/dist/hindley-milner/types.js +166 -0
  68. package/dist/hindley-milner/types.js.map +1 -0
  69. package/dist/hott/equality.d.ts +4 -0
  70. package/dist/hott/equality.d.ts.map +1 -0
  71. package/dist/hott/equality.js +108 -0
  72. package/dist/hott/equality.js.map +1 -0
  73. package/dist/hott/index.d.ts +13 -0
  74. package/dist/hott/index.d.ts.map +1 -0
  75. package/dist/hott/index.js +77 -0
  76. package/dist/hott/index.js.map +1 -0
  77. package/dist/hott/infer.d.ts +11 -0
  78. package/dist/hott/infer.d.ts.map +1 -0
  79. package/dist/hott/infer.js +465 -0
  80. package/dist/hott/infer.js.map +1 -0
  81. package/dist/hott/normalize.d.ts +5 -0
  82. package/dist/hott/normalize.d.ts.map +1 -0
  83. package/dist/hott/normalize.js +240 -0
  84. package/dist/hott/normalize.js.map +1 -0
  85. package/dist/hott/path-algebra.d.ts +25 -0
  86. package/dist/hott/path-algebra.d.ts.map +1 -0
  87. package/dist/hott/path-algebra.js +67 -0
  88. package/dist/hott/path-algebra.js.map +1 -0
  89. package/dist/hott/substitute.d.ts +3 -0
  90. package/dist/hott/substitute.d.ts.map +1 -0
  91. package/dist/hott/substitute.js +131 -0
  92. package/dist/hott/substitute.js.map +1 -0
  93. package/dist/hott/types.d.ts +126 -0
  94. package/dist/hott/types.d.ts.map +1 -0
  95. package/dist/hott/types.js +346 -0
  96. package/dist/hott/types.js.map +1 -0
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +48 -3
  100. package/dist/index.js.map +1 -1
  101. package/dist/lemma-synthesis/index.d.ts +124 -0
  102. package/dist/lemma-synthesis/index.d.ts.map +1 -0
  103. package/dist/lemma-synthesis/index.js +640 -0
  104. package/dist/lemma-synthesis/index.js.map +1 -0
  105. package/dist/tactic-dsl/combinators.d.ts +6 -0
  106. package/dist/tactic-dsl/combinators.d.ts.map +1 -0
  107. package/dist/tactic-dsl/combinators.js +98 -0
  108. package/dist/tactic-dsl/combinators.js.map +1 -0
  109. package/dist/tactic-dsl/index.d.ts +39 -0
  110. package/dist/tactic-dsl/index.d.ts.map +1 -0
  111. package/dist/tactic-dsl/index.js +162 -0
  112. package/dist/tactic-dsl/index.js.map +1 -0
  113. package/dist/tactic-dsl/tactics.d.ts +21 -0
  114. package/dist/tactic-dsl/tactics.d.ts.map +1 -0
  115. package/dist/tactic-dsl/tactics.js +536 -0
  116. package/dist/tactic-dsl/tactics.js.map +1 -0
  117. package/dist/tactic-dsl/types.d.ts +54 -0
  118. package/dist/tactic-dsl/types.d.ts.map +1 -0
  119. package/dist/tactic-dsl/types.js +226 -0
  120. package/dist/tactic-dsl/types.js.map +1 -0
  121. package/dist/tests/categorical/categorical.test.d.ts +2 -0
  122. package/dist/tests/categorical/categorical.test.d.ts.map +1 -0
  123. package/dist/tests/categorical/categorical.test.js +300 -0
  124. package/dist/tests/categorical/categorical.test.js.map +1 -0
  125. package/dist/tests/csp-hoare/csp-hoare.test.d.ts +2 -0
  126. package/dist/tests/csp-hoare/csp-hoare.test.d.ts.map +1 -0
  127. package/dist/tests/csp-hoare/csp-hoare.test.js +313 -0
  128. package/dist/tests/csp-hoare/csp-hoare.test.js.map +1 -0
  129. package/dist/tests/hindley-milner/hindley-milner.test.d.ts +2 -0
  130. package/dist/tests/hindley-milner/hindley-milner.test.d.ts.map +1 -0
  131. package/dist/tests/hindley-milner/hindley-milner.test.js +327 -0
  132. package/dist/tests/hindley-milner/hindley-milner.test.js.map +1 -0
  133. package/dist/tests/hott/hott.test.d.ts +2 -0
  134. package/dist/tests/hott/hott.test.d.ts.map +1 -0
  135. package/dist/tests/hott/hott.test.js +271 -0
  136. package/dist/tests/hott/hott.test.js.map +1 -0
  137. package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts +2 -0
  138. package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts.map +1 -0
  139. package/dist/tests/lemma-synthesis/lemma-synthesis.test.js +460 -0
  140. package/dist/tests/lemma-synthesis/lemma-synthesis.test.js.map +1 -0
  141. package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts +2 -0
  142. package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts.map +1 -0
  143. package/dist/tests/tactic-dsl/tactic-dsl.test.js +259 -0
  144. package/dist/tests/tactic-dsl/tactic-dsl.test.js.map +1 -0
  145. package/dist/tests/tptp/bridge.test.d.ts +2 -0
  146. package/dist/tests/tptp/bridge.test.d.ts.map +1 -0
  147. package/dist/tests/tptp/bridge.test.js +154 -0
  148. package/dist/tests/tptp/bridge.test.js.map +1 -0
  149. package/dist/tests/tptp/emitter.test.d.ts +2 -0
  150. package/dist/tests/tptp/emitter.test.d.ts.map +1 -0
  151. package/dist/tests/tptp/emitter.test.js +128 -0
  152. package/dist/tests/tptp/emitter.test.js.map +1 -0
  153. package/dist/tests/tptp/parser.test.d.ts +2 -0
  154. package/dist/tests/tptp/parser.test.d.ts.map +1 -0
  155. package/dist/tests/tptp/parser.test.js +192 -0
  156. package/dist/tests/tptp/parser.test.js.map +1 -0
  157. package/dist/tests/tptp/tokenizer.test.d.ts +2 -0
  158. package/dist/tests/tptp/tokenizer.test.d.ts.map +1 -0
  159. package/dist/tests/tptp/tokenizer.test.js +60 -0
  160. package/dist/tests/tptp/tokenizer.test.js.map +1 -0
  161. package/dist/tptp/ast.d.ts +73 -0
  162. package/dist/tptp/ast.d.ts.map +1 -0
  163. package/dist/tptp/ast.js +35 -0
  164. package/dist/tptp/ast.js.map +1 -0
  165. package/dist/tptp/bridge.d.ts +14 -0
  166. package/dist/tptp/bridge.d.ts.map +1 -0
  167. package/dist/tptp/bridge.js +146 -0
  168. package/dist/tptp/bridge.js.map +1 -0
  169. package/dist/tptp/emitter.d.ts +5 -0
  170. package/dist/tptp/emitter.d.ts.map +1 -0
  171. package/dist/tptp/emitter.js +103 -0
  172. package/dist/tptp/emitter.js.map +1 -0
  173. package/dist/tptp/index.d.ts +7 -0
  174. package/dist/tptp/index.d.ts.map +1 -0
  175. package/dist/tptp/index.js +31 -0
  176. package/dist/tptp/index.js.map +1 -0
  177. package/dist/tptp/parser.d.ts +23 -0
  178. package/dist/tptp/parser.d.ts.map +1 -0
  179. package/dist/tptp/parser.js +440 -0
  180. package/dist/tptp/parser.js.map +1 -0
  181. package/dist/tptp/tokenizer.d.ts +14 -0
  182. package/dist/tptp/tokenizer.d.ts.map +1 -0
  183. package/dist/tptp/tokenizer.js +264 -0
  184. package/dist/tptp/tokenizer.js.map +1 -0
  185. package/package.json +4 -1
@@ -0,0 +1,494 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // CSP Hoare — Semántica operacional (LTS) + alfabetos
4
+ // ============================================================
5
+ // Implementa un sistema de transición etiquetado (LTS) sobre `Process`:
6
+ //
7
+ // • `nextEvents(P)` — eventos visibles ofrecidos inmediatamente (sin
8
+ // resolver elección interna). Para `P ⊓ Q` devolvemos la unión: ambos
9
+ // son alcanzables vía un paso interno (τ).
10
+ // • `step(P, a)` — derivada tras un evento visible. Si `a` no está en
11
+ // `initials(P)`, devuelve `null`. Para los operadores no-deterministas
12
+ // elegimos cualquier rama que ofrezca `a`.
13
+ //
14
+ // Para las semánticas más finas (failures) exponemos `internalResolutions`,
15
+ // que enumera todos los estados estables (sin τ pendientes) alcanzables
16
+ // mediante choices internos. Esto evita explorar la rama "muerta" de un
17
+ // `P ⊓ Q` cuando solo nos interesa qué puede ofrecer una resolución dada.
18
+ // ============================================================
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.SKIP = exports.STOP = void 0;
21
+ exports.prefix = prefix;
22
+ exports.choice = choice;
23
+ exports.internal = internal;
24
+ exports.parallel = parallel;
25
+ exports.interleave = interleave;
26
+ exports.sequence = sequence;
27
+ exports.hide = hide;
28
+ exports.rename = rename;
29
+ exports.recursion = recursion;
30
+ exports.processVar = processVar;
31
+ exports.alphabet = alphabet;
32
+ exports.nextEvents = nextEvents;
33
+ exports.step = step;
34
+ exports.internalResolutions = internalResolutions;
35
+ const types_1 = require("./types");
36
+ // ── Constructores cómodos ───────────────────────────────────
37
+ exports.STOP = { kind: 'stop' };
38
+ exports.SKIP = { kind: 'skip' };
39
+ function prefix(event, cont) {
40
+ return { kind: 'prefix', event, cont };
41
+ }
42
+ function choice(left, right) {
43
+ return { kind: 'choice', left, right };
44
+ }
45
+ function internal(left, right) {
46
+ return { kind: 'internal', left, right };
47
+ }
48
+ function parallel(left, right, alphabet) {
49
+ return { kind: 'parallel', left, right, alphabet };
50
+ }
51
+ function interleave(left, right) {
52
+ return { kind: 'interleave', left, right };
53
+ }
54
+ function sequence(left, right) {
55
+ return { kind: 'sequence', left, right };
56
+ }
57
+ function hide(process, events) {
58
+ return { kind: 'hide', process, events };
59
+ }
60
+ function rename(process, mapping) {
61
+ return { kind: 'rename', process, mapping };
62
+ }
63
+ function recursion(name, body) {
64
+ return { kind: 'recursion', name, body };
65
+ }
66
+ function processVar(name) {
67
+ return { kind: 'var', name };
68
+ }
69
+ // ── Alfabeto sintáctico ─────────────────────────────────────
70
+ /**
71
+ * Conjunto de eventos visibles mencionados sintácticamente en `p`.
72
+ * Los eventos renombrados aportan tanto la fuente como el destino
73
+ * (la fuente puede aparecer en una rama no recorrida, y el destino
74
+ * es lo que el entorno observa).
75
+ */
76
+ function alphabet(p) {
77
+ const out = new Set();
78
+ collectAlphabet(p, out);
79
+ return out;
80
+ }
81
+ function collectAlphabet(p, out) {
82
+ switch (p.kind) {
83
+ case 'stop':
84
+ case 'skip':
85
+ case 'var':
86
+ return;
87
+ case 'prefix':
88
+ out.add(p.event);
89
+ collectAlphabet(p.cont, out);
90
+ return;
91
+ case 'choice':
92
+ case 'internal':
93
+ case 'interleave':
94
+ case 'sequence':
95
+ collectAlphabet(p.left, out);
96
+ collectAlphabet(p.right, out);
97
+ return;
98
+ case 'parallel':
99
+ collectAlphabet(p.left, out);
100
+ collectAlphabet(p.right, out);
101
+ for (const e of p.alphabet)
102
+ out.add(e);
103
+ return;
104
+ case 'hide':
105
+ collectAlphabet(p.process, out);
106
+ for (const e of p.events)
107
+ out.delete(e);
108
+ return;
109
+ case 'rename': {
110
+ const inner = new Set();
111
+ collectAlphabet(p.process, inner);
112
+ for (const e of inner)
113
+ out.add(p.mapping.get(e) ?? e);
114
+ return;
115
+ }
116
+ case 'recursion':
117
+ collectAlphabet(p.body, out);
118
+ return;
119
+ }
120
+ }
121
+ // ── Desplegado de recursión ─────────────────────────────────
122
+ /**
123
+ * Sustituye la variable de proceso `name` por `replacement` en `p`.
124
+ * Es una sustitución por valor (no captura porque las variables son
125
+ * nombres globales del nivel de declaración).
126
+ */
127
+ function substituteVar(p, name, replacement) {
128
+ switch (p.kind) {
129
+ case 'stop':
130
+ case 'skip':
131
+ return p;
132
+ case 'var':
133
+ return p.name === name ? replacement : p;
134
+ case 'prefix':
135
+ return { kind: 'prefix', event: p.event, cont: substituteVar(p.cont, name, replacement) };
136
+ case 'choice':
137
+ return {
138
+ kind: 'choice',
139
+ left: substituteVar(p.left, name, replacement),
140
+ right: substituteVar(p.right, name, replacement),
141
+ };
142
+ case 'internal':
143
+ return {
144
+ kind: 'internal',
145
+ left: substituteVar(p.left, name, replacement),
146
+ right: substituteVar(p.right, name, replacement),
147
+ };
148
+ case 'parallel':
149
+ return {
150
+ kind: 'parallel',
151
+ left: substituteVar(p.left, name, replacement),
152
+ right: substituteVar(p.right, name, replacement),
153
+ alphabet: p.alphabet,
154
+ };
155
+ case 'interleave':
156
+ return {
157
+ kind: 'interleave',
158
+ left: substituteVar(p.left, name, replacement),
159
+ right: substituteVar(p.right, name, replacement),
160
+ };
161
+ case 'sequence':
162
+ return {
163
+ kind: 'sequence',
164
+ left: substituteVar(p.left, name, replacement),
165
+ right: substituteVar(p.right, name, replacement),
166
+ };
167
+ case 'hide':
168
+ return {
169
+ kind: 'hide',
170
+ process: substituteVar(p.process, name, replacement),
171
+ events: p.events,
172
+ };
173
+ case 'rename':
174
+ return {
175
+ kind: 'rename',
176
+ process: substituteVar(p.process, name, replacement),
177
+ mapping: p.mapping,
178
+ };
179
+ case 'recursion':
180
+ // shadowing: si la recursión re-define la misma variable, no entrar.
181
+ if (p.name === name)
182
+ return p;
183
+ return { kind: 'recursion', name: p.name, body: substituteVar(p.body, name, replacement) };
184
+ }
185
+ }
186
+ /** μX.P → P[X := μX.P], un solo paso de desplegado. */
187
+ function unfoldOnce(p) {
188
+ return substituteVar(p.body, p.name, p);
189
+ }
190
+ // ── Eventos iniciales ───────────────────────────────────────
191
+ /**
192
+ * Eventos visibles que `p` puede ofrecer inmediatamente como su primer
193
+ * evento (tomando todas las resoluciones internas). No incluye τ (los
194
+ * eventos ocultos son silenciosos por construcción).
195
+ *
196
+ * Para `SKIP` reportamos el tick `✓` — termina exitosamente.
197
+ */
198
+ function nextEvents(p) {
199
+ const out = new Set();
200
+ collectInitials(p, out, 0);
201
+ return out;
202
+ }
203
+ const MAX_UNFOLD_DEPTH = 64;
204
+ function collectInitials(p, out, depth) {
205
+ if (depth > MAX_UNFOLD_DEPTH)
206
+ return; // protección contra recursión sin guarda
207
+ switch (p.kind) {
208
+ case 'stop':
209
+ return;
210
+ case 'skip':
211
+ out.add(types_1.TICK);
212
+ return;
213
+ case 'prefix':
214
+ out.add(p.event);
215
+ return;
216
+ case 'choice':
217
+ case 'internal':
218
+ collectInitials(p.left, out, depth);
219
+ collectInitials(p.right, out, depth);
220
+ return;
221
+ case 'parallel': {
222
+ const sync = new Set(p.alphabet);
223
+ const li = new Set();
224
+ const ri = new Set();
225
+ collectInitials(p.left, li, depth);
226
+ collectInitials(p.right, ri, depth);
227
+ for (const e of li) {
228
+ if (sync.has(e)) {
229
+ if (ri.has(e))
230
+ out.add(e);
231
+ }
232
+ else {
233
+ out.add(e);
234
+ }
235
+ }
236
+ for (const e of ri) {
237
+ if (sync.has(e)) {
238
+ if (li.has(e))
239
+ out.add(e);
240
+ }
241
+ else {
242
+ out.add(e);
243
+ }
244
+ }
245
+ return;
246
+ }
247
+ case 'interleave': {
248
+ const li = new Set();
249
+ const ri = new Set();
250
+ collectInitials(p.left, li, depth);
251
+ collectInitials(p.right, ri, depth);
252
+ // El tick solo se ofrece cuando ambos terminan; en interleave puro
253
+ // sigue la regla "ambos a la vez".
254
+ for (const e of li)
255
+ if (e !== types_1.TICK)
256
+ out.add(e);
257
+ for (const e of ri)
258
+ if (e !== types_1.TICK)
259
+ out.add(e);
260
+ if (li.has(types_1.TICK) && ri.has(types_1.TICK))
261
+ out.add(types_1.TICK);
262
+ return;
263
+ }
264
+ case 'sequence': {
265
+ const li = new Set();
266
+ collectInitials(p.left, li, depth);
267
+ for (const e of li) {
268
+ if (e !== types_1.TICK)
269
+ out.add(e);
270
+ }
271
+ if (li.has(types_1.TICK)) {
272
+ collectInitials(p.right, out, depth);
273
+ }
274
+ return;
275
+ }
276
+ case 'hide': {
277
+ const hidden = new Set(p.events);
278
+ const inner = new Set();
279
+ collectInitials(p.process, inner, depth);
280
+ // Si algún evento oculto está disponible, hay un τ: avanzamos
281
+ // silenciosamente y recolectamos lo que se ofrece desde ahí.
282
+ let progressed = false;
283
+ for (const e of inner) {
284
+ if (hidden.has(e)) {
285
+ const next = step(p.process, e);
286
+ if (next) {
287
+ collectInitials({ kind: 'hide', process: next, events: p.events }, out, depth + 1);
288
+ progressed = true;
289
+ }
290
+ }
291
+ }
292
+ // Los eventos no ocultos siguen siendo ofrecidos por la versión actual.
293
+ for (const e of inner) {
294
+ if (!hidden.has(e))
295
+ out.add(e);
296
+ }
297
+ // Si solo había τ disponibles pero ninguno avanzó (caso raro), no
298
+ // ofrecemos nada visible — equivale a deadlock visible.
299
+ void progressed;
300
+ return;
301
+ }
302
+ case 'rename': {
303
+ const inner = new Set();
304
+ collectInitials(p.process, inner, depth);
305
+ for (const e of inner) {
306
+ if (e === types_1.TICK)
307
+ out.add(types_1.TICK);
308
+ else
309
+ out.add(p.mapping.get(e) ?? e);
310
+ }
311
+ return;
312
+ }
313
+ case 'recursion':
314
+ collectInitials(unfoldOnce(p), out, depth + 1);
315
+ return;
316
+ case 'var':
317
+ // Variable libre: no hay nada que ofrecer.
318
+ return;
319
+ }
320
+ }
321
+ // ── Paso operacional ────────────────────────────────────────
322
+ /**
323
+ * `step(P, a)` aplica una transición visible etiquetada con `a` y devuelve
324
+ * el continuante, o `null` si `a` no está habilitado. Para procesos no-
325
+ * deterministas elegimos arbitrariamente cualquier rama que habilite `a`
326
+ * (eso es válido para análisis de trazas; para failures inspeccionamos
327
+ * todas las resoluciones aparte).
328
+ */
329
+ function step(p, event) {
330
+ return stepRec(p, event, 0);
331
+ }
332
+ function stepRec(p, event, depth) {
333
+ if (depth > MAX_UNFOLD_DEPTH)
334
+ return null;
335
+ switch (p.kind) {
336
+ case 'stop':
337
+ return null;
338
+ case 'skip':
339
+ return event === types_1.TICK ? exports.STOP : null;
340
+ case 'prefix':
341
+ return event === p.event ? p.cont : null;
342
+ case 'choice':
343
+ case 'internal': {
344
+ const l = stepRec(p.left, event, depth);
345
+ if (l !== null)
346
+ return l;
347
+ return stepRec(p.right, event, depth);
348
+ }
349
+ case 'parallel': {
350
+ const sync = new Set(p.alphabet);
351
+ if (sync.has(event)) {
352
+ const l = stepRec(p.left, event, depth);
353
+ const r = stepRec(p.right, event, depth);
354
+ if (l === null || r === null)
355
+ return null;
356
+ return { kind: 'parallel', left: l, right: r, alphabet: p.alphabet };
357
+ }
358
+ const l = stepRec(p.left, event, depth);
359
+ if (l !== null) {
360
+ return { kind: 'parallel', left: l, right: p.right, alphabet: p.alphabet };
361
+ }
362
+ const r = stepRec(p.right, event, depth);
363
+ if (r !== null) {
364
+ return { kind: 'parallel', left: p.left, right: r, alphabet: p.alphabet };
365
+ }
366
+ return null;
367
+ }
368
+ case 'interleave': {
369
+ if (event === types_1.TICK) {
370
+ // Ambos lados deben aceptar ✓ simultáneamente.
371
+ const l = stepRec(p.left, types_1.TICK, depth);
372
+ const r = stepRec(p.right, types_1.TICK, depth);
373
+ if (l === null || r === null)
374
+ return null;
375
+ return exports.STOP;
376
+ }
377
+ const l = stepRec(p.left, event, depth);
378
+ if (l !== null)
379
+ return { kind: 'interleave', left: l, right: p.right };
380
+ const r = stepRec(p.right, event, depth);
381
+ if (r !== null)
382
+ return { kind: 'interleave', left: p.left, right: r };
383
+ return null;
384
+ }
385
+ case 'sequence': {
386
+ // Si el lado izquierdo puede terminar (ofrece ✓) y aceptamos un
387
+ // evento que sólo está disponible en `right`, transicionamos a `right`.
388
+ const initialsLeft = nextEvents(p.left);
389
+ if (event !== types_1.TICK && initialsLeft.has(event)) {
390
+ const l = stepRec(p.left, event, depth);
391
+ if (l !== null)
392
+ return { kind: 'sequence', left: l, right: p.right };
393
+ }
394
+ if (initialsLeft.has(types_1.TICK)) {
395
+ // P termina silenciosamente y pasamos a Q.
396
+ return stepRec(p.right, event, depth + 1);
397
+ }
398
+ // Reintento por si el evento existía solo en `left` (sin tick).
399
+ if (event !== types_1.TICK) {
400
+ const l = stepRec(p.left, event, depth);
401
+ if (l !== null)
402
+ return { kind: 'sequence', left: l, right: p.right };
403
+ }
404
+ return null;
405
+ }
406
+ case 'hide': {
407
+ const hidden = new Set(p.events);
408
+ if (hidden.has(event))
409
+ return null; // los ocultos no son observables
410
+ // Caso 1: el evento es directamente ofrecido por el cuerpo.
411
+ const direct = stepRec(p.process, event, depth);
412
+ if (direct !== null) {
413
+ return { kind: 'hide', process: direct, events: p.events };
414
+ }
415
+ // Caso 2: hay τ pendientes (eventos ocultos disponibles). Los
416
+ // disparamos silenciosamente y reintentamos.
417
+ const inner = nextEvents(p.process);
418
+ for (const eHidden of hidden) {
419
+ if (inner.has(eHidden)) {
420
+ const after = stepRec(p.process, eHidden, depth);
421
+ if (after !== null) {
422
+ const wrapped = { kind: 'hide', process: after, events: p.events };
423
+ const r = stepRec(wrapped, event, depth + 1);
424
+ if (r !== null)
425
+ return r;
426
+ }
427
+ }
428
+ }
429
+ return null;
430
+ }
431
+ case 'rename': {
432
+ // Encontrar todos los eventos del cuerpo que se renombran a `event`.
433
+ // (Mapping puede ser muchos-a-uno.)
434
+ const sources = [];
435
+ for (const [src, dst] of p.mapping) {
436
+ if (dst === event)
437
+ sources.push(src);
438
+ }
439
+ // Eventos no listados quedan idénticos: si event ∉ values(mapping)
440
+ // y event ∉ keys(mapping), `event` también es candidato literal.
441
+ const isMappedTarget = sources.length > 0;
442
+ const isMappedSource = p.mapping.has(event);
443
+ if (!isMappedSource)
444
+ sources.push(event);
445
+ for (const src of sources) {
446
+ const r = stepRec(p.process, src, depth);
447
+ if (r !== null) {
448
+ return { kind: 'rename', process: r, mapping: p.mapping };
449
+ }
450
+ }
451
+ // Cuando `event` es key del mapping pero no value y no calzó nada,
452
+ // efectivamente está bloqueado.
453
+ void isMappedTarget;
454
+ return null;
455
+ }
456
+ case 'recursion':
457
+ return stepRec(unfoldOnce(p), event, depth + 1);
458
+ case 'var':
459
+ return null;
460
+ }
461
+ }
462
+ /**
463
+ * Enumera todos los estados "estables" alcanzables desde `p` resolviendo
464
+ * elecciones internas (`⊓`) y desplegando recursiones inmediatas, sin
465
+ * consumir eventos visibles. Útil para la semántica de failures, donde
466
+ * el conjunto de refusal depende de QUÉ rama interna se eligió.
467
+ *
468
+ * Devuelve procesos sin un `internal` en la raíz (después de empujarlo
469
+ * hacia adentro de operadores asociativos cuando aplica). El número de
470
+ * resoluciones es 2^(# de internals encadenados), así que limitamos a un
471
+ * número razonable para no explotar.
472
+ */
473
+ function internalResolutions(p, limit = 64) {
474
+ const out = [];
475
+ resolveInternal(p, out, limit, 0);
476
+ return out;
477
+ }
478
+ function resolveInternal(p, out, limit, depth) {
479
+ if (out.length >= limit || depth > MAX_UNFOLD_DEPTH)
480
+ return;
481
+ switch (p.kind) {
482
+ case 'internal':
483
+ resolveInternal(p.left, out, limit, depth);
484
+ resolveInternal(p.right, out, limit, depth);
485
+ return;
486
+ case 'recursion':
487
+ resolveInternal(unfoldOnce(p), out, limit, depth + 1);
488
+ return;
489
+ default:
490
+ out.push(p);
491
+ return;
492
+ }
493
+ }
494
+ //# sourceMappingURL=semantics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../../src/csp-hoare/semantics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ export type Event = string;
2
+ export type Process = {
3
+ kind: 'stop';
4
+ } | {
5
+ kind: 'skip';
6
+ } | {
7
+ kind: 'prefix';
8
+ event: Event;
9
+ cont: Process;
10
+ } | {
11
+ kind: 'choice';
12
+ left: Process;
13
+ right: Process;
14
+ } | {
15
+ kind: 'internal';
16
+ left: Process;
17
+ right: Process;
18
+ } | {
19
+ kind: 'parallel';
20
+ left: Process;
21
+ right: Process;
22
+ alphabet: Event[];
23
+ } | {
24
+ kind: 'interleave';
25
+ left: Process;
26
+ right: Process;
27
+ } | {
28
+ kind: 'sequence';
29
+ left: Process;
30
+ right: Process;
31
+ } | {
32
+ kind: 'hide';
33
+ process: Process;
34
+ events: Event[];
35
+ } | {
36
+ kind: 'rename';
37
+ process: Process;
38
+ mapping: Map<Event, Event>;
39
+ } | {
40
+ kind: 'recursion';
41
+ name: string;
42
+ body: Process;
43
+ } | {
44
+ kind: 'var';
45
+ name: string;
46
+ };
47
+ /** Una traza es una secuencia finita de eventos visibles observados. */
48
+ export type Trace = Event[];
49
+ /**
50
+ * Failure (failures-semantics): la traza `trace` es observable y, tras ella,
51
+ * el proceso PUEDE rehusar cualquier subconjunto de `refusal` (en alguna
52
+ * resolución del no-determinismo interno).
53
+ */
54
+ export interface FailurePair {
55
+ trace: Trace;
56
+ refusal: Set<Event>;
57
+ }
58
+ /** Evento especial que marca la terminación exitosa (✓ / "tick"). */
59
+ export declare const TICK: Event;
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/csp-hoare/types.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,KAAK,EAAE,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,wEAAwE;AACxE,MAAM,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;AAE5B;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;CACrB;AAED,qEAAqE;AACrE,eAAO,MAAM,IAAI,EAAE,KAAW,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // CSP Hoare — Tipos del cálculo de procesos secuenciales comunicantes
4
+ // ============================================================
5
+ // Comunicating Sequential Processes (Hoare 1978/1985): procesos que
6
+ // se sincronizan mediante eventos atómicos compartidos. Diferente del
7
+ // π-cálculo: los eventos NO transportan valores; lo que importa es la
8
+ // ocurrencia sincronizada del nombre.
9
+ //
10
+ // Operadores estándar:
11
+ // STOP — proceso muerto, no acepta nada.
12
+ // SKIP — termina exitosamente (evento ✓ implícito).
13
+ // a → P — prefijo: ejecuta el evento `a`, luego se comporta como P.
14
+ // P □ Q — elección externa: el entorno decide entre los primeros
15
+ // eventos ofrecidos por P y Q.
16
+ // P ⊓ Q — elección interna: el proceso decide; el entorno solo
17
+ // ve el resultado. Introduce no-determinismo.
18
+ // P |[A]| Q — paralelo sincronizado: los eventos en A deben darse en
19
+ // ambos lados simultáneamente; los demás se entrelazan.
20
+ // P ||| Q — entrelazado puro (paralelo con alfabeto vacío).
21
+ // P ; Q — composición secuencial: Q comienza cuando P termina (SKIP).
22
+ // P \ A — ocultación: los eventos en A se vuelven internos (τ).
23
+ // P[f] — renombrado funcional de eventos.
24
+ // μ X . P — recursión: el proceso se reescribe a sí mismo.
25
+ // X — variable de proceso (referencia a μ).
26
+ // ============================================================
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.TICK = void 0;
29
+ /** Evento especial que marca la terminación exitosa (✓ / "tick"). */
30
+ exports.TICK = '✓';
31
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/csp-hoare/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sEAAsE;AACtE,+DAA+D;AAC/D,oEAAoE;AACpE,sEAAsE;AACtE,sEAAsE;AACtE,sCAAsC;AACtC,EAAE;AACF,uBAAuB;AACvB,sDAAsD;AACtD,iEAAiE;AACjE,gFAAgF;AAChF,6EAA6E;AAC7E,mDAAmD;AACnD,2EAA2E;AAC3E,kEAAkE;AAClE,6EAA6E;AAC7E,4EAA4E;AAC5E,sEAAsE;AACtE,kFAAkF;AAClF,4EAA4E;AAC5E,uDAAuD;AACvD,qEAAqE;AACrE,4DAA4D;AAC5D,+DAA+D;;;AA+B/D,qEAAqE;AACxD,QAAA,IAAI,GAAU,GAAG,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type { Type, TypeScheme, Expr } from './types';
2
+ export type { Substitution, UnifyResult } from './substitution';
3
+ export type { InferResult, InferOutcome, InferSchemeResult } from './infer';
4
+ export { TypeEnv, tVar, tConst, tArrow, tApp, scheme, mono, eVar, eLit, eApp, eAppN, eLam, eLet, eLetRec, eIf, TInt, TBool, TStr, typeFreeVars, schemeFreeVars, typeToString, schemeToString, } from './types';
5
+ export { emptySubst, applySubst, applySubstScheme, composeSubsts, freshTypeVar, resetFreshSupply, occursIn, unify, isUnifyError, generalize, instantiate, } from './substitution';
6
+ export { algorithmW, infer, inferScheme, isInferError, initialEnv, normalizeScheme } from './infer';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hindley-milner/index.ts"],"names":[],"mappings":"AAeA,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5E,OAAO,EACL,OAAO,EACP,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,GAAG,EACH,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}