@stevenvo780/st-lang 4.9.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 (241) hide show
  1. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts +18 -0
  2. package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -0
  3. package/dist/logic/profiles/natural-deduction-nk/formula.js +102 -0
  4. package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -0
  5. package/dist/logic/profiles/natural-deduction-nk/index.d.ts +5 -0
  6. package/dist/logic/profiles/natural-deduction-nk/index.d.ts.map +1 -0
  7. package/dist/logic/profiles/natural-deduction-nk/index.js +28 -0
  8. package/dist/logic/profiles/natural-deduction-nk/index.js.map +1 -0
  9. package/dist/logic/profiles/natural-deduction-nk/prover.d.ts +49 -0
  10. package/dist/logic/profiles/natural-deduction-nk/prover.d.ts.map +1 -0
  11. package/dist/logic/profiles/natural-deduction-nk/prover.js +557 -0
  12. package/dist/logic/profiles/natural-deduction-nk/prover.js.map +1 -0
  13. package/dist/logic/profiles/natural-deduction-nk/types.d.ts +48 -0
  14. package/dist/logic/profiles/natural-deduction-nk/types.d.ts.map +1 -0
  15. package/dist/logic/profiles/natural-deduction-nk/types.js +35 -0
  16. package/dist/logic/profiles/natural-deduction-nk/types.js.map +1 -0
  17. package/dist/proof-systems/distributed-exchange/index.d.ts +101 -0
  18. package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -0
  19. package/dist/proof-systems/distributed-exchange/index.js +408 -0
  20. package/dist/proof-systems/distributed-exchange/index.js.map +1 -0
  21. package/dist/reasoning/automata/dfa.d.ts +17 -0
  22. package/dist/reasoning/automata/dfa.d.ts.map +1 -0
  23. package/dist/reasoning/automata/dfa.js +276 -0
  24. package/dist/reasoning/automata/dfa.js.map +1 -0
  25. package/dist/reasoning/automata/index.d.ts +8 -0
  26. package/dist/reasoning/automata/index.d.ts.map +1 -0
  27. package/dist/reasoning/automata/index.js +64 -0
  28. package/dist/reasoning/automata/index.js.map +1 -0
  29. package/dist/reasoning/automata/languages.d.ts +10 -0
  30. package/dist/reasoning/automata/languages.d.ts.map +1 -0
  31. package/dist/reasoning/automata/languages.js +78 -0
  32. package/dist/reasoning/automata/languages.js.map +1 -0
  33. package/dist/reasoning/automata/nfa.d.ts +8 -0
  34. package/dist/reasoning/automata/nfa.d.ts.map +1 -0
  35. package/dist/reasoning/automata/nfa.js +122 -0
  36. package/dist/reasoning/automata/nfa.js.map +1 -0
  37. package/dist/reasoning/automata/pda.d.ts +10 -0
  38. package/dist/reasoning/automata/pda.d.ts.map +1 -0
  39. package/dist/reasoning/automata/pda.js +169 -0
  40. package/dist/reasoning/automata/pda.js.map +1 -0
  41. package/dist/reasoning/automata/regex.d.ts +6 -0
  42. package/dist/reasoning/automata/regex.d.ts.map +1 -0
  43. package/dist/reasoning/automata/regex.js +259 -0
  44. package/dist/reasoning/automata/regex.js.map +1 -0
  45. package/dist/reasoning/automata/types.d.ts +69 -0
  46. package/dist/reasoning/automata/types.d.ts.map +1 -0
  47. package/dist/reasoning/automata/types.js +29 -0
  48. package/dist/reasoning/automata/types.js.map +1 -0
  49. package/dist/reasoning/computability/index.d.ts +239 -0
  50. package/dist/reasoning/computability/index.d.ts.map +1 -0
  51. package/dist/reasoning/computability/index.js +851 -0
  52. package/dist/reasoning/computability/index.js.map +1 -0
  53. package/dist/reasoning/graph-theory/index.d.ts +63 -0
  54. package/dist/reasoning/graph-theory/index.d.ts.map +1 -0
  55. package/dist/reasoning/graph-theory/index.js +1043 -0
  56. package/dist/reasoning/graph-theory/index.js.map +1 -0
  57. package/dist/reasoning/group-presentation/cayley.d.ts +8 -0
  58. package/dist/reasoning/group-presentation/cayley.d.ts.map +1 -0
  59. package/dist/reasoning/group-presentation/cayley.js +38 -0
  60. package/dist/reasoning/group-presentation/cayley.js.map +1 -0
  61. package/dist/reasoning/group-presentation/index.d.ts +8 -0
  62. package/dist/reasoning/group-presentation/index.d.ts.map +1 -0
  63. package/dist/reasoning/group-presentation/index.js +36 -0
  64. package/dist/reasoning/group-presentation/index.js.map +1 -0
  65. package/dist/reasoning/group-presentation/standard-groups.d.ts +6 -0
  66. package/dist/reasoning/group-presentation/standard-groups.d.ts.map +1 -0
  67. package/dist/reasoning/group-presentation/standard-groups.js +93 -0
  68. package/dist/reasoning/group-presentation/standard-groups.js.map +1 -0
  69. package/dist/reasoning/group-presentation/todd-coxeter.d.ts +10 -0
  70. package/dist/reasoning/group-presentation/todd-coxeter.d.ts.map +1 -0
  71. package/dist/reasoning/group-presentation/todd-coxeter.js +362 -0
  72. package/dist/reasoning/group-presentation/todd-coxeter.js.map +1 -0
  73. package/dist/reasoning/group-presentation/types.d.ts +7 -0
  74. package/dist/reasoning/group-presentation/types.d.ts.map +1 -0
  75. package/dist/reasoning/group-presentation/types.js +22 -0
  76. package/dist/reasoning/group-presentation/types.js.map +1 -0
  77. package/dist/reasoning/group-presentation/words.d.ts +10 -0
  78. package/dist/reasoning/group-presentation/words.d.ts.map +1 -0
  79. package/dist/reasoning/group-presentation/words.js +109 -0
  80. package/dist/reasoning/group-presentation/words.js.map +1 -0
  81. package/dist/reasoning/number-theory/crt.d.ts +9 -0
  82. package/dist/reasoning/number-theory/crt.d.ts.map +1 -0
  83. package/dist/reasoning/number-theory/crt.js +39 -0
  84. package/dist/reasoning/number-theory/crt.js.map +1 -0
  85. package/dist/reasoning/number-theory/diophantine.d.ts +10 -0
  86. package/dist/reasoning/number-theory/diophantine.d.ts.map +1 -0
  87. package/dist/reasoning/number-theory/diophantine.js +87 -0
  88. package/dist/reasoning/number-theory/diophantine.js.map +1 -0
  89. package/dist/reasoning/number-theory/factorization.d.ts +12 -0
  90. package/dist/reasoning/number-theory/factorization.d.ts.map +1 -0
  91. package/dist/reasoning/number-theory/factorization.js +136 -0
  92. package/dist/reasoning/number-theory/factorization.js.map +1 -0
  93. package/dist/reasoning/number-theory/gcd.d.ts +8 -0
  94. package/dist/reasoning/number-theory/gcd.d.ts.map +1 -0
  95. package/dist/reasoning/number-theory/gcd.js +51 -0
  96. package/dist/reasoning/number-theory/gcd.js.map +1 -0
  97. package/dist/reasoning/number-theory/index.d.ts +9 -0
  98. package/dist/reasoning/number-theory/index.d.ts.map +1 -0
  99. package/dist/reasoning/number-theory/index.js +46 -0
  100. package/dist/reasoning/number-theory/index.js.map +1 -0
  101. package/dist/reasoning/number-theory/modular.d.ts +6 -0
  102. package/dist/reasoning/number-theory/modular.d.ts.map +1 -0
  103. package/dist/reasoning/number-theory/modular.js +75 -0
  104. package/dist/reasoning/number-theory/modular.js.map +1 -0
  105. package/dist/reasoning/number-theory/primality.d.ts +6 -0
  106. package/dist/reasoning/number-theory/primality.d.ts.map +1 -0
  107. package/dist/reasoning/number-theory/primality.js +144 -0
  108. package/dist/reasoning/number-theory/primality.js.map +1 -0
  109. package/dist/reasoning/number-theory/symbols.d.ts +3 -0
  110. package/dist/reasoning/number-theory/symbols.d.ts.map +1 -0
  111. package/dist/reasoning/number-theory/symbols.js +57 -0
  112. package/dist/reasoning/number-theory/symbols.js.map +1 -0
  113. package/dist/reasoning/real-analysis/index.d.ts +127 -0
  114. package/dist/reasoning/real-analysis/index.d.ts.map +1 -0
  115. package/dist/reasoning/real-analysis/index.js +638 -0
  116. package/dist/reasoning/real-analysis/index.js.map +1 -0
  117. package/dist/reasoning/topology/index.d.ts +41 -0
  118. package/dist/reasoning/topology/index.d.ts.map +1 -0
  119. package/dist/reasoning/topology/index.js +739 -0
  120. package/dist/reasoning/topology/index.js.map +1 -0
  121. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts +2 -0
  122. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts.map +1 -0
  123. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js +288 -0
  124. package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js.map +1 -0
  125. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts +2 -0
  126. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts.map +1 -0
  127. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js +328 -0
  128. package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js.map +1 -0
  129. package/dist/tests/reasoning/automata/automata.test.d.ts +2 -0
  130. package/dist/tests/reasoning/automata/automata.test.d.ts.map +1 -0
  131. package/dist/tests/reasoning/automata/automata.test.js +310 -0
  132. package/dist/tests/reasoning/automata/automata.test.js.map +1 -0
  133. package/dist/tests/reasoning/computability/computability.test.d.ts +2 -0
  134. package/dist/tests/reasoning/computability/computability.test.d.ts.map +1 -0
  135. package/dist/tests/reasoning/computability/computability.test.js +246 -0
  136. package/dist/tests/reasoning/computability/computability.test.js.map +1 -0
  137. package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts +2 -0
  138. package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts.map +1 -0
  139. package/dist/tests/reasoning/graph-theory/graph-theory.test.js +363 -0
  140. package/dist/tests/reasoning/graph-theory/graph-theory.test.js.map +1 -0
  141. package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts +2 -0
  142. package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts.map +1 -0
  143. package/dist/tests/reasoning/group-presentation/group-presentation.test.js +229 -0
  144. package/dist/tests/reasoning/group-presentation/group-presentation.test.js.map +1 -0
  145. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts +2 -0
  146. package/dist/tests/reasoning/number-theory/number-theory.test.d.ts.map +1 -0
  147. package/dist/tests/reasoning/number-theory/number-theory.test.js +170 -0
  148. package/dist/tests/reasoning/number-theory/number-theory.test.js.map +1 -0
  149. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts +2 -0
  150. package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts.map +1 -0
  151. package/dist/tests/reasoning/real-analysis/real-analysis.test.js +197 -0
  152. package/dist/tests/reasoning/real-analysis/real-analysis.test.js.map +1 -0
  153. package/dist/tests/reasoning/topology/topology.test.d.ts +2 -0
  154. package/dist/tests/reasoning/topology/topology.test.d.ts.map +1 -0
  155. package/dist/tests/reasoning/topology/topology.test.js +327 -0
  156. package/dist/tests/reasoning/topology/topology.test.js.map +1 -0
  157. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts +2 -0
  158. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts.map +1 -0
  159. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js +411 -0
  160. package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js.map +1 -0
  161. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts +2 -0
  162. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts.map +1 -0
  163. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js +473 -0
  164. package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js.map +1 -0
  165. package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts +2 -0
  166. package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts.map +1 -0
  167. package/dist/tests/tooling/lemma-library/lemma-library.test.js +197 -0
  168. package/dist/tests/tooling/lemma-library/lemma-library.test.js.map +1 -0
  169. package/dist/tests/tooling/provenance/ledger.test.d.ts +2 -0
  170. package/dist/tests/tooling/provenance/ledger.test.d.ts.map +1 -0
  171. package/dist/tests/tooling/provenance/ledger.test.js +545 -0
  172. package/dist/tests/tooling/provenance/ledger.test.js.map +1 -0
  173. package/dist/tooling/exporters/coq-v2/index.d.ts +68 -0
  174. package/dist/tooling/exporters/coq-v2/index.d.ts.map +1 -0
  175. package/dist/tooling/exporters/coq-v2/index.js +692 -0
  176. package/dist/tooling/exporters/coq-v2/index.js.map +1 -0
  177. package/dist/tooling/exporters/lean4/index.d.ts +47 -0
  178. package/dist/tooling/exporters/lean4/index.d.ts.map +1 -0
  179. package/dist/tooling/exporters/lean4/index.js +423 -0
  180. package/dist/tooling/exporters/lean4/index.js.map +1 -0
  181. package/dist/tooling/lemma-library/apply.d.ts +9 -0
  182. package/dist/tooling/lemma-library/apply.d.ts.map +1 -0
  183. package/dist/tooling/lemma-library/apply.js +94 -0
  184. package/dist/tooling/lemma-library/apply.js.map +1 -0
  185. package/dist/tooling/lemma-library/arithmetic.d.ts +3 -0
  186. package/dist/tooling/lemma-library/arithmetic.d.ts.map +1 -0
  187. package/dist/tooling/lemma-library/arithmetic.js +176 -0
  188. package/dist/tooling/lemma-library/arithmetic.js.map +1 -0
  189. package/dist/tooling/lemma-library/firstorder.d.ts +3 -0
  190. package/dist/tooling/lemma-library/firstorder.d.ts.map +1 -0
  191. package/dist/tooling/lemma-library/firstorder.js +136 -0
  192. package/dist/tooling/lemma-library/firstorder.js.map +1 -0
  193. package/dist/tooling/lemma-library/index.d.ts +13 -0
  194. package/dist/tooling/lemma-library/index.d.ts.map +1 -0
  195. package/dist/tooling/lemma-library/index.js +32 -0
  196. package/dist/tooling/lemma-library/index.js.map +1 -0
  197. package/dist/tooling/lemma-library/library.d.ts +34 -0
  198. package/dist/tooling/lemma-library/library.d.ts.map +1 -0
  199. package/dist/tooling/lemma-library/library.js +126 -0
  200. package/dist/tooling/lemma-library/library.js.map +1 -0
  201. package/dist/tooling/lemma-library/modal.d.ts +3 -0
  202. package/dist/tooling/lemma-library/modal.d.ts.map +1 -0
  203. package/dist/tooling/lemma-library/modal.js +138 -0
  204. package/dist/tooling/lemma-library/modal.js.map +1 -0
  205. package/dist/tooling/lemma-library/propositional.d.ts +3 -0
  206. package/dist/tooling/lemma-library/propositional.d.ts.map +1 -0
  207. package/dist/tooling/lemma-library/propositional.js +265 -0
  208. package/dist/tooling/lemma-library/propositional.js.map +1 -0
  209. package/dist/tooling/lemma-library/set-theory.d.ts +3 -0
  210. package/dist/tooling/lemma-library/set-theory.d.ts.map +1 -0
  211. package/dist/tooling/lemma-library/set-theory.js +134 -0
  212. package/dist/tooling/lemma-library/set-theory.js.map +1 -0
  213. package/dist/tooling/lemma-library/standard.d.ts +3 -0
  214. package/dist/tooling/lemma-library/standard.d.ts.map +1 -0
  215. package/dist/tooling/lemma-library/standard.js +27 -0
  216. package/dist/tooling/lemma-library/standard.js.map +1 -0
  217. package/dist/tooling/lemma-library/tfidf.d.ts +5 -0
  218. package/dist/tooling/lemma-library/tfidf.d.ts.map +1 -0
  219. package/dist/tooling/lemma-library/tfidf.js +100 -0
  220. package/dist/tooling/lemma-library/tfidf.js.map +1 -0
  221. package/dist/tooling/lemma-library/tokenize.d.ts +2 -0
  222. package/dist/tooling/lemma-library/tokenize.d.ts.map +1 -0
  223. package/dist/tooling/lemma-library/tokenize.js +74 -0
  224. package/dist/tooling/lemma-library/tokenize.js.map +1 -0
  225. package/dist/tooling/lemma-library/types.d.ts +53 -0
  226. package/dist/tooling/lemma-library/types.d.ts.map +1 -0
  227. package/dist/tooling/lemma-library/types.js +10 -0
  228. package/dist/tooling/lemma-library/types.js.map +1 -0
  229. package/dist/tooling/provenance/index.d.ts +3 -0
  230. package/dist/tooling/provenance/index.d.ts.map +1 -0
  231. package/dist/tooling/provenance/index.js +16 -0
  232. package/dist/tooling/provenance/index.js.map +1 -0
  233. package/dist/tooling/provenance/ledger.d.ts +89 -0
  234. package/dist/tooling/provenance/ledger.d.ts.map +1 -0
  235. package/dist/tooling/provenance/ledger.js +439 -0
  236. package/dist/tooling/provenance/ledger.js.map +1 -0
  237. package/dist/tooling/provenance/types.d.ts +70 -0
  238. package/dist/tooling/provenance/types.d.ts.map +1 -0
  239. package/dist/tooling/provenance/types.js +14 -0
  240. package/dist/tooling/provenance/types.js.map +1 -0
  241. package/package.json +1 -1
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Automata — PDA (Pushdown Automaton)
4
+ // ============================================================
5
+ //
6
+ // Aceptación por estado final, con simulación no determinista.
7
+ //
8
+ // Una configuración es (state, posición de entrada, pila como string).
9
+ // Se exploran con BFS pero con memoización de configuraciones vistas
10
+ // para evitar bucles ε. Si la búsqueda explota, `maxDepth` corta.
11
+ // ============================================================
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.pdaAccepts = pdaAccepts;
14
+ exports.pdaPalindromes = pdaPalindromes;
15
+ exports.pdaBalancedParens = pdaBalancedParens;
16
+ const types_1 = require("./types");
17
+ const configKey = (c) => `${c.state}|${c.pos}|${c.stack}`;
18
+ /** ¿`M` acepta `input`?
19
+ * `maxSteps` cota el número de configuraciones expandidas. */
20
+ function pdaAccepts(M, input, maxSteps = 100_000) {
21
+ const start = {
22
+ state: M.initial,
23
+ pos: 0,
24
+ stack: M.initialStack,
25
+ };
26
+ const queue = [start];
27
+ const seen = new Set([configKey(start)]);
28
+ let steps = 0;
29
+ while (queue.length > 0) {
30
+ if (steps++ > maxSteps)
31
+ return false;
32
+ const cfg = queue.shift();
33
+ if (!cfg)
34
+ break;
35
+ // Aceptación por estado final con input consumido.
36
+ if (cfg.pos === input.length && M.accept.has(cfg.state))
37
+ return true;
38
+ const top = cfg.stack.length > 0 ? cfg.stack[cfg.stack.length - 1] : undefined;
39
+ for (const t of M.transitions) {
40
+ if (t.state !== cfg.state)
41
+ continue;
42
+ // Symbol de entrada.
43
+ if (t.read !== types_1.EPSILON) {
44
+ if (cfg.pos >= input.length)
45
+ continue;
46
+ if (input[cfg.pos] !== t.read)
47
+ continue;
48
+ }
49
+ // Pop.
50
+ if (t.popTop !== types_1.EPSILON) {
51
+ if (top === undefined)
52
+ continue;
53
+ if (top !== t.popTop)
54
+ continue;
55
+ }
56
+ const newStack = t.popTop !== types_1.EPSILON ? cfg.stack.slice(0, -1) : cfg.stack;
57
+ // pushTop: el último elemento queda en la cima → simplemente
58
+ // concatenar la string en orden.
59
+ const pushed = t.pushTop.join('');
60
+ const finalStack = newStack + pushed;
61
+ const newPos = t.read !== types_1.EPSILON ? cfg.pos + 1 : cfg.pos;
62
+ const next = {
63
+ state: t.nextState,
64
+ pos: newPos,
65
+ stack: finalStack,
66
+ };
67
+ const key = configKey(next);
68
+ if (seen.has(key))
69
+ continue;
70
+ seen.add(key);
71
+ queue.push(next);
72
+ }
73
+ }
74
+ return false;
75
+ }
76
+ // ── Lenguajes estándar libres de contexto ────────────────────
77
+ /** PDA que acepta palíndromes pares e impares sobre {a, b} usando un
78
+ * marcador no determinista (transición ε al "espejo"). */
79
+ function pdaPalindromes(alphabet = ['a', 'b']) {
80
+ const Z = '$';
81
+ // Estados:
82
+ // q0: empujando la primera mitad.
83
+ // q1: comparando contra la segunda mitad.
84
+ // q2: accept.
85
+ const states = new Set(['q0', 'q1', 'q2']);
86
+ const stackAlphabet = new Set([Z, ...alphabet]);
87
+ const alpha = new Set(alphabet);
88
+ const transitions = [];
89
+ // q0 → q0, leer x, push x (apilar)
90
+ for (const x of alphabet) {
91
+ transitions.push({
92
+ state: 'q0',
93
+ read: x,
94
+ popTop: types_1.EPSILON,
95
+ nextState: 'q0',
96
+ pushTop: [x],
97
+ });
98
+ }
99
+ // q0 → q1, ε, ε, [] (cambio al modo comparar, palíndrome par)
100
+ transitions.push({
101
+ state: 'q0',
102
+ read: types_1.EPSILON,
103
+ popTop: types_1.EPSILON,
104
+ nextState: 'q1',
105
+ pushTop: [],
106
+ });
107
+ // q0 → q1, leer x, ε, [] (skip carácter central, palíndrome impar)
108
+ for (const x of alphabet) {
109
+ transitions.push({
110
+ state: 'q0',
111
+ read: x,
112
+ popTop: types_1.EPSILON,
113
+ nextState: 'q1',
114
+ pushTop: [],
115
+ });
116
+ }
117
+ // q1 → q1, leer x, pop x, [] (matchear segunda mitad)
118
+ for (const x of alphabet) {
119
+ transitions.push({
120
+ state: 'q1',
121
+ read: x,
122
+ popTop: x,
123
+ nextState: 'q1',
124
+ pushTop: [],
125
+ });
126
+ }
127
+ // q1 → q2, ε, pop Z, [Z] (stack vuelve a $)
128
+ transitions.push({
129
+ state: 'q1',
130
+ read: types_1.EPSILON,
131
+ popTop: Z,
132
+ nextState: 'q2',
133
+ pushTop: [Z],
134
+ });
135
+ return {
136
+ states,
137
+ alphabet: alpha,
138
+ stackAlphabet,
139
+ transitions,
140
+ initial: 'q0',
141
+ initialStack: Z,
142
+ accept: new Set(['q2']),
143
+ };
144
+ }
145
+ /** PDA que acepta paréntesis balanceados (alfabeto '(' ')'). */
146
+ function pdaBalancedParens() {
147
+ const Z = '$';
148
+ const states = new Set(['q0', 'q1']);
149
+ const alpha = new Set(['(', ')']);
150
+ const stackAlphabet = new Set([Z, '(']);
151
+ const transitions = [
152
+ // Abrir paréntesis: push '('.
153
+ { state: 'q0', read: '(', popTop: types_1.EPSILON, nextState: 'q0', pushTop: ['('] },
154
+ // Cerrar paréntesis: pop '('.
155
+ { state: 'q0', read: ')', popTop: '(', nextState: 'q0', pushTop: [] },
156
+ // Aceptar al ver $ en la cima (todo balanceado) — sin tocar pila.
157
+ { state: 'q0', read: types_1.EPSILON, popTop: Z, nextState: 'q1', pushTop: [Z] },
158
+ ];
159
+ return {
160
+ states,
161
+ alphabet: alpha,
162
+ stackAlphabet,
163
+ transitions,
164
+ initial: 'q0',
165
+ initialStack: Z,
166
+ accept: new Set(['q1']),
167
+ };
168
+ }
169
+ //# sourceMappingURL=pda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.js","sourceRoot":"","sources":["../../../src/reasoning/automata/pda.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { NFA, Regex } from './types';
2
+ export declare function parseRegex(s: string): Regex;
3
+ export declare function regexToNfa(r: Regex): NFA;
4
+ /** Atajo: ¿la expresión regular `r` matchea exactamente `s`? */
5
+ export declare function regexMatches(r: Regex, s: string): boolean;
6
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../src/reasoning/automata/regex.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAU,MAAM,SAAS,CAAC;AA+FlD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAO3C;AAoHD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAwCxC;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAGzD"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Automata — Regex parsing + Thompson construction
4
+ // ============================================================
5
+ //
6
+ // Gramática soportada (precedencia: postfix > concat > '|'):
7
+ //
8
+ // expr := term ( '|' term )*
9
+ // term := factor* (concatenación implícita)
10
+ // factor := atom ( '*' | '+' | '?' )*
11
+ // atom := char | '(' expr ')' | '∅' (vacío) | 'ε'
12
+ //
13
+ // Caracteres reservados: ( ) | * + ? → escapar con '\'.
14
+ // '∅' y 'ε' son atómicos opcionales (no son obligatorios para parsear).
15
+ //
16
+ // `regexToNfa` construye un NFA por la construcción de Thompson:
17
+ // para cada operador un fragmento con un único initial y un único accept.
18
+ // ============================================================
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.parseRegex = parseRegex;
21
+ exports.regexToNfa = regexToNfa;
22
+ exports.regexMatches = regexMatches;
23
+ const types_1 = require("./types");
24
+ const nfa_1 = require("./nfa");
25
+ function peek(c) {
26
+ return c.i < c.s.length ? c.s[c.i] : undefined;
27
+ }
28
+ function consume(c) {
29
+ const ch = peek(c);
30
+ if (ch !== undefined)
31
+ c.i++;
32
+ return ch;
33
+ }
34
+ function expect(c, ch) {
35
+ const got = consume(c);
36
+ if (got !== ch)
37
+ throw new Error(`parseRegex: esperaba "${ch}" en pos ${c.i - 1}, vi "${got ?? 'EOF'}"`);
38
+ }
39
+ const POSTFIX = new Set(['*', '+', '?']);
40
+ const SPECIAL = new Set(['(', ')', '|', '*', '+', '?', '\\']);
41
+ function parseExpr(c) {
42
+ let left = parseTerm(c);
43
+ while (peek(c) === '|') {
44
+ consume(c);
45
+ const right = parseTerm(c);
46
+ left = { kind: 'union', left, right };
47
+ }
48
+ return left;
49
+ }
50
+ function parseTerm(c) {
51
+ // term puede ser vacío → ε.
52
+ const atoms = [];
53
+ while (true) {
54
+ const ch = peek(c);
55
+ if (ch === undefined || ch === '|' || ch === ')')
56
+ break;
57
+ atoms.push(parseFactor(c));
58
+ }
59
+ if (atoms.length === 0)
60
+ return { kind: 'epsilon' };
61
+ return atoms.reduce((acc, r) => ({ kind: 'concat', left: acc, right: r }));
62
+ }
63
+ function parseFactor(c) {
64
+ let atom = parseAtom(c);
65
+ while (true) {
66
+ const ch = peek(c);
67
+ if (ch === undefined || !POSTFIX.has(ch))
68
+ break;
69
+ consume(c);
70
+ if (ch === '*')
71
+ atom = { kind: 'star', arg: atom };
72
+ else if (ch === '+')
73
+ atom = { kind: 'plus', arg: atom };
74
+ else if (ch === '?')
75
+ atom = { kind: 'optional', arg: atom };
76
+ }
77
+ return atom;
78
+ }
79
+ function parseAtom(c) {
80
+ const ch = peek(c);
81
+ if (ch === undefined)
82
+ throw new Error('parseRegex: EOF inesperado en atom');
83
+ if (ch === '(') {
84
+ consume(c);
85
+ const inner = parseExpr(c);
86
+ expect(c, ')');
87
+ return inner;
88
+ }
89
+ if (ch === '\\') {
90
+ consume(c);
91
+ const esc = consume(c);
92
+ if (esc === undefined)
93
+ throw new Error('parseRegex: escape colgante');
94
+ return { kind: 'char', c: esc };
95
+ }
96
+ if (ch === '∅') {
97
+ consume(c);
98
+ return { kind: 'empty' };
99
+ }
100
+ if (ch === 'ε') {
101
+ consume(c);
102
+ return { kind: 'epsilon' };
103
+ }
104
+ if (SPECIAL.has(ch)) {
105
+ throw new Error(`parseRegex: caracter "${ch}" reservado en pos ${c.i}`);
106
+ }
107
+ consume(c);
108
+ return { kind: 'char', c: ch };
109
+ }
110
+ function parseRegex(s) {
111
+ const c = { s, i: 0 };
112
+ const r = parseExpr(c);
113
+ if (c.i !== s.length) {
114
+ throw new Error(`parseRegex: tokens restantes en pos ${c.i}: "${s.slice(c.i)}"`);
115
+ }
116
+ return r;
117
+ }
118
+ function emptyFragment(initial, accept) {
119
+ return { initial, accept, edges: new Map(), alphabet: new Set() };
120
+ }
121
+ function addEdge(frag, from, sym, to) {
122
+ let row = frag.edges.get(from);
123
+ if (!row) {
124
+ row = new Map();
125
+ frag.edges.set(from, row);
126
+ }
127
+ let set = row.get(sym);
128
+ if (!set) {
129
+ set = new Set();
130
+ row.set(sym, set);
131
+ }
132
+ set.add(to);
133
+ if (sym !== types_1.EPSILON)
134
+ frag.alphabet.add(sym);
135
+ }
136
+ function mergeEdges(into, other) {
137
+ for (const [from, row] of other.edges) {
138
+ for (const [sym, set] of row) {
139
+ for (const to of set)
140
+ addEdge(into, from, sym, to);
141
+ }
142
+ }
143
+ for (const a of other.alphabet)
144
+ into.alphabet.add(a);
145
+ }
146
+ function buildFragment(r, fresh) {
147
+ if (r.kind === 'epsilon') {
148
+ const init = fresh();
149
+ const acc = fresh();
150
+ const frag = emptyFragment(init, acc);
151
+ addEdge(frag, init, types_1.EPSILON, acc);
152
+ return frag;
153
+ }
154
+ if (r.kind === 'empty') {
155
+ // Lenguaje vacío: dos estados sin conexión. No hay camino al accept.
156
+ const init = fresh();
157
+ const acc = fresh();
158
+ return emptyFragment(init, acc);
159
+ }
160
+ if (r.kind === 'char') {
161
+ const init = fresh();
162
+ const acc = fresh();
163
+ const frag = emptyFragment(init, acc);
164
+ addEdge(frag, init, r.c, acc);
165
+ return frag;
166
+ }
167
+ if (r.kind === 'concat') {
168
+ const A = buildFragment(r.left, fresh);
169
+ const B = buildFragment(r.right, fresh);
170
+ const frag = emptyFragment(A.initial, B.accept);
171
+ mergeEdges(frag, A);
172
+ mergeEdges(frag, B);
173
+ addEdge(frag, A.accept, types_1.EPSILON, B.initial);
174
+ return frag;
175
+ }
176
+ if (r.kind === 'union') {
177
+ const A = buildFragment(r.left, fresh);
178
+ const B = buildFragment(r.right, fresh);
179
+ const init = fresh();
180
+ const acc = fresh();
181
+ const frag = emptyFragment(init, acc);
182
+ mergeEdges(frag, A);
183
+ mergeEdges(frag, B);
184
+ addEdge(frag, init, types_1.EPSILON, A.initial);
185
+ addEdge(frag, init, types_1.EPSILON, B.initial);
186
+ addEdge(frag, A.accept, types_1.EPSILON, acc);
187
+ addEdge(frag, B.accept, types_1.EPSILON, acc);
188
+ return frag;
189
+ }
190
+ if (r.kind === 'star') {
191
+ const A = buildFragment(r.arg, fresh);
192
+ const init = fresh();
193
+ const acc = fresh();
194
+ const frag = emptyFragment(init, acc);
195
+ mergeEdges(frag, A);
196
+ addEdge(frag, init, types_1.EPSILON, A.initial);
197
+ addEdge(frag, init, types_1.EPSILON, acc);
198
+ addEdge(frag, A.accept, types_1.EPSILON, A.initial);
199
+ addEdge(frag, A.accept, types_1.EPSILON, acc);
200
+ return frag;
201
+ }
202
+ if (r.kind === 'plus') {
203
+ // a+ = a · a*
204
+ return buildFragment({ kind: 'concat', left: r.arg, right: { kind: 'star', arg: r.arg } }, fresh);
205
+ }
206
+ if (r.kind === 'optional') {
207
+ // a? = a | ε
208
+ return buildFragment({ kind: 'union', left: r.arg, right: { kind: 'epsilon' } }, fresh);
209
+ }
210
+ // Exhaustivo.
211
+ const _exhaustive = r;
212
+ return _exhaustive;
213
+ }
214
+ function regexToNfa(r) {
215
+ let counter = 0;
216
+ const fresh = () => counter++;
217
+ const frag = buildFragment(r, fresh);
218
+ // Convertir entero → string para encajar con NFA.
219
+ const stateName = (n) => `s${n}`;
220
+ const states = new Set();
221
+ const transitions = new Map();
222
+ // Asegurar que todos los estados conocidos estén poblados, incluso los
223
+ // que sólo aparecen como destino.
224
+ const seen = new Set();
225
+ for (const [from, row] of frag.edges) {
226
+ seen.add(from);
227
+ for (const set of row.values())
228
+ for (const to of set)
229
+ seen.add(to);
230
+ }
231
+ seen.add(frag.initial);
232
+ seen.add(frag.accept);
233
+ for (const n of seen)
234
+ states.add(stateName(n));
235
+ for (const [from, row] of frag.edges) {
236
+ const newRow = new Map();
237
+ for (const [sym, set] of row) {
238
+ const newSet = new Set();
239
+ for (const to of set)
240
+ newSet.add(stateName(to));
241
+ newRow.set(sym, newSet);
242
+ }
243
+ transitions.set(stateName(from), newRow);
244
+ }
245
+ return {
246
+ states,
247
+ alphabet: frag.alphabet,
248
+ transitions,
249
+ initial: stateName(frag.initial),
250
+ accept: new Set([stateName(frag.accept)]),
251
+ epsilon: types_1.EPSILON,
252
+ };
253
+ }
254
+ /** Atajo: ¿la expresión regular `r` matchea exactamente `s`? */
255
+ function regexMatches(r, s) {
256
+ const nfa = regexToNfa(r);
257
+ return (0, nfa_1.nfaAccepts)(nfa, s);
258
+ }
259
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../src/reasoning/automata/regex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export declare const EPSILON: "\u03B5";
2
+ export type Symbol = string;
3
+ export interface DFA {
4
+ readonly states: Set<string>;
5
+ readonly alphabet: Set<Symbol>;
6
+ /** state → symbol → state. La función puede ser parcial: si falta una
7
+ * arista para (state, symbol), la palabra es rechazada. */
8
+ readonly transitions: Map<string, Map<Symbol, string>>;
9
+ readonly initial: string;
10
+ readonly accept: Set<string>;
11
+ }
12
+ export interface NFA {
13
+ readonly states: Set<string>;
14
+ readonly alphabet: Set<Symbol>;
15
+ /** state → symbol (puede ser EPSILON) → P(states). */
16
+ readonly transitions: Map<string, Map<Symbol, Set<string>>>;
17
+ readonly initial: string;
18
+ readonly accept: Set<string>;
19
+ /** Símbolo usado como ε; default `EPSILON` ('ε'). */
20
+ readonly epsilon?: Symbol;
21
+ }
22
+ export type Regex = {
23
+ kind: 'empty';
24
+ } | {
25
+ kind: 'epsilon';
26
+ } | {
27
+ kind: 'char';
28
+ c: Symbol;
29
+ } | {
30
+ kind: 'concat';
31
+ left: Regex;
32
+ right: Regex;
33
+ } | {
34
+ kind: 'union';
35
+ left: Regex;
36
+ right: Regex;
37
+ } | {
38
+ kind: 'star';
39
+ arg: Regex;
40
+ } | {
41
+ kind: 'plus';
42
+ arg: Regex;
43
+ } | {
44
+ kind: 'optional';
45
+ arg: Regex;
46
+ };
47
+ export interface PDATransition {
48
+ /** Estado origen. */
49
+ readonly state: string;
50
+ /** Símbolo de entrada a consumir; EPSILON = sin consumir. */
51
+ readonly read: Symbol;
52
+ /** Tope de pila a desapilar; EPSILON = sin pop. */
53
+ readonly popTop: Symbol;
54
+ /** Estado destino. */
55
+ readonly nextState: string;
56
+ /** Símbolos a apilar (el último queda en la cima). [] = no push. */
57
+ readonly pushTop: ReadonlyArray<Symbol>;
58
+ }
59
+ export interface PDA {
60
+ readonly states: Set<string>;
61
+ readonly alphabet: Set<Symbol>;
62
+ readonly stackAlphabet: Set<Symbol>;
63
+ readonly transitions: ReadonlyArray<PDATransition>;
64
+ readonly initial: string;
65
+ readonly initialStack: Symbol;
66
+ /** Aceptación por estado final. */
67
+ readonly accept: Set<string>;
68
+ }
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reasoning/automata/types.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,OAAO,EAAG,QAAY,CAAC;AAEpC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAI5B,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B;gEAC4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAID,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,CAAC;AAIrC,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Automata — Tipos
4
+ // ============================================================
5
+ //
6
+ // Modelado clásico de autómatas finitos y de pila:
7
+ //
8
+ // DFA (Deterministic Finite Automaton)
9
+ // · Transición total: state × symbol → state.
10
+ // · Acepta una palabra sii el camino termina en estado final.
11
+ //
12
+ // NFA (Nondeterministic Finite Automaton, con ε-transiciones)
13
+ // · Transición: state × (symbol ∪ {ε}) → P(states).
14
+ // · Acepta sii existe un camino que termina en final.
15
+ //
16
+ // PDA (Pushdown Automaton) — variante "by final state"
17
+ // · Transición: (state, read, popTop) → (nextState, pushTop[]).
18
+ // · `read` o `popTop` pueden ser ε (sin consumir / sin tope).
19
+ // · pushTop se apila en orden inverso (último → top).
20
+ //
21
+ // Notas:
22
+ // • Los símbolos son strings de longitud 1 (chars). El alfabeto
23
+ // se mantiene explícito porque define complement(M).
24
+ // • La constante EPSILON ('ε') vive aquí para reutilizarse.
25
+ // ============================================================
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.EPSILON = void 0;
28
+ exports.EPSILON = 'ε';
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reasoning/automata/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAC/D,EAAE;AACF,mDAAmD;AACnD,EAAE;AACF,yCAAyC;AACzC,kDAAkD;AAClD,kEAAkE;AAClE,EAAE;AACF,gEAAgE;AAChE,wDAAwD;AACxD,0DAA0D;AAC1D,EAAE;AACF,yDAAyD;AACzD,oEAAoE;AACpE,kEAAkE;AAClE,0DAA0D;AAC1D,EAAE;AACF,SAAS;AACT,kEAAkE;AAClE,yDAAyD;AACzD,8DAA8D;AAC9D,+DAA+D;;;AAElD,QAAA,OAAO,GAAG,GAAY,CAAC"}