@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.
- package/dist/categorical/fin-set.d.ts +39 -0
- package/dist/categorical/fin-set.d.ts.map +1 -0
- package/dist/categorical/fin-set.js +217 -0
- package/dist/categorical/fin-set.js.map +1 -0
- package/dist/categorical/free.d.ts +23 -0
- package/dist/categorical/free.d.ts.map +1 -0
- package/dist/categorical/free.js +168 -0
- package/dist/categorical/free.js.map +1 -0
- package/dist/categorical/functor.d.ts +40 -0
- package/dist/categorical/functor.d.ts.map +1 -0
- package/dist/categorical/functor.js +139 -0
- package/dist/categorical/functor.js.map +1 -0
- package/dist/categorical/index.d.ts +11 -0
- package/dist/categorical/index.d.ts.map +1 -0
- package/dist/categorical/index.js +33 -0
- package/dist/categorical/index.js.map +1 -0
- package/dist/categorical/limits.d.ts +64 -0
- package/dist/categorical/limits.d.ts.map +1 -0
- package/dist/categorical/limits.js +248 -0
- package/dist/categorical/limits.js.map +1 -0
- package/dist/categorical/monoidal.d.ts +14 -0
- package/dist/categorical/monoidal.d.ts.map +1 -0
- package/dist/categorical/monoidal.js +148 -0
- package/dist/categorical/monoidal.js.map +1 -0
- package/dist/categorical/poset.d.ts +14 -0
- package/dist/categorical/poset.d.ts.map +1 -0
- package/dist/categorical/poset.js +115 -0
- package/dist/categorical/poset.js.map +1 -0
- package/dist/categorical/types.d.ts +111 -0
- package/dist/categorical/types.d.ts.map +1 -0
- package/dist/categorical/types.js +15 -0
- package/dist/categorical/types.js.map +1 -0
- package/dist/csp-hoare/analysis.d.ts +51 -0
- package/dist/csp-hoare/analysis.d.ts.map +1 -0
- package/dist/csp-hoare/analysis.js +317 -0
- package/dist/csp-hoare/analysis.js.map +1 -0
- package/dist/csp-hoare/examples.d.ts +33 -0
- package/dist/csp-hoare/examples.d.ts.map +1 -0
- package/dist/csp-hoare/examples.js +108 -0
- package/dist/csp-hoare/examples.js.map +1 -0
- package/dist/csp-hoare/index.d.ts +6 -0
- package/dist/csp-hoare/index.d.ts.map +1 -0
- package/dist/csp-hoare/index.js +50 -0
- package/dist/csp-hoare/index.js.map +1 -0
- package/dist/csp-hoare/semantics.d.ts +49 -0
- package/dist/csp-hoare/semantics.d.ts.map +1 -0
- package/dist/csp-hoare/semantics.js +494 -0
- package/dist/csp-hoare/semantics.js.map +1 -0
- package/dist/csp-hoare/types.d.ts +60 -0
- package/dist/csp-hoare/types.d.ts.map +1 -0
- package/dist/csp-hoare/types.js +31 -0
- package/dist/csp-hoare/types.js.map +1 -0
- package/dist/hindley-milner/index.d.ts +7 -0
- package/dist/hindley-milner/index.d.ts.map +1 -0
- package/dist/hindley-milner/index.js +60 -0
- package/dist/hindley-milner/index.js.map +1 -0
- package/dist/hindley-milner/infer.d.ts +26 -0
- package/dist/hindley-milner/infer.d.ts.map +1 -0
- package/dist/hindley-milner/infer.js +278 -0
- package/dist/hindley-milner/infer.js.map +1 -0
- package/dist/hindley-milner/substitution.d.ts +21 -0
- package/dist/hindley-milner/substitution.d.ts.map +1 -0
- package/dist/hindley-milner/substitution.js +215 -0
- package/dist/hindley-milner/substitution.js.map +1 -0
- package/dist/hindley-milner/types.d.ts +84 -0
- package/dist/hindley-milner/types.d.ts.map +1 -0
- package/dist/hindley-milner/types.js +166 -0
- package/dist/hindley-milner/types.js.map +1 -0
- package/dist/hott/equality.d.ts +4 -0
- package/dist/hott/equality.d.ts.map +1 -0
- package/dist/hott/equality.js +108 -0
- package/dist/hott/equality.js.map +1 -0
- package/dist/hott/index.d.ts +13 -0
- package/dist/hott/index.d.ts.map +1 -0
- package/dist/hott/index.js +77 -0
- package/dist/hott/index.js.map +1 -0
- package/dist/hott/infer.d.ts +11 -0
- package/dist/hott/infer.d.ts.map +1 -0
- package/dist/hott/infer.js +465 -0
- package/dist/hott/infer.js.map +1 -0
- package/dist/hott/normalize.d.ts +5 -0
- package/dist/hott/normalize.d.ts.map +1 -0
- package/dist/hott/normalize.js +240 -0
- package/dist/hott/normalize.js.map +1 -0
- package/dist/hott/path-algebra.d.ts +25 -0
- package/dist/hott/path-algebra.d.ts.map +1 -0
- package/dist/hott/path-algebra.js +67 -0
- package/dist/hott/path-algebra.js.map +1 -0
- package/dist/hott/substitute.d.ts +3 -0
- package/dist/hott/substitute.d.ts.map +1 -0
- package/dist/hott/substitute.js +131 -0
- package/dist/hott/substitute.js.map +1 -0
- package/dist/hott/types.d.ts +126 -0
- package/dist/hott/types.d.ts.map +1 -0
- package/dist/hott/types.js +346 -0
- package/dist/hott/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -3
- package/dist/index.js.map +1 -1
- package/dist/lemma-synthesis/index.d.ts +124 -0
- package/dist/lemma-synthesis/index.d.ts.map +1 -0
- package/dist/lemma-synthesis/index.js +640 -0
- package/dist/lemma-synthesis/index.js.map +1 -0
- package/dist/tactic-dsl/combinators.d.ts +6 -0
- package/dist/tactic-dsl/combinators.d.ts.map +1 -0
- package/dist/tactic-dsl/combinators.js +98 -0
- package/dist/tactic-dsl/combinators.js.map +1 -0
- package/dist/tactic-dsl/index.d.ts +39 -0
- package/dist/tactic-dsl/index.d.ts.map +1 -0
- package/dist/tactic-dsl/index.js +162 -0
- package/dist/tactic-dsl/index.js.map +1 -0
- package/dist/tactic-dsl/tactics.d.ts +21 -0
- package/dist/tactic-dsl/tactics.d.ts.map +1 -0
- package/dist/tactic-dsl/tactics.js +536 -0
- package/dist/tactic-dsl/tactics.js.map +1 -0
- package/dist/tactic-dsl/types.d.ts +54 -0
- package/dist/tactic-dsl/types.d.ts.map +1 -0
- package/dist/tactic-dsl/types.js +226 -0
- package/dist/tactic-dsl/types.js.map +1 -0
- package/dist/tests/categorical/categorical.test.d.ts +2 -0
- package/dist/tests/categorical/categorical.test.d.ts.map +1 -0
- package/dist/tests/categorical/categorical.test.js +300 -0
- package/dist/tests/categorical/categorical.test.js.map +1 -0
- package/dist/tests/csp-hoare/csp-hoare.test.d.ts +2 -0
- package/dist/tests/csp-hoare/csp-hoare.test.d.ts.map +1 -0
- package/dist/tests/csp-hoare/csp-hoare.test.js +313 -0
- package/dist/tests/csp-hoare/csp-hoare.test.js.map +1 -0
- package/dist/tests/hindley-milner/hindley-milner.test.d.ts +2 -0
- package/dist/tests/hindley-milner/hindley-milner.test.d.ts.map +1 -0
- package/dist/tests/hindley-milner/hindley-milner.test.js +327 -0
- package/dist/tests/hindley-milner/hindley-milner.test.js.map +1 -0
- package/dist/tests/hott/hott.test.d.ts +2 -0
- package/dist/tests/hott/hott.test.d.ts.map +1 -0
- package/dist/tests/hott/hott.test.js +271 -0
- package/dist/tests/hott/hott.test.js.map +1 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts +2 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts.map +1 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.js +460 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.js.map +1 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts +2 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts.map +1 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.js +259 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.js.map +1 -0
- package/dist/tests/tptp/bridge.test.d.ts +2 -0
- package/dist/tests/tptp/bridge.test.d.ts.map +1 -0
- package/dist/tests/tptp/bridge.test.js +154 -0
- package/dist/tests/tptp/bridge.test.js.map +1 -0
- package/dist/tests/tptp/emitter.test.d.ts +2 -0
- package/dist/tests/tptp/emitter.test.d.ts.map +1 -0
- package/dist/tests/tptp/emitter.test.js +128 -0
- package/dist/tests/tptp/emitter.test.js.map +1 -0
- package/dist/tests/tptp/parser.test.d.ts +2 -0
- package/dist/tests/tptp/parser.test.d.ts.map +1 -0
- package/dist/tests/tptp/parser.test.js +192 -0
- package/dist/tests/tptp/parser.test.js.map +1 -0
- package/dist/tests/tptp/tokenizer.test.d.ts +2 -0
- package/dist/tests/tptp/tokenizer.test.d.ts.map +1 -0
- package/dist/tests/tptp/tokenizer.test.js +60 -0
- package/dist/tests/tptp/tokenizer.test.js.map +1 -0
- package/dist/tptp/ast.d.ts +73 -0
- package/dist/tptp/ast.d.ts.map +1 -0
- package/dist/tptp/ast.js +35 -0
- package/dist/tptp/ast.js.map +1 -0
- package/dist/tptp/bridge.d.ts +14 -0
- package/dist/tptp/bridge.d.ts.map +1 -0
- package/dist/tptp/bridge.js +146 -0
- package/dist/tptp/bridge.js.map +1 -0
- package/dist/tptp/emitter.d.ts +5 -0
- package/dist/tptp/emitter.d.ts.map +1 -0
- package/dist/tptp/emitter.js +103 -0
- package/dist/tptp/emitter.js.map +1 -0
- package/dist/tptp/index.d.ts +7 -0
- package/dist/tptp/index.d.ts.map +1 -0
- package/dist/tptp/index.js +31 -0
- package/dist/tptp/index.js.map +1 -0
- package/dist/tptp/parser.d.ts +23 -0
- package/dist/tptp/parser.d.ts.map +1 -0
- package/dist/tptp/parser.js +440 -0
- package/dist/tptp/parser.js.map +1 -0
- package/dist/tptp/tokenizer.d.ts +14 -0
- package/dist/tptp/tokenizer.d.ts.map +1 -0
- package/dist/tptp/tokenizer.js +264 -0
- package/dist/tptp/tokenizer.js.map +1 -0
- 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"}
|