@stevenvo780/st-lang 4.10.0 → 4.11.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 (121) hide show
  1. package/dist/proof-systems/distributed-exchange/index.d.ts +101 -0
  2. package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -0
  3. package/dist/proof-systems/distributed-exchange/index.js +408 -0
  4. package/dist/proof-systems/distributed-exchange/index.js.map +1 -0
  5. package/dist/reasoning/graph-theory/index.d.ts +63 -0
  6. package/dist/reasoning/graph-theory/index.d.ts.map +1 -0
  7. package/dist/reasoning/graph-theory/index.js +1043 -0
  8. package/dist/reasoning/graph-theory/index.js.map +1 -0
  9. package/dist/reasoning/group-presentation/cayley.d.ts +8 -0
  10. package/dist/reasoning/group-presentation/cayley.d.ts.map +1 -0
  11. package/dist/reasoning/group-presentation/cayley.js +38 -0
  12. package/dist/reasoning/group-presentation/cayley.js.map +1 -0
  13. package/dist/reasoning/group-presentation/index.d.ts +8 -0
  14. package/dist/reasoning/group-presentation/index.d.ts.map +1 -0
  15. package/dist/reasoning/group-presentation/index.js +36 -0
  16. package/dist/reasoning/group-presentation/index.js.map +1 -0
  17. package/dist/reasoning/group-presentation/standard-groups.d.ts +6 -0
  18. package/dist/reasoning/group-presentation/standard-groups.d.ts.map +1 -0
  19. package/dist/reasoning/group-presentation/standard-groups.js +93 -0
  20. package/dist/reasoning/group-presentation/standard-groups.js.map +1 -0
  21. package/dist/reasoning/group-presentation/todd-coxeter.d.ts +10 -0
  22. package/dist/reasoning/group-presentation/todd-coxeter.d.ts.map +1 -0
  23. package/dist/reasoning/group-presentation/todd-coxeter.js +362 -0
  24. package/dist/reasoning/group-presentation/todd-coxeter.js.map +1 -0
  25. package/dist/reasoning/group-presentation/types.d.ts +7 -0
  26. package/dist/reasoning/group-presentation/types.d.ts.map +1 -0
  27. package/dist/reasoning/group-presentation/types.js +22 -0
  28. package/dist/reasoning/group-presentation/types.js.map +1 -0
  29. package/dist/reasoning/group-presentation/words.d.ts +10 -0
  30. package/dist/reasoning/group-presentation/words.d.ts.map +1 -0
  31. package/dist/reasoning/group-presentation/words.js +109 -0
  32. package/dist/reasoning/group-presentation/words.js.map +1 -0
  33. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts +2 -0
  34. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts.map +1 -0
  35. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js +328 -0
  36. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js.map +1 -0
  37. package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts +2 -0
  38. package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts.map +1 -0
  39. package/dist/tests/reasoning/graph-theory/graph-theory.test.js +363 -0
  40. package/dist/tests/reasoning/graph-theory/graph-theory.test.js.map +1 -0
  41. package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts +2 -0
  42. package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts.map +1 -0
  43. package/dist/tests/reasoning/group-presentation/group-presentation.test.js +229 -0
  44. package/dist/tests/reasoning/group-presentation/group-presentation.test.js.map +1 -0
  45. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts +2 -0
  46. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts.map +1 -0
  47. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js +411 -0
  48. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js.map +1 -0
  49. package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts +2 -0
  50. package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts.map +1 -0
  51. package/dist/tests/tooling/lemma-library/lemma-library.test.js +197 -0
  52. package/dist/tests/tooling/lemma-library/lemma-library.test.js.map +1 -0
  53. package/dist/tests/tooling/provenance/ledger.test.d.ts +2 -0
  54. package/dist/tests/tooling/provenance/ledger.test.d.ts.map +1 -0
  55. package/dist/tests/tooling/provenance/ledger.test.js +545 -0
  56. package/dist/tests/tooling/provenance/ledger.test.js.map +1 -0
  57. package/dist/tooling/exporters/coq-v2/index.d.ts +68 -0
  58. package/dist/tooling/exporters/coq-v2/index.d.ts.map +1 -0
  59. package/dist/tooling/exporters/coq-v2/index.js +692 -0
  60. package/dist/tooling/exporters/coq-v2/index.js.map +1 -0
  61. package/dist/tooling/lemma-library/apply.d.ts +9 -0
  62. package/dist/tooling/lemma-library/apply.d.ts.map +1 -0
  63. package/dist/tooling/lemma-library/apply.js +94 -0
  64. package/dist/tooling/lemma-library/apply.js.map +1 -0
  65. package/dist/tooling/lemma-library/arithmetic.d.ts +3 -0
  66. package/dist/tooling/lemma-library/arithmetic.d.ts.map +1 -0
  67. package/dist/tooling/lemma-library/arithmetic.js +176 -0
  68. package/dist/tooling/lemma-library/arithmetic.js.map +1 -0
  69. package/dist/tooling/lemma-library/firstorder.d.ts +3 -0
  70. package/dist/tooling/lemma-library/firstorder.d.ts.map +1 -0
  71. package/dist/tooling/lemma-library/firstorder.js +136 -0
  72. package/dist/tooling/lemma-library/firstorder.js.map +1 -0
  73. package/dist/tooling/lemma-library/index.d.ts +13 -0
  74. package/dist/tooling/lemma-library/index.d.ts.map +1 -0
  75. package/dist/tooling/lemma-library/index.js +32 -0
  76. package/dist/tooling/lemma-library/index.js.map +1 -0
  77. package/dist/tooling/lemma-library/library.d.ts +34 -0
  78. package/dist/tooling/lemma-library/library.d.ts.map +1 -0
  79. package/dist/tooling/lemma-library/library.js +126 -0
  80. package/dist/tooling/lemma-library/library.js.map +1 -0
  81. package/dist/tooling/lemma-library/modal.d.ts +3 -0
  82. package/dist/tooling/lemma-library/modal.d.ts.map +1 -0
  83. package/dist/tooling/lemma-library/modal.js +138 -0
  84. package/dist/tooling/lemma-library/modal.js.map +1 -0
  85. package/dist/tooling/lemma-library/propositional.d.ts +3 -0
  86. package/dist/tooling/lemma-library/propositional.d.ts.map +1 -0
  87. package/dist/tooling/lemma-library/propositional.js +265 -0
  88. package/dist/tooling/lemma-library/propositional.js.map +1 -0
  89. package/dist/tooling/lemma-library/set-theory.d.ts +3 -0
  90. package/dist/tooling/lemma-library/set-theory.d.ts.map +1 -0
  91. package/dist/tooling/lemma-library/set-theory.js +134 -0
  92. package/dist/tooling/lemma-library/set-theory.js.map +1 -0
  93. package/dist/tooling/lemma-library/standard.d.ts +3 -0
  94. package/dist/tooling/lemma-library/standard.d.ts.map +1 -0
  95. package/dist/tooling/lemma-library/standard.js +27 -0
  96. package/dist/tooling/lemma-library/standard.js.map +1 -0
  97. package/dist/tooling/lemma-library/tfidf.d.ts +5 -0
  98. package/dist/tooling/lemma-library/tfidf.d.ts.map +1 -0
  99. package/dist/tooling/lemma-library/tfidf.js +100 -0
  100. package/dist/tooling/lemma-library/tfidf.js.map +1 -0
  101. package/dist/tooling/lemma-library/tokenize.d.ts +2 -0
  102. package/dist/tooling/lemma-library/tokenize.d.ts.map +1 -0
  103. package/dist/tooling/lemma-library/tokenize.js +74 -0
  104. package/dist/tooling/lemma-library/tokenize.js.map +1 -0
  105. package/dist/tooling/lemma-library/types.d.ts +53 -0
  106. package/dist/tooling/lemma-library/types.d.ts.map +1 -0
  107. package/dist/tooling/lemma-library/types.js +10 -0
  108. package/dist/tooling/lemma-library/types.js.map +1 -0
  109. package/dist/tooling/provenance/index.d.ts +3 -0
  110. package/dist/tooling/provenance/index.d.ts.map +1 -0
  111. package/dist/tooling/provenance/index.js +16 -0
  112. package/dist/tooling/provenance/index.js.map +1 -0
  113. package/dist/tooling/provenance/ledger.d.ts +89 -0
  114. package/dist/tooling/provenance/ledger.d.ts.map +1 -0
  115. package/dist/tooling/provenance/ledger.js +439 -0
  116. package/dist/tooling/provenance/ledger.js.map +1 -0
  117. package/dist/tooling/provenance/types.d.ts +70 -0
  118. package/dist/tooling/provenance/types.d.ts.map +1 -0
  119. package/dist/tooling/provenance/types.js +14 -0
  120. package/dist/tooling/provenance/types.js.map +1 -0
  121. package/package.json +1 -1
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Todd-Coxeter coset enumeration.
4
+ // ============================================================
5
+ //
6
+ // Enumera las clases laterales (cosets) de un subgrupo H ≤ G en
7
+ // un grupo finitamente presentado G = ⟨S | R⟩. Si H es trivial,
8
+ // enumera el grupo entero (los cosets son los elementos de G).
9
+ //
10
+ // Idea: representamos los cosets como enteros 1, 2, 3, ... El coset
11
+ // 1 es el subgrupo H. Mantenemos una tabla `τ(c, x) = c'` que
12
+ // significa "el coset `c` multiplicado por la letra `x` es el coset
13
+ // `c'`". A medida que aplicamos las relaciones de R en cada coset
14
+ // y los generadores subgrupales en el coset 1, descubrimos
15
+ // igualdades (coset c ≡ coset c') que se procesan por
16
+ // union-find (coincidence handling).
17
+ //
18
+ // Implementación: HLT (Haselgrove–Leech–Trotter) básico. Para los
19
+ // tamaños de tests que necesitamos (Z/n, D_n, S_3) basta de sobra
20
+ // y termina rápido. `maxCosets` actúa de poda: el algoritmo es
21
+ // indecidible en general (problema de la palabra), así que si se
22
+ // alcanza el límite devolvemos 'incomplete'.
23
+ //
24
+ // Referencias: Holt–Eick–O'Brien, "Handbook of Computational
25
+ // Group Theory", cap. 5 — versión escolar.
26
+ // ============================================================
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.toddCoxeter = toddCoxeter;
29
+ exports.groupOrder = groupOrder;
30
+ exports.isInSubgroup = isInSubgroup;
31
+ const words_1 = require("./words");
32
+ function buildAlphabet(generators) {
33
+ const out = [];
34
+ for (const g of generators) {
35
+ out.push(g);
36
+ out.push((0, words_1.inverse)(g));
37
+ }
38
+ return out;
39
+ }
40
+ // rep: encuentra la raíz de la clase de equivalencia con path
41
+ // compression. Si c nunca apareció en replaced, devuelve c.
42
+ function rep(state, c) {
43
+ let cur = c;
44
+ // Encuentra raíz.
45
+ while (true) {
46
+ const parent = state.replaced.get(cur);
47
+ if (parent === undefined || parent === cur)
48
+ break;
49
+ cur = parent;
50
+ }
51
+ // Path compression.
52
+ let walker = c;
53
+ while (true) {
54
+ const parent = state.replaced.get(walker);
55
+ if (parent === undefined || parent === cur)
56
+ break;
57
+ state.replaced.set(walker, cur);
58
+ walker = parent;
59
+ }
60
+ return cur;
61
+ }
62
+ // newCoset: reserva el siguiente cosetId disponible.
63
+ function newCoset(state) {
64
+ const c = state.next++;
65
+ state.alive.add(c);
66
+ state.table.set(c, new Map());
67
+ return c;
68
+ }
69
+ // get τ(c, x). Antes de leer canonicaliza c con rep().
70
+ function getEdge(state, c, x) {
71
+ const rc = rep(state, c);
72
+ const row = state.table.get(rc);
73
+ if (!row)
74
+ return undefined;
75
+ const v = row.get(x);
76
+ return v === undefined ? undefined : rep(state, v);
77
+ }
78
+ // set τ(c, x) = d y τ(d, x⁻¹) = c (consistencia). Si ya había
79
+ // un valor distinto, dispara una coincidencia (deducción de que
80
+ // dos cosets son iguales).
81
+ function setEdge(state, c, x, d, queue) {
82
+ const rc = rep(state, c);
83
+ const rd = rep(state, d);
84
+ const xi = (0, words_1.inverse)(x);
85
+ // Dirección c --x--> d
86
+ const rowC = state.table.get(rc);
87
+ if (!rowC)
88
+ throw new Error(`setEdge: coset ${rc} sin fila`);
89
+ const existing = rowC.get(x);
90
+ if (existing !== undefined) {
91
+ const re = rep(state, existing);
92
+ if (re !== rd) {
93
+ // Coincidencia: re ≡ rd
94
+ queue.push([re, rd]);
95
+ }
96
+ // No sobreescribimos; ya estaba apuntando a algo equivalente.
97
+ }
98
+ else {
99
+ rowC.set(x, rd);
100
+ }
101
+ // Dirección d --x⁻¹--> c
102
+ const rowD = state.table.get(rd);
103
+ if (!rowD)
104
+ throw new Error(`setEdge: coset ${rd} sin fila`);
105
+ const existingInv = rowD.get(xi);
106
+ if (existingInv !== undefined) {
107
+ const rei = rep(state, existingInv);
108
+ if (rei !== rc) {
109
+ queue.push([rei, rc]);
110
+ }
111
+ }
112
+ else {
113
+ rowD.set(xi, rc);
114
+ }
115
+ }
116
+ // processCoincidences: union-find sobre cosets, propaga igualdades.
117
+ function processCoincidences(state, queue) {
118
+ while (queue.length > 0) {
119
+ const pair = queue.shift();
120
+ if (!pair)
121
+ break;
122
+ const a = rep(state, pair[0]);
123
+ const b = rep(state, pair[1]);
124
+ if (a === b)
125
+ continue;
126
+ // Por convenio, identificamos el mayor con el menor.
127
+ const keep = a < b ? a : b;
128
+ const drop = a < b ? b : a;
129
+ state.replaced.set(drop, keep);
130
+ state.alive.delete(drop);
131
+ // Volcar la fila de `drop` sobre `keep`.
132
+ const rowDrop = state.table.get(drop);
133
+ if (!rowDrop)
134
+ continue;
135
+ for (const [x, target] of rowDrop) {
136
+ const rTarget = rep(state, target);
137
+ const rowKeep = state.table.get(keep);
138
+ if (!rowKeep)
139
+ continue;
140
+ const existing = rowKeep.get(x);
141
+ if (existing === undefined) {
142
+ rowKeep.set(x, rTarget);
143
+ }
144
+ else {
145
+ const rExisting = rep(state, existing);
146
+ if (rExisting !== rTarget) {
147
+ queue.push([rExisting, rTarget]);
148
+ }
149
+ }
150
+ }
151
+ state.table.delete(drop);
152
+ }
153
+ }
154
+ // scan: recorre la palabra `w` empezando en `start`. Si en algún
155
+ // momento llega al final, deduce τ(prev, lastLetter) = start
156
+ // (porque la relación = 1 obliga al ciclo). Si no llega, completa
157
+ // con cosets nuevos hacia adelante.
158
+ function scanAndFill(state, start, w, queue) {
159
+ if (w.length === 0)
160
+ return;
161
+ // Caminamos desde la izquierda.
162
+ let left = start;
163
+ let leftIdx = 0;
164
+ while (leftIdx < w.length) {
165
+ const x = w[leftIdx];
166
+ const next = getEdge(state, left, x);
167
+ if (next === undefined)
168
+ break;
169
+ left = next;
170
+ leftIdx++;
171
+ }
172
+ if (leftIdx === w.length) {
173
+ // Cerramos el ciclo: τ(left, ε) ya está en start.
174
+ if (rep(state, left) !== rep(state, start)) {
175
+ queue.push([left, start]);
176
+ processCoincidences(state, queue);
177
+ }
178
+ return;
179
+ }
180
+ // Caminamos desde la derecha (con inversos).
181
+ let right = start;
182
+ let rightIdx = w.length;
183
+ while (rightIdx > leftIdx) {
184
+ const x = w[rightIdx - 1];
185
+ const xi = (0, words_1.inverse)(x);
186
+ const prev = getEdge(state, right, xi);
187
+ if (prev === undefined)
188
+ break;
189
+ right = prev;
190
+ rightIdx--;
191
+ }
192
+ // En este punto, izquierda y derecha solo están separadas por
193
+ // una porción de la palabra (leftIdx .. rightIdx).
194
+ if (leftIdx === rightIdx) {
195
+ // Se encontraron: nada que hacer salvo cerrar si no eran iguales.
196
+ if (rep(state, left) !== rep(state, right)) {
197
+ queue.push([left, right]);
198
+ processCoincidences(state, queue);
199
+ }
200
+ return;
201
+ }
202
+ if (leftIdx + 1 === rightIdx) {
203
+ // Una sola letra entre medio: deducción τ(left, w[leftIdx]) = right.
204
+ const x = w[leftIdx];
205
+ setEdge(state, left, x, right, queue);
206
+ processCoincidences(state, queue);
207
+ return;
208
+ }
209
+ // Hay >1 letras entre medio: rellenamos con nuevos cosets desde
210
+ // la izquierda. (HLT clásico.)
211
+ while (leftIdx < rightIdx - 1) {
212
+ if (state.next > state.maxCosets) {
213
+ throw new Error('MAX_COSETS');
214
+ }
215
+ const x = w[leftIdx];
216
+ const fresh = newCoset(state);
217
+ setEdge(state, left, x, fresh, queue);
218
+ processCoincidences(state, queue);
219
+ left = rep(state, fresh);
220
+ leftIdx++;
221
+ }
222
+ // Última conexión.
223
+ const x = w[leftIdx];
224
+ setEdge(state, left, x, right, queue);
225
+ processCoincidences(state, queue);
226
+ }
227
+ // toddCoxeter: enumera cosets de ⟨subgroupGens⟩ en ⟨S | R⟩.
228
+ // Si subgroupGens es vacío o no se pasa, enumera el grupo.
229
+ // Devuelve la `CosetTable` si terminó, o 'incomplete' si alcanzó
230
+ // el cap `maxCosets`.
231
+ function toddCoxeter(presentation, subgroupGens = [], maxCosets = 4096) {
232
+ const alphabet = buildAlphabet(presentation.generators);
233
+ const state = {
234
+ table: new Map(),
235
+ replaced: new Map(),
236
+ alphabet,
237
+ generators: [...presentation.generators],
238
+ relations: presentation.relations.map((r) => (0, words_1.reduceWord)(r)),
239
+ next: 1,
240
+ alive: new Set(),
241
+ maxCosets,
242
+ };
243
+ // Coset 1 representa H.
244
+ const h = newCoset(state);
245
+ const queue = [];
246
+ try {
247
+ // Aplicar generadores de H en el coset 1: τ(1, w) debe volver
248
+ // a 1 para cada w ∈ subgroupGens.
249
+ for (const w of subgroupGens) {
250
+ scanAndFill(state, h, (0, words_1.reduceWord)(w), queue);
251
+ processCoincidences(state, queue);
252
+ }
253
+ // Bucle principal: escanea relaciones en cada coset vivo
254
+ // hasta que ya no haya cambios.
255
+ let changed = true;
256
+ while (changed) {
257
+ changed = false;
258
+ const alive = [...state.alive].sort((a, b) => a - b);
259
+ for (const c of alive) {
260
+ if (!state.alive.has(c))
261
+ continue;
262
+ // Escaneamos cada relación.
263
+ for (const r of state.relations) {
264
+ if (r.length === 0)
265
+ continue;
266
+ const before = state.next;
267
+ scanAndFill(state, c, r, queue);
268
+ processCoincidences(state, queue);
269
+ if (state.next !== before)
270
+ changed = true;
271
+ }
272
+ // Y completamos las celdas vacías de este coset con
273
+ // cosets nuevos (definition phase de HLT).
274
+ if (!state.alive.has(c))
275
+ continue;
276
+ const row = state.table.get(rep(state, c));
277
+ if (!row)
278
+ continue;
279
+ for (const x of alphabet) {
280
+ if (row.get(x) === undefined) {
281
+ if (state.next > state.maxCosets) {
282
+ throw new Error('MAX_COSETS');
283
+ }
284
+ const fresh = newCoset(state);
285
+ setEdge(state, c, x, fresh, queue);
286
+ processCoincidences(state, queue);
287
+ changed = true;
288
+ break; // re-escanear desde el principio
289
+ }
290
+ }
291
+ }
292
+ }
293
+ }
294
+ catch (e) {
295
+ if (e instanceof Error && e.message === 'MAX_COSETS') {
296
+ return 'incomplete';
297
+ }
298
+ throw e;
299
+ }
300
+ // Compacta los cosets vivos a 1..N.
301
+ const aliveSorted = [...state.alive].sort((a, b) => a - b);
302
+ const remap = new Map();
303
+ aliveSorted.forEach((c, i) => remap.set(c, i + 1));
304
+ const outTable = new Map();
305
+ for (const c of aliveSorted) {
306
+ const row = state.table.get(c);
307
+ if (!row)
308
+ continue;
309
+ const newRow = new Map();
310
+ for (const [x, target] of row) {
311
+ const rt = rep(state, target);
312
+ const mapped = remap.get(rt);
313
+ if (mapped !== undefined)
314
+ newRow.set(x, mapped);
315
+ }
316
+ const mappedC = remap.get(c);
317
+ if (mappedC !== undefined)
318
+ outTable.set(mappedC, newRow);
319
+ }
320
+ return {
321
+ numCosets: aliveSorted.length,
322
+ generators: [...presentation.generators],
323
+ table: outTable,
324
+ };
325
+ }
326
+ // groupOrder: orden del grupo. Enumera cosets del subgrupo trivial.
327
+ // Devuelve número finito, 'infinite' si la conjetura por
328
+ // presentación libre es inmediata, o 'unknown' si Todd-Coxeter no
329
+ // terminó dentro del cap.
330
+ function groupOrder(presentation, maxCosets = 4096) {
331
+ // Caso trivial: ⟨ | ⟩ es el grupo libre de rango 0, orden 1.
332
+ if (presentation.generators.length === 0) {
333
+ return presentation.relations.length === 0 ? 1 : 1;
334
+ }
335
+ // Heurística simple: si todas las relaciones se reducen
336
+ // libremente a la palabra vacía, no aportan información y el
337
+ // grupo es libre F_n (infinito para n ≥ 1).
338
+ if (presentation.relations.every((r) => (0, words_1.reduceWord)(r).length === 0)) {
339
+ return 'infinite';
340
+ }
341
+ const t = toddCoxeter(presentation, [], maxCosets);
342
+ if (t === 'incomplete')
343
+ return 'unknown';
344
+ return t.numCosets;
345
+ }
346
+ // isInSubgroup: dado un Word `w` y una tabla de cosets del par
347
+ // (G, H), decide si w ∈ H comprobando si τ(1, w) = 1.
348
+ function isInSubgroup(word, table) {
349
+ const w = (0, words_1.reduceWord)(word);
350
+ let cur = 1;
351
+ for (const letter of w) {
352
+ const row = table.table.get(cur);
353
+ if (!row)
354
+ return false;
355
+ const next = row.get(letter);
356
+ if (next === undefined)
357
+ return false;
358
+ cur = next;
359
+ }
360
+ return cur === 1;
361
+ }
362
+ //# sourceMappingURL=todd-coxeter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todd-coxeter.js","sourceRoot":"","sources":["../../../src/reasoning/group-presentation/todd-coxeter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type Generator = string;
2
+ export type Word = Generator[];
3
+ export interface GroupPresentation {
4
+ generators: Generator[];
5
+ relations: Word[];
6
+ }
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reasoning/group-presentation/types.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;AAE/B,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,EAAE,IAAI,EAAE,CAAC;CACnB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Tipos para presentaciones finitas de grupos ⟨S | R⟩.
4
+ // ============================================================
5
+ //
6
+ // Un generador es un símbolo alfanumérico de un caracter. Su
7
+ // inverso se representa intercambiando mayúscula/minúscula:
8
+ // 'a' ↔ 'A' 'r' ↔ 'R'
9
+ // Esta convención (clásica en cómputo combinatorio de grupos)
10
+ // hace que palabras sobre el alfabeto libre F(S) sean strings o
11
+ // arrays cortos y la operación "inverso de letra" sea barata.
12
+ //
13
+ // Una `Word` es una secuencia ordenada de letras (generadores o
14
+ // sus inversos). La palabra vacía `[]` representa el neutro `1`.
15
+ //
16
+ // Una `GroupPresentation` `⟨S | R⟩` consta de los generadores S
17
+ // y un conjunto de relaciones R, donde cada relación r ∈ R es
18
+ // una palabra que se interpreta como `r = 1` en el grupo cociente
19
+ // F(S)/⟪R⟫.
20
+ // ============================================================
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reasoning/group-presentation/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uDAAuD;AACvD,+DAA+D;AAC/D,EAAE;AACF,6DAA6D;AAC7D,4DAA4D;AAC5D,iCAAiC;AACjC,8DAA8D;AAC9D,gEAAgE;AAChE,8DAA8D;AAC9D,EAAE;AACF,gEAAgE;AAChE,iEAAiE;AACjE,EAAE;AACF,gEAAgE;AAChE,8DAA8D;AAC9D,kEAAkE;AAClE,YAAY;AACZ,+DAA+D"}
@@ -0,0 +1,10 @@
1
+ import type { Generator, Word } from './types';
2
+ export declare function inverse(g: Generator): Generator;
3
+ export declare function reduceWord(w: Word): Word;
4
+ export declare function multiplyWords(a: Word, b: Word): Word;
5
+ export declare function invertWord(w: Word): Word;
6
+ export declare function wordEquals(a: Word, b: Word): boolean;
7
+ export declare function isReduced(w: Word): boolean;
8
+ export declare function parseWord(s: string): Word;
9
+ export declare function wordToString(w: Word): string;
10
+ //# sourceMappingURL=words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../../src/reasoning/group-presentation/words.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAU/C;AAKD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAWxC;AAID,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAEpD;AAGD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAMxC;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAMpD;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAc1C;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAMzC;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Aritmética del grupo libre F(S) sobre palabras.
4
+ // ============================================================
5
+ //
6
+ // Convención de inversos: letras a-z son generadores positivos;
7
+ // A-Z son sus inversos. `inverse('a') === 'A'` y viceversa. Para
8
+ // símbolos fuera de a-zA-Z (uso interno opcional), se asume que
9
+ // el caller pasa pares (g, g⁻¹) ya emparejados — pero las APIs
10
+ // públicas estándar (cyclic/dihedral/free/symmetric) viven en
11
+ // el alfabeto a-z/A-Z.
12
+ // ============================================================
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.inverse = inverse;
15
+ exports.reduceWord = reduceWord;
16
+ exports.multiplyWords = multiplyWords;
17
+ exports.invertWord = invertWord;
18
+ exports.wordEquals = wordEquals;
19
+ exports.isReduced = isReduced;
20
+ exports.parseWord = parseWord;
21
+ exports.wordToString = wordToString;
22
+ // inverse: invierte una letra (cambia caja). Lanza si no es una
23
+ // letra alfabética ASCII de un caracter, porque eso indica error
24
+ // del caller (las APIs expuestas siempre usan letras simples).
25
+ function inverse(g) {
26
+ if (g.length !== 1) {
27
+ throw new Error(`inverse: se esperaba letra de 1 caracter, recibí "${g}"`);
28
+ }
29
+ const code = g.charCodeAt(0);
30
+ // a..z
31
+ if (code >= 97 && code <= 122)
32
+ return String.fromCharCode(code - 32);
33
+ // A..Z
34
+ if (code >= 65 && code <= 90)
35
+ return String.fromCharCode(code + 32);
36
+ throw new Error(`inverse: letra no alfabética ASCII: "${g}"`);
37
+ }
38
+ // reduceWord: reducción libre. Cancela pares adyacentes `x x⁻¹`.
39
+ // Implementación O(n) con pila: lee secuencialmente y colapsa
40
+ // con el tope si se anulan. Idempotente.
41
+ function reduceWord(w) {
42
+ const stack = [];
43
+ for (const letter of w) {
44
+ const top = stack[stack.length - 1];
45
+ if (top !== undefined && top === inverse(letter)) {
46
+ stack.pop();
47
+ }
48
+ else {
49
+ stack.push(letter);
50
+ }
51
+ }
52
+ return stack;
53
+ }
54
+ // multiplyWords: concatena y reduce. La multiplicación en F(S)
55
+ // es la concatenación módulo cancelación libre.
56
+ function multiplyWords(a, b) {
57
+ return reduceWord([...a, ...b]);
58
+ }
59
+ // invertWord: w = x1 x2 ... xn ⇒ w⁻¹ = xn⁻¹ ... x1⁻¹.
60
+ function invertWord(w) {
61
+ const out = [];
62
+ for (let i = w.length - 1; i >= 0; i--) {
63
+ out.push(inverse(w[i]));
64
+ }
65
+ return out;
66
+ }
67
+ // wordEquals: igualdad sintáctica (no semántica módulo relaciones).
68
+ // Para igualdad módulo relaciones hay que pasar por Todd-Coxeter.
69
+ function wordEquals(a, b) {
70
+ if (a.length !== b.length)
71
+ return false;
72
+ for (let i = 0; i < a.length; i++) {
73
+ if (a[i] !== b[i])
74
+ return false;
75
+ }
76
+ return true;
77
+ }
78
+ // isReduced: true si no hay cancelaciones libres pendientes.
79
+ function isReduced(w) {
80
+ for (let i = 0; i < w.length - 1; i++) {
81
+ const a = w[i];
82
+ const b = w[i + 1];
83
+ if (a.length === 1 && b.length === 1) {
84
+ try {
85
+ if (inverse(a) === b)
86
+ return false;
87
+ }
88
+ catch {
89
+ // Si la letra no es alfabética simple, no podemos
90
+ // verificar cancelación con inverse; asumimos reducido.
91
+ }
92
+ }
93
+ }
94
+ return true;
95
+ }
96
+ // parseWord: convierte un string como "abAb" en ['a','b','A','b'].
97
+ // Útil para tests legibles. Acepta solo caracteres ASCII letra.
98
+ function parseWord(s) {
99
+ const out = [];
100
+ for (const ch of s) {
101
+ out.push(ch);
102
+ }
103
+ return out;
104
+ }
105
+ // wordToString: inversa de parseWord. La palabra vacía → "1".
106
+ function wordToString(w) {
107
+ return w.length === 0 ? '1' : w.join('');
108
+ }
109
+ //# sourceMappingURL=words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.js","sourceRoot":"","sources":["../../../src/reasoning/group-presentation/words.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=distributed-exchange.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distributed-exchange.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/proof-systems/distributed-exchange/distributed-exchange.test.ts"],"names":[],"mappings":""}