@stevenvo780/st-lang 0.3.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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/bin/st +3 -0
  3. package/dist/api.d.ts +157 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +232 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/ast/nodes.d.ts +97 -0
  8. package/dist/ast/nodes.d.ts.map +1 -0
  9. package/dist/ast/nodes.js +6 -0
  10. package/dist/ast/nodes.js.map +1 -0
  11. package/dist/cli/index.d.ts +2 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +278 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/index.d.ts +16 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +80 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lexer/lexer.d.ts +25 -0
  20. package/dist/lexer/lexer.d.ts.map +1 -0
  21. package/dist/lexer/lexer.js +358 -0
  22. package/dist/lexer/lexer.js.map +1 -0
  23. package/dist/lexer/tokens.d.ts +56 -0
  24. package/dist/lexer/tokens.d.ts.map +1 -0
  25. package/dist/lexer/tokens.js +85 -0
  26. package/dist/lexer/tokens.js.map +1 -0
  27. package/dist/parser/parser.d.ts +46 -0
  28. package/dist/parser/parser.d.ts.map +1 -0
  29. package/dist/parser/parser.js +415 -0
  30. package/dist/parser/parser.js.map +1 -0
  31. package/dist/profiles/classical/first-order.d.ts +13 -0
  32. package/dist/profiles/classical/first-order.d.ts.map +1 -0
  33. package/dist/profiles/classical/first-order.js +67 -0
  34. package/dist/profiles/classical/first-order.js.map +1 -0
  35. package/dist/profiles/classical/propositional.d.ts +16 -0
  36. package/dist/profiles/classical/propositional.d.ts.map +1 -0
  37. package/dist/profiles/classical/propositional.js +597 -0
  38. package/dist/profiles/classical/propositional.js.map +1 -0
  39. package/dist/profiles/interface.d.ts +11 -0
  40. package/dist/profiles/interface.d.ts.map +1 -0
  41. package/dist/profiles/interface.js +26 -0
  42. package/dist/profiles/interface.js.map +1 -0
  43. package/dist/profiles/modal/k.d.ts +13 -0
  44. package/dist/profiles/modal/k.d.ts.map +1 -0
  45. package/dist/profiles/modal/k.js +39 -0
  46. package/dist/profiles/modal/k.js.map +1 -0
  47. package/dist/profiles/paraconsistent/belnap.d.ts +13 -0
  48. package/dist/profiles/paraconsistent/belnap.d.ts.map +1 -0
  49. package/dist/profiles/paraconsistent/belnap.js +39 -0
  50. package/dist/profiles/paraconsistent/belnap.js.map +1 -0
  51. package/dist/protocol/handler.d.ts +17 -0
  52. package/dist/protocol/handler.d.ts.map +1 -0
  53. package/dist/protocol/handler.js +219 -0
  54. package/dist/protocol/handler.js.map +1 -0
  55. package/dist/repl/repl.d.ts +12 -0
  56. package/dist/repl/repl.d.ts.map +1 -0
  57. package/dist/repl/repl.js +237 -0
  58. package/dist/repl/repl.js.map +1 -0
  59. package/dist/runtime/interpreter.d.ts +41 -0
  60. package/dist/runtime/interpreter.d.ts.map +1 -0
  61. package/dist/runtime/interpreter.js +355 -0
  62. package/dist/runtime/interpreter.js.map +1 -0
  63. package/dist/tests/cli.test.d.ts +2 -0
  64. package/dist/tests/cli.test.d.ts.map +1 -0
  65. package/dist/tests/cli.test.js +184 -0
  66. package/dist/tests/cli.test.js.map +1 -0
  67. package/dist/tests/core.test.d.ts +2 -0
  68. package/dist/tests/core.test.d.ts.map +1 -0
  69. package/dist/tests/core.test.js +220 -0
  70. package/dist/tests/core.test.js.map +1 -0
  71. package/dist/tests/parser.test.d.ts +2 -0
  72. package/dist/tests/parser.test.d.ts.map +1 -0
  73. package/dist/tests/parser.test.js +180 -0
  74. package/dist/tests/parser.test.js.map +1 -0
  75. package/dist/tests/runner.d.ts +6 -0
  76. package/dist/tests/runner.d.ts.map +1 -0
  77. package/dist/tests/runner.js +69 -0
  78. package/dist/tests/runner.js.map +1 -0
  79. package/dist/text-layer/compiler.d.ts +19 -0
  80. package/dist/text-layer/compiler.d.ts.map +1 -0
  81. package/dist/text-layer/compiler.js +151 -0
  82. package/dist/text-layer/compiler.js.map +1 -0
  83. package/dist/types/index.d.ts +178 -0
  84. package/dist/types/index.d.ts.map +1 -0
  85. package/dist/types/index.js +6 -0
  86. package/dist/types/index.js.map +1 -0
  87. package/package.json +79 -0
@@ -0,0 +1,597 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Classical Propositional — Motor completo
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ClassicalPropositional = void 0;
7
+ exports.formulaToString = formulaToString;
8
+ // --- Utilidades de fórmulas ---
9
+ function collectAtoms(f) {
10
+ const atoms = new Set();
11
+ function walk(node) {
12
+ switch (node.kind) {
13
+ case 'atom':
14
+ if (node.name)
15
+ atoms.add(node.name);
16
+ break;
17
+ case 'not':
18
+ walk(node.args[0]);
19
+ break;
20
+ case 'and':
21
+ case 'or':
22
+ case 'implies':
23
+ case 'biconditional':
24
+ walk(node.args[0]);
25
+ walk(node.args[1]);
26
+ break;
27
+ }
28
+ }
29
+ walk(f);
30
+ return atoms;
31
+ }
32
+ function evaluate(f, v) {
33
+ switch (f.kind) {
34
+ case 'atom':
35
+ return v[f.name] ?? false;
36
+ case 'not':
37
+ return !evaluate(f.args[0], v);
38
+ case 'and':
39
+ return evaluate(f.args[0], v) && evaluate(f.args[1], v);
40
+ case 'or':
41
+ return evaluate(f.args[0], v) || evaluate(f.args[1], v);
42
+ case 'implies':
43
+ return !evaluate(f.args[0], v) || evaluate(f.args[1], v);
44
+ case 'biconditional':
45
+ return evaluate(f.args[0], v) === evaluate(f.args[1], v);
46
+ default:
47
+ return false;
48
+ }
49
+ }
50
+ function generateValuations(atoms) {
51
+ const n = atoms.length;
52
+ const total = 1 << n;
53
+ const valuations = [];
54
+ for (let i = 0; i < total; i++) {
55
+ const v = {};
56
+ for (let j = 0; j < n; j++) {
57
+ v[atoms[j]] = Boolean((i >> (n - 1 - j)) & 1);
58
+ }
59
+ valuations.push(v);
60
+ }
61
+ return valuations;
62
+ }
63
+ function formulaToString(f) {
64
+ switch (f.kind) {
65
+ case 'atom': return f.name || '?';
66
+ case 'not': {
67
+ const inner = f.args[0];
68
+ if (inner.kind === 'atom')
69
+ return `!${formulaToString(inner)}`;
70
+ return `!(${formulaToString(inner)})`;
71
+ }
72
+ case 'and': return `(${formulaToString(f.args[0])} & ${formulaToString(f.args[1])})`;
73
+ case 'or': return `(${formulaToString(f.args[0])} | ${formulaToString(f.args[1])})`;
74
+ case 'implies': return `(${formulaToString(f.args[0])} -> ${formulaToString(f.args[1])})`;
75
+ case 'biconditional': return `(${formulaToString(f.args[0])} <-> ${formulaToString(f.args[1])})`;
76
+ default: return '?';
77
+ }
78
+ }
79
+ function formulasEqual(a, b) {
80
+ if (a.kind !== b.kind)
81
+ return false;
82
+ if (a.kind === 'atom' && b.kind === 'atom')
83
+ return a.name === b.name;
84
+ if (a.args && b.args) {
85
+ if (a.args.length !== b.args.length)
86
+ return false;
87
+ return a.args.every((arg, i) => formulasEqual(arg, b.args[i]));
88
+ }
89
+ return false;
90
+ }
91
+ function formulaHash(f) {
92
+ return formulaToString(f);
93
+ }
94
+ function tryDerive(goal, theory, premiseNames) {
95
+ const state = {
96
+ known: new Map(),
97
+ steps: [],
98
+ stepCount: 0,
99
+ };
100
+ // Cargar premisas
101
+ for (const name of premiseNames) {
102
+ const f = theory.axioms.get(name) || theory.theorems.get(name);
103
+ if (f) {
104
+ state.stepCount++;
105
+ state.steps.push({
106
+ stepNumber: state.stepCount,
107
+ formula: f,
108
+ justification: `Premisa (${name})`,
109
+ premises: [],
110
+ });
111
+ state.known.set(formulaHash(f), f);
112
+ }
113
+ }
114
+ // Intentar derivar con BFS aplicando reglas
115
+ const maxIterations = 200;
116
+ let changed = true;
117
+ let iterations = 0;
118
+ while (changed && iterations < maxIterations) {
119
+ changed = false;
120
+ iterations++;
121
+ const currentFormulas = Array.from(state.known.values());
122
+ for (const f1 of currentFormulas) {
123
+ // Check if goal already found
124
+ if (state.known.has(formulaHash(goal)))
125
+ break;
126
+ for (const f2 of currentFormulas) {
127
+ if (state.known.has(formulaHash(goal)))
128
+ break;
129
+ // Modus Ponens: de A y (A -> B), derivar B
130
+ if (f2.kind === 'implies' && formulasEqual(f2.args[0], f1)) {
131
+ const conclusion = f2.args[1];
132
+ const hash = formulaHash(conclusion);
133
+ if (!state.known.has(hash)) {
134
+ state.stepCount++;
135
+ const s1 = findStep(state.steps, f1);
136
+ const s2 = findStep(state.steps, f2);
137
+ state.steps.push({
138
+ stepNumber: state.stepCount,
139
+ formula: conclusion,
140
+ justification: 'Modus Ponens',
141
+ premises: [s1, s2],
142
+ });
143
+ state.known.set(hash, conclusion);
144
+ changed = true;
145
+ }
146
+ }
147
+ // Modus Ponens inverso: de (A -> B) y A, derivar B
148
+ if (f1.kind === 'implies' && formulasEqual(f1.args[0], f2)) {
149
+ const conclusion = f1.args[1];
150
+ const hash = formulaHash(conclusion);
151
+ if (!state.known.has(hash)) {
152
+ state.stepCount++;
153
+ const s1 = findStep(state.steps, f1);
154
+ const s2 = findStep(state.steps, f2);
155
+ state.steps.push({
156
+ stepNumber: state.stepCount,
157
+ formula: conclusion,
158
+ justification: 'Modus Ponens',
159
+ premises: [s1, s2],
160
+ });
161
+ state.known.set(hash, conclusion);
162
+ changed = true;
163
+ }
164
+ }
165
+ // Modus Tollens: de !B y (A -> B), derivar !A
166
+ if (f1.kind === 'not' && f2.kind === 'implies' &&
167
+ formulasEqual(f1.args[0], f2.args[1])) {
168
+ const conclusion = { kind: 'not', args: [f2.args[0]] };
169
+ const hash = formulaHash(conclusion);
170
+ if (!state.known.has(hash)) {
171
+ state.stepCount++;
172
+ state.steps.push({
173
+ stepNumber: state.stepCount,
174
+ formula: conclusion,
175
+ justification: 'Modus Tollens',
176
+ premises: [findStep(state.steps, f1), findStep(state.steps, f2)],
177
+ });
178
+ state.known.set(hash, conclusion);
179
+ changed = true;
180
+ }
181
+ }
182
+ // Conjunction Introduction: de A y B, derivar A & B
183
+ if (f1 !== f2) {
184
+ const conj = { kind: 'and', args: [f1, f2] };
185
+ const hash = formulaHash(conj);
186
+ if (!state.known.has(hash) && formulasEqual(conj, goal)) {
187
+ state.stepCount++;
188
+ state.steps.push({
189
+ stepNumber: state.stepCount,
190
+ formula: conj,
191
+ justification: 'Introduccion de conjuncion',
192
+ premises: [findStep(state.steps, f1), findStep(state.steps, f2)],
193
+ });
194
+ state.known.set(hash, conj);
195
+ changed = true;
196
+ }
197
+ }
198
+ }
199
+ // Conjunction Elimination: de A & B, derivar A y B
200
+ if (f1.kind === 'and') {
201
+ for (const sub of f1.args) {
202
+ const hash = formulaHash(sub);
203
+ if (!state.known.has(hash)) {
204
+ state.stepCount++;
205
+ state.steps.push({
206
+ stepNumber: state.stepCount,
207
+ formula: sub,
208
+ justification: 'Eliminacion de conjuncion',
209
+ premises: [findStep(state.steps, f1)],
210
+ });
211
+ state.known.set(hash, sub);
212
+ changed = true;
213
+ }
214
+ }
215
+ }
216
+ // Disjunction Introduction: de A, derivar A | B (si A|B es la meta)
217
+ if (goal.kind === 'or') {
218
+ if (formulasEqual(f1, goal.args[0]) || formulasEqual(f1, goal.args[1])) {
219
+ const hash = formulaHash(goal);
220
+ if (!state.known.has(hash)) {
221
+ state.stepCount++;
222
+ state.steps.push({
223
+ stepNumber: state.stepCount,
224
+ formula: goal,
225
+ justification: 'Introduccion de disyuncion',
226
+ premises: [findStep(state.steps, f1)],
227
+ });
228
+ state.known.set(hash, goal);
229
+ changed = true;
230
+ }
231
+ }
232
+ }
233
+ // Double Negation Elimination: de !!A, derivar A
234
+ if (f1.kind === 'not' && f1.args[0].kind === 'not') {
235
+ const inner = f1.args[0].args[0];
236
+ const hash = formulaHash(inner);
237
+ if (!state.known.has(hash)) {
238
+ state.stepCount++;
239
+ state.steps.push({
240
+ stepNumber: state.stepCount,
241
+ formula: inner,
242
+ justification: 'Doble negacion',
243
+ premises: [findStep(state.steps, f1)],
244
+ });
245
+ state.known.set(hash, inner);
246
+ changed = true;
247
+ }
248
+ }
249
+ // Contraposition: de A->B, derivar !B->!A
250
+ if (f1.kind === 'implies') {
251
+ const contra = {
252
+ kind: 'implies',
253
+ args: [
254
+ { kind: 'not', args: [f1.args[1]] },
255
+ { kind: 'not', args: [f1.args[0]] },
256
+ ]
257
+ };
258
+ const hash = formulaHash(contra);
259
+ if (!state.known.has(hash)) {
260
+ state.stepCount++;
261
+ state.steps.push({
262
+ stepNumber: state.stepCount,
263
+ formula: contra,
264
+ justification: 'Contraposicion',
265
+ premises: [findStep(state.steps, f1)],
266
+ });
267
+ state.known.set(hash, contra);
268
+ changed = true;
269
+ }
270
+ }
271
+ // Biconditional Elimination: de A<->B, derivar A->B y B->A
272
+ if (f1.kind === 'biconditional') {
273
+ const ab = { kind: 'implies', args: [f1.args[0], f1.args[1]] };
274
+ const ba = { kind: 'implies', args: [f1.args[1], f1.args[0]] };
275
+ for (const impl of [ab, ba]) {
276
+ const hash = formulaHash(impl);
277
+ if (!state.known.has(hash)) {
278
+ state.stepCount++;
279
+ state.steps.push({
280
+ stepNumber: state.stepCount,
281
+ formula: impl,
282
+ justification: 'Eliminacion de bicondicional',
283
+ premises: [findStep(state.steps, f1)],
284
+ });
285
+ state.known.set(hash, impl);
286
+ changed = true;
287
+ }
288
+ }
289
+ }
290
+ }
291
+ }
292
+ if (state.known.has(formulaHash(goal))) {
293
+ // Filtrar solo pasos relevantes para la derivación
294
+ const relevantSteps = traceBack(state.steps, goal);
295
+ return {
296
+ goal,
297
+ steps: relevantSteps,
298
+ status: 'complete',
299
+ derivedFrom: premiseNames,
300
+ };
301
+ }
302
+ // Fallback: verificar semánticamente
303
+ const allAxiomFormulas = premiseNames
304
+ .map(n => theory.axioms.get(n) || theory.theorems.get(n))
305
+ .filter((f) => f !== undefined);
306
+ if (allAxiomFormulas.length > 0) {
307
+ const atoms = new Set();
308
+ for (const f of allAxiomFormulas)
309
+ collectAtoms(f).forEach(a => atoms.add(a));
310
+ collectAtoms(goal).forEach(a => atoms.add(a));
311
+ const atomList = Array.from(atoms);
312
+ const valuations = generateValuations(atomList);
313
+ let semanticallyValid = true;
314
+ for (const v of valuations) {
315
+ const premisesTrue = allAxiomFormulas.every(f => evaluate(f, v));
316
+ if (premisesTrue && !evaluate(goal, v)) {
317
+ semanticallyValid = false;
318
+ break;
319
+ }
320
+ }
321
+ if (semanticallyValid) {
322
+ return {
323
+ goal,
324
+ steps: state.steps,
325
+ status: 'complete',
326
+ derivedFrom: premiseNames,
327
+ };
328
+ }
329
+ }
330
+ return null;
331
+ }
332
+ function findStep(steps, formula) {
333
+ const hash = formulaHash(formula);
334
+ for (const s of steps) {
335
+ if (formulaHash(s.formula) === hash)
336
+ return s.stepNumber;
337
+ }
338
+ return 0;
339
+ }
340
+ function traceBack(steps, goal) {
341
+ const goalHash = formulaHash(goal);
342
+ const needed = new Set();
343
+ const goalStep = steps.find(s => formulaHash(s.formula) === goalHash);
344
+ if (!goalStep)
345
+ return steps;
346
+ function trace(stepNum) {
347
+ if (needed.has(stepNum))
348
+ return;
349
+ needed.add(stepNum);
350
+ const step = steps.find(s => s.stepNumber === stepNum);
351
+ if (step) {
352
+ for (const p of step.premises) {
353
+ trace(p);
354
+ }
355
+ }
356
+ }
357
+ trace(goalStep.stepNumber);
358
+ return steps.filter(s => needed.has(s.stepNumber));
359
+ }
360
+ // --- Perfil Classical Propositional ---
361
+ class ClassicalPropositional {
362
+ name = 'classical.propositional';
363
+ description = 'Logica clasica proposicional con tabla de verdad, validez, satisfacibilidad, derivacion y contramodelo';
364
+ checkWellFormed(formula) {
365
+ const diags = [];
366
+ function check(f) {
367
+ switch (f.kind) {
368
+ case 'atom':
369
+ if (!f.name) {
370
+ diags.push({ severity: 'error', message: 'Atomo sin nombre' });
371
+ }
372
+ break;
373
+ case 'not':
374
+ if (!f.args || f.args.length !== 1) {
375
+ diags.push({ severity: 'error', message: 'Negacion requiere exactamente un argumento' });
376
+ }
377
+ else {
378
+ check(f.args[0]);
379
+ }
380
+ break;
381
+ case 'and':
382
+ case 'or':
383
+ case 'implies':
384
+ case 'biconditional':
385
+ if (!f.args || f.args.length !== 2) {
386
+ diags.push({ severity: 'error', message: `${f.kind} requiere exactamente dos argumentos` });
387
+ }
388
+ else {
389
+ check(f.args[0]);
390
+ check(f.args[1]);
391
+ }
392
+ break;
393
+ case 'forall':
394
+ case 'exists':
395
+ case 'predicate':
396
+ case 'equals':
397
+ case 'modal_necessity':
398
+ case 'modal_possibility':
399
+ diags.push({
400
+ severity: 'error',
401
+ message: `'${f.kind}' no esta soportado en logica proposicional clasica`,
402
+ });
403
+ break;
404
+ }
405
+ }
406
+ check(formula);
407
+ return diags;
408
+ }
409
+ checkValid(formula) {
410
+ const wf = this.checkWellFormed(formula);
411
+ if (wf.length > 0) {
412
+ return { status: 'error', diagnostics: wf, formula };
413
+ }
414
+ const tt = this.truthTable(formula);
415
+ if (tt.isTautology) {
416
+ return {
417
+ status: 'valid',
418
+ output: `${formulaToString(formula)} es VALIDA (tautologia)`,
419
+ truthTable: tt,
420
+ diagnostics: [],
421
+ formula,
422
+ };
423
+ }
424
+ else {
425
+ // Encontrar contramodelo
426
+ const cm = tt.rows.find(r => !r.result);
427
+ return {
428
+ status: 'invalid',
429
+ output: `${formulaToString(formula)} NO es valida`,
430
+ truthTable: tt,
431
+ model: cm ? { type: 'propositional', valuation: cm.valuation } : undefined,
432
+ diagnostics: [],
433
+ formula,
434
+ };
435
+ }
436
+ }
437
+ checkSatisfiable(formula) {
438
+ const wf = this.checkWellFormed(formula);
439
+ if (wf.length > 0) {
440
+ return { status: 'error', diagnostics: wf, formula };
441
+ }
442
+ const tt = this.truthTable(formula);
443
+ if (tt.isSatisfiable) {
444
+ const sat = tt.rows.find(r => r.result);
445
+ return {
446
+ status: 'satisfiable',
447
+ output: `${formulaToString(formula)} es SATISFACIBLE`,
448
+ model: sat ? { type: 'propositional', valuation: sat.valuation } : undefined,
449
+ truthTable: tt,
450
+ diagnostics: [],
451
+ formula,
452
+ };
453
+ }
454
+ else {
455
+ return {
456
+ status: 'unsatisfiable',
457
+ output: `${formulaToString(formula)} es INSATISFACIBLE (contradiccion)`,
458
+ truthTable: tt,
459
+ diagnostics: [],
460
+ formula,
461
+ };
462
+ }
463
+ }
464
+ prove(goal, theory) {
465
+ const wf = this.checkWellFormed(goal);
466
+ if (wf.length > 0) {
467
+ return { status: 'error', diagnostics: wf, formula: goal };
468
+ }
469
+ const premiseNames = Array.from(theory.axioms.keys());
470
+ const proof = tryDerive(goal, theory, premiseNames);
471
+ if (proof && proof.status === 'complete') {
472
+ return {
473
+ status: 'provable',
474
+ output: `${formulaToString(goal)} es DEMOSTRABLE desde la teoria`,
475
+ proof,
476
+ diagnostics: [],
477
+ formula: goal,
478
+ };
479
+ }
480
+ return {
481
+ status: 'refutable',
482
+ output: `${formulaToString(goal)} NO es demostrable desde la teoria dada`,
483
+ diagnostics: [],
484
+ formula: goal,
485
+ };
486
+ }
487
+ derive(goal, premises, theory) {
488
+ const wf = this.checkWellFormed(goal);
489
+ if (wf.length > 0) {
490
+ return { status: 'error', diagnostics: wf, formula: goal };
491
+ }
492
+ const proof = tryDerive(goal, theory, premises);
493
+ if (proof && proof.status === 'complete') {
494
+ return {
495
+ status: 'provable',
496
+ output: `${formulaToString(goal)} derivado exitosamente`,
497
+ proof,
498
+ diagnostics: [],
499
+ formula: goal,
500
+ };
501
+ }
502
+ return {
503
+ status: 'refutable',
504
+ output: `No se puede derivar ${formulaToString(goal)} desde las premisas dadas`,
505
+ diagnostics: [],
506
+ formula: goal,
507
+ };
508
+ }
509
+ countermodel(formula) {
510
+ const wf = this.checkWellFormed(formula);
511
+ if (wf.length > 0) {
512
+ return { status: 'error', diagnostics: wf, formula };
513
+ }
514
+ const atoms = Array.from(collectAtoms(formula));
515
+ const valuations = generateValuations(atoms);
516
+ for (const v of valuations) {
517
+ if (!evaluate(formula, v)) {
518
+ return {
519
+ status: 'invalid',
520
+ output: `Contramodelo encontrado para ${formulaToString(formula)}`,
521
+ model: { type: 'propositional', valuation: v },
522
+ diagnostics: [],
523
+ formula,
524
+ };
525
+ }
526
+ }
527
+ return {
528
+ status: 'valid',
529
+ output: `${formulaToString(formula)} es tautologia, no hay contramodelo`,
530
+ diagnostics: [],
531
+ formula,
532
+ };
533
+ }
534
+ explain(formula) {
535
+ const wf = this.checkWellFormed(formula);
536
+ if (wf.length > 0) {
537
+ return { status: 'error', diagnostics: wf, formula };
538
+ }
539
+ const tt = this.truthTable(formula);
540
+ let explanation = `Formula: ${formulaToString(formula)}\n`;
541
+ explanation += `Variables: ${tt.variables.join(', ')}\n`;
542
+ explanation += `Tautologia: ${tt.isTautology ? 'si' : 'no'}\n`;
543
+ explanation += `Contradiccion: ${tt.isContradiction ? 'si' : 'no'}\n`;
544
+ explanation += `Satisfacible: ${tt.isSatisfiable ? 'si' : 'no'}\n`;
545
+ explanation += `Total valuaciones: ${tt.rows.length}\n`;
546
+ explanation += `Verdaderas: ${tt.rows.filter(r => r.result).length}\n`;
547
+ explanation += `Falsas: ${tt.rows.filter(r => !r.result).length}\n`;
548
+ return {
549
+ status: tt.isTautology ? 'valid' : tt.isSatisfiable ? 'satisfiable' : 'unsatisfiable',
550
+ output: explanation,
551
+ truthTable: tt,
552
+ diagnostics: [],
553
+ formula,
554
+ };
555
+ }
556
+ truthTable(formula) {
557
+ const atoms = Array.from(collectAtoms(formula)).sort();
558
+ const valuations = generateValuations(atoms);
559
+ const rows = valuations.map(v => ({
560
+ valuation: v,
561
+ result: evaluate(formula, v),
562
+ }));
563
+ return {
564
+ variables: atoms,
565
+ rows,
566
+ isTautology: rows.every(r => r.result),
567
+ isContradiction: rows.every(r => !r.result),
568
+ isSatisfiable: rows.some(r => r.result),
569
+ };
570
+ }
571
+ checkEquivalent(a, b) {
572
+ const wfA = this.checkWellFormed(a);
573
+ const wfB = this.checkWellFormed(b);
574
+ if (wfA.length > 0 || wfB.length > 0) {
575
+ return { status: 'error', diagnostics: [...wfA, ...wfB] };
576
+ }
577
+ const biconditional = { kind: 'biconditional', args: [a, b] };
578
+ const tt = this.truthTable(biconditional);
579
+ if (tt.isTautology) {
580
+ return {
581
+ status: 'valid',
582
+ output: `${formulaToString(a)} y ${formulaToString(b)} son EQUIVALENTES`,
583
+ truthTable: tt,
584
+ diagnostics: [],
585
+ };
586
+ }
587
+ const cm = tt.rows.find(r => !r.result);
588
+ return {
589
+ status: 'invalid',
590
+ output: `${formulaToString(a)} y ${formulaToString(b)} NO son equivalentes`,
591
+ model: cm ? { type: 'propositional', valuation: cm.valuation } : undefined,
592
+ diagnostics: [],
593
+ };
594
+ }
595
+ }
596
+ exports.ClassicalPropositional = ClassicalPropositional;
597
+ //# sourceMappingURL=propositional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propositional.js","sourceRoot":"","sources":["../../../src/profiles/classical/propositional.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8CAA8C;AAC9C,+DAA+D;;;AAiE/D,0CAcC;AAxED,iCAAiC;AAEjC,SAAS,YAAY,CAAC,CAAU;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,SAAS,IAAI,CAAC,IAAa;QACzB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,IAAI,IAAI,CAAC,IAAI;oBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,KAAK,CAAC;YACX,KAAK,IAAI,CAAC;YACV,KAAK,SAAS,CAAC;YACf,KAAK,eAAe;gBAClB,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM;QACV,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU,EAAE,CAAY;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,CAAC,CAAC,IAAK,CAAC,IAAI,KAAK,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,KAAK,SAAS;YACZ,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe;IACzC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAc,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,eAAe,CAAC,CAAU;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;QAClC,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvF,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACtF,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5F,KAAK,eAAe,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnG,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,CAAU,EAAE,CAAU;IAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IACrE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAClD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD,SAAS,WAAW,CAAC,CAAU;IAC7B,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,MAAc,EAAE,YAAsB;IACtE,MAAM,KAAK,GAAoB;QAC7B,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,kBAAkB;IAClB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC;YACN,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,KAAK,CAAC,SAAS;gBAC3B,OAAO,EAAE,CAAC;gBACV,aAAa,EAAE,YAAY,IAAI,GAAG;gBAClC,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,GAAG,CAAC;IAC1B,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,OAAO,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;QAC7C,OAAO,GAAG,KAAK,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzD,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YACjC,8BAA8B;YAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAAE,MAAM;YAE9C,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAAE,MAAM;gBAE9C,2CAA2C;gBAC3C,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC5D,MAAM,UAAU,GAAG,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC;oBAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,UAAU;4BACnB,aAAa,EAAE,cAAc;4BAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;yBACnB,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;wBAClC,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,mDAAmD;gBACnD,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC5D,MAAM,UAAU,GAAG,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC;oBAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,UAAU;4BACnB,aAAa,EAAE,cAAc;4BAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;yBACnB,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;wBAClC,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;oBAC1C,aAAa,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,MAAM,UAAU,GAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,UAAU;4BACnB,aAAa,EAAE,eAAe;4BAC9B,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;yBACjE,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;wBAClC,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,oDAAoD;gBACpD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACd,MAAM,IAAI,GAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBACtD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;wBACxD,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,IAAI;4BACb,aAAa,EAAE,4BAA4B;4BAC3C,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;yBACjE,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC5B,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,IAAK,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,GAAG;4BACZ,aAAa,EAAE,2BAA2B;4BAC1C,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;yBACtC,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBAC3B,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,IAAI;4BACb,aAAa,EAAE,4BAA4B;4BAC3C,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;yBACtC,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC5B,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;wBACf,UAAU,EAAE,KAAK,CAAC,SAAS;wBAC3B,OAAO,EAAE,KAAK;wBACd,aAAa,EAAE,gBAAgB;wBAC/B,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;qBACtC,CAAC,CAAC;oBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC7B,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,0CAA0C;YAC1C,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAY;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE;wBACpC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE;qBACrC;iBACF,CAAC;gBACF,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;wBACf,UAAU,EAAE,KAAK,CAAC,SAAS;wBAC3B,OAAO,EAAE,MAAM;wBACf,aAAa,EAAE,gBAAgB;wBAC/B,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;qBACtC,CAAC,CAAC;oBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC9B,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,2DAA2D;YAC3D,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAChC,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,SAAS,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,SAAS;4BAC3B,OAAO,EAAE,IAAI;4BACb,aAAa,EAAE,8BAA8B;4BAC7C,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;yBACtC,CAAC,CAAC;wBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC5B,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvC,mDAAmD;QACnD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,YAAY;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAgB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAEhD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,gBAAgB;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACvC,iBAAiB,GAAG,KAAK,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,UAAU;gBAClB,WAAW,EAAE,YAAY;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkB,EAAE,OAAgB;IACpD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,UAAU,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAAC,KAAkB,EAAE,IAAa;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IACtE,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,SAAS,KAAK,CAAC,OAAe;QAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAChC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC;QACvD,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,KAAK,CAAC,CAAC,CAAC,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,yCAAyC;AAEzC,MAAa,sBAAsB;IACjC,IAAI,GAAG,yBAAyB,CAAC;IACjC,WAAW,GAAG,wGAAwG,CAAC;IAEvH,eAAe,CAAC,OAAgB;QAC9B,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,SAAS,KAAK,CAAC,CAAU;YACvB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,MAAM;oBACT,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACZ,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBACjE,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC,CAAC;oBAC3F,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,CAAC;gBACX,KAAK,IAAI,CAAC;gBACV,KAAK,SAAS,CAAC;gBACf,KAAK,eAAe;oBAClB,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,sCAAsC,EAAE,CAAC,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC;oBACD,MAAM;gBACR,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ,CAAC;gBACd,KAAK,WAAW,CAAC;gBACjB,KAAK,QAAQ,CAAC;gBACd,KAAK,iBAAiB,CAAC;gBACvB,KAAK,mBAAmB;oBACtB,KAAK,CAAC,IAAI,CAAC;wBACT,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,qDAAqD;qBACzE,CAAC,CAAC;oBACH,MAAM;YACV,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,yBAAyB;gBAC5D,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;gBACf,OAAO;aACR,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe;gBAClD,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC1E,WAAW,EAAE,EAAE;gBACf,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,kBAAkB;gBACrD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC5E,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;gBACf,OAAO;aACR,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,oCAAoC;gBACvE,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;gBACf,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAa,EAAE,MAAc;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7D,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAEpD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACzC,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,iCAAiC;gBACjE,KAAK;gBACL,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,yCAAyC;YACzE,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB,EAAE,MAAc;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7D,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACzC,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,wBAAwB;gBACxD,KAAK;gBACL,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,uBAAuB,eAAe,CAAC,IAAI,CAAC,2BAA2B;YAC/E,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAAgB;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE7C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,gCAAgC,eAAe,CAAC,OAAO,CAAC,EAAE;oBAClE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE;oBAC9C,WAAW,EAAE,EAAE;oBACf,OAAO;iBACR,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,qCAAqC;YACxE,WAAW,EAAE,EAAE;YACf,OAAO;SACR,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAgB;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,WAAW,GAAG,YAAY,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3D,WAAW,IAAI,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACzD,WAAW,IAAI,eAAe,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/D,WAAW,IAAI,kBAAkB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACtE,WAAW,IAAI,iBAAiB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACnE,WAAW,IAAI,sBAAsB,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;QACxD,WAAW,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC;QACvE,WAAW,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC;QAEpE,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe;YACrF,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,OAAO;SACR,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjD,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7B,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACtC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3C,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACxC,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,CAAU,EAAE,CAAU;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5D,CAAC;QAED,MAAM,aAAa,GAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,mBAAmB;gBACxE,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;aAChB,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,sBAAsB;YAC3E,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;YAC1E,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;CACF;AAjQD,wDAiQC"}
@@ -0,0 +1,11 @@
1
+ import { LogicProfile } from '../types';
2
+ export { LogicProfile };
3
+ export declare class ProfileRegistry {
4
+ private profiles;
5
+ register(profile: LogicProfile): void;
6
+ get(name: string): LogicProfile | undefined;
7
+ list(): string[];
8
+ has(name: string): boolean;
9
+ }
10
+ export declare const registry: ProfileRegistry;
11
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/profiles/interface.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0C,YAAY,EAAoB,MAAM,UAAU,CAAC;AAElG,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAwC;IAExD,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C,IAAI,IAAI,MAAM,EAAE;IAIhB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3B;AAGD,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Profile Interface — Interfaz base para perfiles lógicos
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registry = exports.ProfileRegistry = void 0;
7
+ // Registro global de perfiles
8
+ class ProfileRegistry {
9
+ profiles = new Map();
10
+ register(profile) {
11
+ this.profiles.set(profile.name, profile);
12
+ }
13
+ get(name) {
14
+ return this.profiles.get(name);
15
+ }
16
+ list() {
17
+ return Array.from(this.profiles.keys());
18
+ }
19
+ has(name) {
20
+ return this.profiles.has(name);
21
+ }
22
+ }
23
+ exports.ProfileRegistry = ProfileRegistry;
24
+ // Singleton global
25
+ exports.registry = new ProfileRegistry();
26
+ //# sourceMappingURL=interface.js.map