@stevenvo780/st-lang 4.5.1 → 4.5.2

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 (285) hide show
  1. package/dist/bdd/index.d.ts +4 -0
  2. package/dist/bdd/index.d.ts.map +1 -0
  3. package/dist/bdd/index.js +29 -0
  4. package/dist/bdd/index.js.map +1 -0
  5. package/dist/bdd/manager.d.ts +122 -0
  6. package/dist/bdd/manager.d.ts.map +1 -0
  7. package/dist/bdd/manager.js +524 -0
  8. package/dist/bdd/manager.js.map +1 -0
  9. package/dist/bdd/types.d.ts +20 -0
  10. package/dist/bdd/types.d.ts.map +1 -0
  11. package/dist/bdd/types.js +28 -0
  12. package/dist/bdd/types.js.map +1 -0
  13. package/dist/game-theory/common-games.d.ts +50 -0
  14. package/dist/game-theory/common-games.d.ts.map +1 -0
  15. package/dist/game-theory/common-games.js +112 -0
  16. package/dist/game-theory/common-games.js.map +1 -0
  17. package/dist/game-theory/dominance.d.ts +26 -0
  18. package/dist/game-theory/dominance.d.ts.map +1 -0
  19. package/dist/game-theory/dominance.js +203 -0
  20. package/dist/game-theory/dominance.js.map +1 -0
  21. package/dist/game-theory/index.d.ts +8 -0
  22. package/dist/game-theory/index.d.ts.map +1 -0
  23. package/dist/game-theory/index.js +47 -0
  24. package/dist/game-theory/index.js.map +1 -0
  25. package/dist/game-theory/lemke-howson.d.ts +3 -0
  26. package/dist/game-theory/lemke-howson.d.ts.map +1 -0
  27. package/dist/game-theory/lemke-howson.js +269 -0
  28. package/dist/game-theory/lemke-howson.js.map +1 -0
  29. package/dist/game-theory/linalg.d.ts +7 -0
  30. package/dist/game-theory/linalg.d.ts.map +1 -0
  31. package/dist/game-theory/linalg.js +69 -0
  32. package/dist/game-theory/linalg.js.map +1 -0
  33. package/dist/game-theory/pure-nash.d.ts +3 -0
  34. package/dist/game-theory/pure-nash.d.ts.map +1 -0
  35. package/dist/game-theory/pure-nash.js +86 -0
  36. package/dist/game-theory/pure-nash.js.map +1 -0
  37. package/dist/game-theory/support-enumeration.d.ts +3 -0
  38. package/dist/game-theory/support-enumeration.d.ts.map +1 -0
  39. package/dist/game-theory/support-enumeration.js +214 -0
  40. package/dist/game-theory/support-enumeration.js.map +1 -0
  41. package/dist/game-theory/types.d.ts +57 -0
  42. package/dist/game-theory/types.d.ts.map +1 -0
  43. package/dist/game-theory/types.js +191 -0
  44. package/dist/game-theory/types.js.map +1 -0
  45. package/dist/index.d.ts +9 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +36 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/information-theory/index.d.ts +29 -0
  50. package/dist/information-theory/index.d.ts.map +1 -0
  51. package/dist/information-theory/index.js +323 -0
  52. package/dist/information-theory/index.js.map +1 -0
  53. package/dist/namespaces/logic.d.ts +42 -0
  54. package/dist/namespaces/logic.d.ts.map +1 -0
  55. package/dist/namespaces/logic.js +112 -0
  56. package/dist/namespaces/logic.js.map +1 -0
  57. package/dist/namespaces/proof-systems.d.ts +18 -0
  58. package/dist/namespaces/proof-systems.d.ts.map +1 -0
  59. package/dist/namespaces/proof-systems.js +59 -0
  60. package/dist/namespaces/proof-systems.js.map +1 -0
  61. package/dist/namespaces/reasoning.d.ts +26 -0
  62. package/dist/namespaces/reasoning.d.ts.map +1 -0
  63. package/dist/namespaces/reasoning.js +72 -0
  64. package/dist/namespaces/reasoning.js.map +1 -0
  65. package/dist/namespaces/semantics.d.ts +21 -0
  66. package/dist/namespaces/semantics.d.ts.map +1 -0
  67. package/dist/namespaces/semantics.js +64 -0
  68. package/dist/namespaces/semantics.js.map +1 -0
  69. package/dist/namespaces/solvers.d.ts +22 -0
  70. package/dist/namespaces/solvers.d.ts.map +1 -0
  71. package/dist/namespaces/solvers.js +66 -0
  72. package/dist/namespaces/solvers.js.map +1 -0
  73. package/dist/namespaces/type-theory.d.ts +22 -0
  74. package/dist/namespaces/type-theory.d.ts.map +1 -0
  75. package/dist/namespaces/type-theory.js +65 -0
  76. package/dist/namespaces/type-theory.js.map +1 -0
  77. package/dist/optimization/branch-and-bound.d.ts +11 -0
  78. package/dist/optimization/branch-and-bound.d.ts.map +1 -0
  79. package/dist/optimization/branch-and-bound.js +311 -0
  80. package/dist/optimization/branch-and-bound.js.map +1 -0
  81. package/dist/optimization/index.d.ts +5 -0
  82. package/dist/optimization/index.d.ts.map +1 -0
  83. package/dist/optimization/index.js +20 -0
  84. package/dist/optimization/index.js.map +1 -0
  85. package/dist/optimization/simplex.d.ts +8 -0
  86. package/dist/optimization/simplex.d.ts.map +1 -0
  87. package/dist/optimization/simplex.js +408 -0
  88. package/dist/optimization/simplex.js.map +1 -0
  89. package/dist/optimization/standard-form.d.ts +11 -0
  90. package/dist/optimization/standard-form.d.ts.map +1 -0
  91. package/dist/optimization/standard-form.js +112 -0
  92. package/dist/optimization/standard-form.js.map +1 -0
  93. package/dist/optimization/types.d.ts +44 -0
  94. package/dist/optimization/types.d.ts.map +1 -0
  95. package/dist/optimization/types.js +15 -0
  96. package/dist/optimization/types.js.map +1 -0
  97. package/dist/profiles/hol/connectives.d.ts +46 -0
  98. package/dist/profiles/hol/connectives.d.ts.map +1 -0
  99. package/dist/profiles/hol/connectives.js +104 -0
  100. package/dist/profiles/hol/connectives.js.map +1 -0
  101. package/dist/profiles/hol/index.d.ts +7 -0
  102. package/dist/profiles/hol/index.d.ts.map +1 -0
  103. package/dist/profiles/hol/index.js +77 -0
  104. package/dist/profiles/hol/index.js.map +1 -0
  105. package/dist/profiles/hol/rules.d.ts +31 -0
  106. package/dist/profiles/hol/rules.d.ts.map +1 -0
  107. package/dist/profiles/hol/rules.js +258 -0
  108. package/dist/profiles/hol/rules.js.map +1 -0
  109. package/dist/profiles/hol/term.d.ts +52 -0
  110. package/dist/profiles/hol/term.d.ts.map +1 -0
  111. package/dist/profiles/hol/term.js +345 -0
  112. package/dist/profiles/hol/term.js.map +1 -0
  113. package/dist/profiles/hol/type-system.d.ts +38 -0
  114. package/dist/profiles/hol/type-system.d.ts.map +1 -0
  115. package/dist/profiles/hol/type-system.js +133 -0
  116. package/dist/profiles/hol/type-system.js.map +1 -0
  117. package/dist/profiles/hol/types.d.ts +59 -0
  118. package/dist/profiles/hol/types.d.ts.map +1 -0
  119. package/dist/profiles/hol/types.js +26 -0
  120. package/dist/profiles/hol/types.js.map +1 -0
  121. package/dist/smt-lib/ast.d.ts +138 -0
  122. package/dist/smt-lib/ast.d.ts.map +1 -0
  123. package/dist/smt-lib/ast.js +73 -0
  124. package/dist/smt-lib/ast.js.map +1 -0
  125. package/dist/smt-lib/emitter.d.ts +12 -0
  126. package/dist/smt-lib/emitter.d.ts.map +1 -0
  127. package/dist/smt-lib/emitter.js +174 -0
  128. package/dist/smt-lib/emitter.js.map +1 -0
  129. package/dist/smt-lib/index.d.ts +6 -0
  130. package/dist/smt-lib/index.d.ts.map +1 -0
  131. package/dist/smt-lib/index.js +31 -0
  132. package/dist/smt-lib/index.js.map +1 -0
  133. package/dist/smt-lib/parser.d.ts +13 -0
  134. package/dist/smt-lib/parser.d.ts.map +1 -0
  135. package/dist/smt-lib/parser.js +614 -0
  136. package/dist/smt-lib/parser.js.map +1 -0
  137. package/dist/smt-lib/tokenizer.d.ts +16 -0
  138. package/dist/smt-lib/tokenizer.d.ts.map +1 -0
  139. package/dist/smt-lib/tokenizer.js +234 -0
  140. package/dist/smt-lib/tokenizer.js.map +1 -0
  141. package/dist/tests/api/namespaces.test.d.ts +9 -0
  142. package/dist/tests/api/namespaces.test.d.ts.map +1 -0
  143. package/dist/tests/api/namespaces.test.js +218 -0
  144. package/dist/tests/api/namespaces.test.js.map +1 -0
  145. package/dist/tests/bdd/manager.test.d.ts +2 -0
  146. package/dist/tests/bdd/manager.test.d.ts.map +1 -0
  147. package/dist/tests/bdd/manager.test.js +472 -0
  148. package/dist/tests/bdd/manager.test.js.map +1 -0
  149. package/dist/tests/game-theory/game-theory.test.d.ts +2 -0
  150. package/dist/tests/game-theory/game-theory.test.d.ts.map +1 -0
  151. package/dist/tests/game-theory/game-theory.test.js +252 -0
  152. package/dist/tests/game-theory/game-theory.test.js.map +1 -0
  153. package/dist/tests/hol/hol.test.d.ts +2 -0
  154. package/dist/tests/hol/hol.test.d.ts.map +1 -0
  155. package/dist/tests/hol/hol.test.js +340 -0
  156. package/dist/tests/hol/hol.test.js.map +1 -0
  157. package/dist/tests/information-theory/information-theory.test.d.ts +2 -0
  158. package/dist/tests/information-theory/information-theory.test.d.ts.map +1 -0
  159. package/dist/tests/information-theory/information-theory.test.js +291 -0
  160. package/dist/tests/information-theory/information-theory.test.js.map +1 -0
  161. package/dist/tests/optimization/ilp.test.d.ts +2 -0
  162. package/dist/tests/optimization/ilp.test.d.ts.map +1 -0
  163. package/dist/tests/optimization/ilp.test.js +204 -0
  164. package/dist/tests/optimization/ilp.test.js.map +1 -0
  165. package/dist/tests/optimization/lp.test.d.ts +2 -0
  166. package/dist/tests/optimization/lp.test.d.ts.map +1 -0
  167. package/dist/tests/optimization/lp.test.js +224 -0
  168. package/dist/tests/optimization/lp.test.js.map +1 -0
  169. package/dist/tests/properties/agm.property.test.d.ts +2 -0
  170. package/dist/tests/properties/agm.property.test.d.ts.map +1 -0
  171. package/dist/tests/properties/agm.property.test.js +75 -0
  172. package/dist/tests/properties/agm.property.test.js.map +1 -0
  173. package/dist/tests/properties/anti-unification.property.test.d.ts +2 -0
  174. package/dist/tests/properties/anti-unification.property.test.d.ts.map +1 -0
  175. package/dist/tests/properties/anti-unification.property.test.js +43 -0
  176. package/dist/tests/properties/anti-unification.property.test.js.map +1 -0
  177. package/dist/tests/properties/argumentation.property.test.d.ts +2 -0
  178. package/dist/tests/properties/argumentation.property.test.d.ts.map +1 -0
  179. package/dist/tests/properties/argumentation.property.test.js +51 -0
  180. package/dist/tests/properties/argumentation.property.test.js.map +1 -0
  181. package/dist/tests/properties/bayesian.property.test.d.ts +2 -0
  182. package/dist/tests/properties/bayesian.property.test.d.ts.map +1 -0
  183. package/dist/tests/properties/bayesian.property.test.js +32 -0
  184. package/dist/tests/properties/bayesian.property.test.js.map +1 -0
  185. package/dist/tests/properties/bisimulation.property.test.d.ts +2 -0
  186. package/dist/tests/properties/bisimulation.property.test.d.ts.map +1 -0
  187. package/dist/tests/properties/bisimulation.property.test.js +50 -0
  188. package/dist/tests/properties/bisimulation.property.test.js.map +1 -0
  189. package/dist/tests/properties/cdcl.property.test.d.ts +2 -0
  190. package/dist/tests/properties/cdcl.property.test.d.ts.map +1 -0
  191. package/dist/tests/properties/cdcl.property.test.js +70 -0
  192. package/dist/tests/properties/cdcl.property.test.js.map +1 -0
  193. package/dist/tests/properties/coinduction.property.test.d.ts +2 -0
  194. package/dist/tests/properties/coinduction.property.test.d.ts.map +1 -0
  195. package/dist/tests/properties/coinduction.property.test.js +34 -0
  196. package/dist/tests/properties/coinduction.property.test.js.map +1 -0
  197. package/dist/tests/properties/constructive-reals.property.test.d.ts +2 -0
  198. package/dist/tests/properties/constructive-reals.property.test.d.ts.map +1 -0
  199. package/dist/tests/properties/constructive-reals.property.test.js +59 -0
  200. package/dist/tests/properties/constructive-reals.property.test.js.map +1 -0
  201. package/dist/tests/properties/csp.property.test.d.ts +2 -0
  202. package/dist/tests/properties/csp.property.test.d.ts.map +1 -0
  203. package/dist/tests/properties/csp.property.test.js +58 -0
  204. package/dist/tests/properties/csp.property.test.js.map +1 -0
  205. package/dist/tests/properties/generators.d.ts +78 -0
  206. package/dist/tests/properties/generators.d.ts.map +1 -0
  207. package/dist/tests/properties/generators.js +348 -0
  208. package/dist/tests/properties/generators.js.map +1 -0
  209. package/dist/tests/properties/ho-unify.property.test.d.ts +2 -0
  210. package/dist/tests/properties/ho-unify.property.test.d.ts.map +1 -0
  211. package/dist/tests/properties/ho-unify.property.test.js +46 -0
  212. package/dist/tests/properties/ho-unify.property.test.js.map +1 -0
  213. package/dist/tests/properties/hyperreal.property.test.d.ts +2 -0
  214. package/dist/tests/properties/hyperreal.property.test.d.ts.map +1 -0
  215. package/dist/tests/properties/hyperreal.property.test.js +33 -0
  216. package/dist/tests/properties/hyperreal.property.test.js.map +1 -0
  217. package/dist/tests/properties/intuit-nj.property.test.d.ts +2 -0
  218. package/dist/tests/properties/intuit-nj.property.test.d.ts.map +1 -0
  219. package/dist/tests/properties/intuit-nj.property.test.js +57 -0
  220. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -0
  221. package/dist/tests/properties/lambda-calc.property.test.d.ts +2 -0
  222. package/dist/tests/properties/lambda-calc.property.test.d.ts.map +1 -0
  223. package/dist/tests/properties/lambda-calc.property.test.js +35 -0
  224. package/dist/tests/properties/lambda-calc.property.test.js.map +1 -0
  225. package/dist/tests/properties/mln.property.test.d.ts +2 -0
  226. package/dist/tests/properties/mln.property.test.d.ts.map +1 -0
  227. package/dist/tests/properties/mln.property.test.js +41 -0
  228. package/dist/tests/properties/mln.property.test.js.map +1 -0
  229. package/dist/tests/properties/mltt.property.test.d.ts +2 -0
  230. package/dist/tests/properties/mltt.property.test.d.ts.map +1 -0
  231. package/dist/tests/properties/mltt.property.test.js +33 -0
  232. package/dist/tests/properties/mltt.property.test.js.map +1 -0
  233. package/dist/tests/properties/nbe.property.test.d.ts +2 -0
  234. package/dist/tests/properties/nbe.property.test.d.ts.map +1 -0
  235. package/dist/tests/properties/nbe.property.test.js +44 -0
  236. package/dist/tests/properties/nbe.property.test.js.map +1 -0
  237. package/dist/tests/properties/planning.property.test.d.ts +2 -0
  238. package/dist/tests/properties/planning.property.test.d.ts.map +1 -0
  239. package/dist/tests/properties/planning.property.test.js +51 -0
  240. package/dist/tests/properties/planning.property.test.js.map +1 -0
  241. package/dist/tests/properties/profile-bridge.property.test.d.ts +2 -0
  242. package/dist/tests/properties/profile-bridge.property.test.d.ts.map +1 -0
  243. package/dist/tests/properties/profile-bridge.property.test.js +71 -0
  244. package/dist/tests/properties/profile-bridge.property.test.js.map +1 -0
  245. package/dist/tests/properties/refinement-types.property.test.d.ts +2 -0
  246. package/dist/tests/properties/refinement-types.property.test.d.ts.map +1 -0
  247. package/dist/tests/properties/refinement-types.property.test.js +37 -0
  248. package/dist/tests/properties/refinement-types.property.test.js.map +1 -0
  249. package/dist/tests/properties/sequent-g3.property.test.d.ts +2 -0
  250. package/dist/tests/properties/sequent-g3.property.test.d.ts.map +1 -0
  251. package/dist/tests/properties/sequent-g3.property.test.js +34 -0
  252. package/dist/tests/properties/sequent-g3.property.test.js.map +1 -0
  253. package/dist/tests/properties/symbolic-diff.property.test.d.ts +2 -0
  254. package/dist/tests/properties/symbolic-diff.property.test.d.ts.map +1 -0
  255. package/dist/tests/properties/symbolic-diff.property.test.js +49 -0
  256. package/dist/tests/properties/symbolic-diff.property.test.js.map +1 -0
  257. package/dist/tests/properties/system-f.property.test.d.ts +2 -0
  258. package/dist/tests/properties/system-f.property.test.d.ts.map +1 -0
  259. package/dist/tests/properties/system-f.property.test.js +37 -0
  260. package/dist/tests/properties/system-f.property.test.js.map +1 -0
  261. package/dist/tests/properties/theorem-cache.property.test.d.ts +2 -0
  262. package/dist/tests/properties/theorem-cache.property.test.d.ts.map +1 -0
  263. package/dist/tests/properties/theorem-cache.property.test.js +38 -0
  264. package/dist/tests/properties/theorem-cache.property.test.js.map +1 -0
  265. package/dist/tests/properties/trs.property.test.d.ts +2 -0
  266. package/dist/tests/properties/trs.property.test.d.ts.map +1 -0
  267. package/dist/tests/properties/trs.property.test.js +34 -0
  268. package/dist/tests/properties/trs.property.test.js.map +1 -0
  269. package/dist/tests/properties/unification.property.test.d.ts +2 -0
  270. package/dist/tests/properties/unification.property.test.d.ts.map +1 -0
  271. package/dist/tests/properties/unification.property.test.js +42 -0
  272. package/dist/tests/properties/unification.property.test.js.map +1 -0
  273. package/dist/tests/smt-lib/emitter.test.d.ts +2 -0
  274. package/dist/tests/smt-lib/emitter.test.d.ts.map +1 -0
  275. package/dist/tests/smt-lib/emitter.test.js +155 -0
  276. package/dist/tests/smt-lib/emitter.test.js.map +1 -0
  277. package/dist/tests/smt-lib/parser.test.d.ts +2 -0
  278. package/dist/tests/smt-lib/parser.test.d.ts.map +1 -0
  279. package/dist/tests/smt-lib/parser.test.js +164 -0
  280. package/dist/tests/smt-lib/parser.test.js.map +1 -0
  281. package/dist/tests/smt-lib/tokenizer.test.d.ts +2 -0
  282. package/dist/tests/smt-lib/tokenizer.test.d.ts.map +1 -0
  283. package/dist/tests/smt-lib/tokenizer.test.js +59 -0
  284. package/dist/tests/smt-lib/tokenizer.test.js.map +1 -0
  285. package/package.json +2 -1
@@ -0,0 +1,614 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // SMT-LIB v2 — Parser (recursive-descent sobre S-expressions)
4
+ // ============================================================
5
+ //
6
+ // Convierte el stream de tokens (tokenizer.ts) en árboles `SmtCommand`,
7
+ // `SmtTerm` y `SmtSort`. Estrictamente sintáctico: no valida sorts, aridad
8
+ // de funciones ni que las lógicas sean conocidas — se queda con el árbol y
9
+ // deja la validación semántica al consumidor (backend, traductor, etc.).
10
+ //
11
+ // Filosofía: si la entrada está fuera del subset privilegiado (let, forall,
12
+ // exists, match, !), igualmente colapsa a `{ kind: 'app', fn, args }` con
13
+ // la cabeza preservada como string. Eso garantiza que `parse → emit` no
14
+ // pierde información en programas reales.
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.SmtParserError = void 0;
17
+ exports.parseSmtLib = parseSmtLib;
18
+ exports.parseTerm = parseTerm;
19
+ exports.parseSort = parseSort;
20
+ const tokenizer_1 = require("./tokenizer");
21
+ class SmtParserError extends Error {
22
+ line;
23
+ col;
24
+ constructor(message, line, col) {
25
+ super(`SMT-LIB parser ${line}:${col}: ${message}`);
26
+ this.line = line;
27
+ this.col = col;
28
+ this.name = 'SmtParserError';
29
+ }
30
+ }
31
+ exports.SmtParserError = SmtParserError;
32
+ class TokenStream {
33
+ tokens;
34
+ pos = 0;
35
+ constructor(tokens) {
36
+ this.tokens = tokens;
37
+ }
38
+ peek(off = 0) {
39
+ return this.tokens[this.pos + off];
40
+ }
41
+ next() {
42
+ const t = this.tokens[this.pos];
43
+ if (!t) {
44
+ const last = this.tokens[this.tokens.length - 1];
45
+ throw new SmtParserError('fin de input inesperado', last?.line ?? 1, last?.col ?? 1);
46
+ }
47
+ this.pos++;
48
+ return t;
49
+ }
50
+ eof() {
51
+ return this.pos >= this.tokens.length;
52
+ }
53
+ expect(kind) {
54
+ const t = this.next();
55
+ if (t.kind !== kind) {
56
+ throw new SmtParserError(`se esperaba ${kind} y se obtuvo ${t.kind} (${JSON.stringify(t.value)})`, t.line, t.col);
57
+ }
58
+ return t;
59
+ }
60
+ expectSymbol(name) {
61
+ const t = this.next();
62
+ if (t.kind !== 'symbol') {
63
+ throw new SmtParserError(`se esperaba símbolo y se obtuvo ${t.kind} (${JSON.stringify(t.value)})`, t.line, t.col);
64
+ }
65
+ if (name !== undefined && t.value !== name) {
66
+ throw new SmtParserError(`se esperaba símbolo "${name}" y vino "${t.value}"`, t.line, t.col);
67
+ }
68
+ return t;
69
+ }
70
+ }
71
+ /** Reads a numeral token as an integer (≥ 0). */
72
+ function readNumeral(ts) {
73
+ const t = ts.next();
74
+ if (t.kind !== 'numeral') {
75
+ throw new SmtParserError(`se esperaba numeral, vino ${t.kind}`, t.line, t.col);
76
+ }
77
+ return Number.parseInt(t.value, 10);
78
+ }
79
+ function readSymbolName(ts) {
80
+ const t = ts.next();
81
+ if (t.kind !== 'symbol') {
82
+ throw new SmtParserError(`se esperaba símbolo, vino ${t.kind}`, t.line, t.col);
83
+ }
84
+ return t.value;
85
+ }
86
+ function readAttrValue(ts) {
87
+ // En set-info / set-option / annotated, los valores pueden ser
88
+ // string, symbol, numeral, decimal, hex, binary, keyword, o una
89
+ // s-expr completa. Para nuestros usos materializamos la s-expr a
90
+ // string canónico (re-emisión simple) o el literal directo.
91
+ const t = ts.peek();
92
+ if (!t)
93
+ throw new SmtParserError('attr-value faltante', 1, 1);
94
+ if (t.kind === 'string') {
95
+ ts.next();
96
+ return JSON.stringify(t.value);
97
+ }
98
+ if (t.kind === 'lparen') {
99
+ return sexprToString(ts);
100
+ }
101
+ ts.next();
102
+ return t.value;
103
+ }
104
+ /** Re-serialize an arbitrary s-expression as plain text (lossy for whitespace). */
105
+ function sexprToString(ts) {
106
+ const open = ts.next();
107
+ if (open.kind !== 'lparen') {
108
+ return open.value;
109
+ }
110
+ const parts = [];
111
+ while (true) {
112
+ const t = ts.peek();
113
+ if (!t)
114
+ throw new SmtParserError('s-expr sin cerrar', open.line, open.col);
115
+ if (t.kind === 'rparen') {
116
+ ts.next();
117
+ break;
118
+ }
119
+ if (t.kind === 'lparen') {
120
+ parts.push(sexprToString(ts));
121
+ }
122
+ else {
123
+ ts.next();
124
+ if (t.kind === 'string')
125
+ parts.push(JSON.stringify(t.value));
126
+ else if (t.kind === 'keyword')
127
+ parts.push(`:${t.value}`);
128
+ else if (t.kind === 'hex')
129
+ parts.push(`#x${t.value}`);
130
+ else if (t.kind === 'binary')
131
+ parts.push(`#b${t.value}`);
132
+ else
133
+ parts.push(t.value);
134
+ }
135
+ }
136
+ return `(${parts.join(' ')})`;
137
+ }
138
+ // --------------------------------------------------------------------
139
+ // Sort
140
+ // --------------------------------------------------------------------
141
+ function parseSortInternal(ts) {
142
+ const t = ts.peek();
143
+ if (!t)
144
+ throw new SmtParserError('sort esperado', 1, 1);
145
+ if (t.kind === 'symbol') {
146
+ ts.next();
147
+ return { kind: 'symbol', name: t.value };
148
+ }
149
+ if (t.kind === 'lparen') {
150
+ ts.next();
151
+ // (_ BitVec 32) → indexed identifier; lo emitimos como name "_" args [BitVec, 32]
152
+ // o (Array Int Int) → name "Array" args [Int, Int]
153
+ const head = ts.peek();
154
+ if (!head)
155
+ throw new SmtParserError('sort con paréntesis vacío', t.line, t.col);
156
+ if (head.kind === 'symbol' && head.value === '_') {
157
+ ts.next(); // consume `_`
158
+ const nameTok = ts.next();
159
+ if (nameTok.kind !== 'symbol') {
160
+ throw new SmtParserError(`identificador indexado: se esperaba símbolo y vino ${nameTok.kind}`, nameTok.line, nameTok.col);
161
+ }
162
+ const indexArgs = [];
163
+ while (true) {
164
+ const nx = ts.peek();
165
+ if (!nx)
166
+ throw new SmtParserError('sort indexado sin cerrar', nameTok.line, nameTok.col);
167
+ if (nx.kind === 'rparen')
168
+ break;
169
+ if (nx.kind === 'numeral') {
170
+ ts.next();
171
+ indexArgs.push({ kind: 'symbol', name: nx.value });
172
+ }
173
+ else if (nx.kind === 'symbol') {
174
+ ts.next();
175
+ indexArgs.push({ kind: 'symbol', name: nx.value });
176
+ }
177
+ else {
178
+ throw new SmtParserError(`índice inesperado ${nx.kind} en sort`, nx.line, nx.col);
179
+ }
180
+ }
181
+ ts.expect('rparen');
182
+ return { kind: 'app', name: `_ ${nameTok.value}`, args: indexArgs };
183
+ }
184
+ if (head.kind !== 'symbol') {
185
+ throw new SmtParserError(`cabeza de sort debe ser símbolo y vino ${head.kind}`, head.line, head.col);
186
+ }
187
+ ts.next();
188
+ const args = [];
189
+ while (true) {
190
+ const nx = ts.peek();
191
+ if (!nx)
192
+ throw new SmtParserError('sort sin cerrar', head.line, head.col);
193
+ if (nx.kind === 'rparen')
194
+ break;
195
+ args.push(parseSortInternal(ts));
196
+ }
197
+ ts.expect('rparen');
198
+ return { kind: 'app', name: head.value, args };
199
+ }
200
+ throw new SmtParserError(`sort inesperado: ${t.kind}`, t.line, t.col);
201
+ }
202
+ // --------------------------------------------------------------------
203
+ // Term
204
+ // --------------------------------------------------------------------
205
+ const SPEC_CONSTANT_KIND = {
206
+ numeral: 'numeral',
207
+ decimal: 'decimal',
208
+ string: 'string',
209
+ hex: 'hex',
210
+ binary: 'binary',
211
+ };
212
+ function parseTermInternal(ts) {
213
+ const t = ts.peek();
214
+ if (!t)
215
+ throw new SmtParserError('término esperado', 1, 1);
216
+ const specType = SPEC_CONSTANT_KIND[t.kind];
217
+ if (specType) {
218
+ ts.next();
219
+ return { kind: 'spec-constant', type: specType, value: t.value };
220
+ }
221
+ if (t.kind === 'symbol') {
222
+ ts.next();
223
+ return { kind: 'symbol', name: t.value };
224
+ }
225
+ if (t.kind === 'keyword') {
226
+ throw new SmtParserError(`keyword :${t.value} no es un término válido`, t.line, t.col);
227
+ }
228
+ if (t.kind === 'lparen') {
229
+ ts.next();
230
+ const head = ts.peek();
231
+ if (!head)
232
+ throw new SmtParserError('aplicación vacía', t.line, t.col);
233
+ // Casos especiales (let, forall, exists, match, !)
234
+ if (head.kind === 'symbol') {
235
+ switch (head.value) {
236
+ case 'let':
237
+ ts.next();
238
+ return parseLet(ts, t);
239
+ case 'forall':
240
+ ts.next();
241
+ return parseQuantifier(ts, 'forall', t);
242
+ case 'exists':
243
+ ts.next();
244
+ return parseQuantifier(ts, 'exists', t);
245
+ case 'match':
246
+ ts.next();
247
+ return parseMatch(ts, t);
248
+ case '!':
249
+ ts.next();
250
+ return parseAnnotated(ts, t);
251
+ case '_': {
252
+ // identificador indexado en posición de cabeza: (_ name idx ...)
253
+ ts.next();
254
+ const nameTok = ts.next();
255
+ if (nameTok.kind !== 'symbol') {
256
+ throw new SmtParserError(`identificador indexado: símbolo esperado y vino ${nameTok.kind}`, nameTok.line, nameTok.col);
257
+ }
258
+ const idxs = [];
259
+ while (true) {
260
+ const nx = ts.peek();
261
+ if (!nx)
262
+ throw new SmtParserError('indexed identifier sin cerrar', t.line, t.col);
263
+ if (nx.kind === 'rparen')
264
+ break;
265
+ if (nx.kind === 'numeral' || nx.kind === 'symbol') {
266
+ ts.next();
267
+ idxs.push(nx.value);
268
+ }
269
+ else {
270
+ throw new SmtParserError(`índice inesperado ${nx.kind}`, nx.line, nx.col);
271
+ }
272
+ }
273
+ ts.expect('rparen');
274
+ return {
275
+ kind: 'symbol',
276
+ name: `(_ ${nameTok.value}${idxs.length ? ' ' + idxs.join(' ') : ''})`,
277
+ };
278
+ }
279
+ }
280
+ }
281
+ // aplicación genérica
282
+ let fnName;
283
+ if (head.kind === 'lparen') {
284
+ // qualified-identifier `(as foo Sort)` o indexed
285
+ fnName = sexprToString(ts);
286
+ }
287
+ else {
288
+ ts.next();
289
+ fnName = head.value;
290
+ }
291
+ const args = [];
292
+ while (true) {
293
+ const nx = ts.peek();
294
+ if (!nx)
295
+ throw new SmtParserError(`aplicación ${fnName} sin cerrar`, t.line, t.col);
296
+ if (nx.kind === 'rparen')
297
+ break;
298
+ args.push(parseTermInternal(ts));
299
+ }
300
+ ts.expect('rparen');
301
+ return { kind: 'app', fn: fnName, args };
302
+ }
303
+ throw new SmtParserError(`token inesperado en término: ${t.kind}`, t.line, t.col);
304
+ }
305
+ function parseLet(ts, open) {
306
+ ts.expect('lparen'); // bindings list
307
+ const bindings = [];
308
+ while (true) {
309
+ const nx = ts.peek();
310
+ if (!nx)
311
+ throw new SmtParserError('let sin cerrar bindings', open.line, open.col);
312
+ if (nx.kind === 'rparen') {
313
+ ts.next();
314
+ break;
315
+ }
316
+ ts.expect('lparen');
317
+ const name = readSymbolName(ts);
318
+ const value = parseTermInternal(ts);
319
+ ts.expect('rparen');
320
+ bindings.push({ name, value });
321
+ }
322
+ const body = parseTermInternal(ts);
323
+ ts.expect('rparen'); // close let
324
+ return { kind: 'let', bindings, body };
325
+ }
326
+ function parseQuantifier(ts, kind, open) {
327
+ ts.expect('lparen'); // vars list
328
+ const vars = [];
329
+ while (true) {
330
+ const nx = ts.peek();
331
+ if (!nx)
332
+ throw new SmtParserError(`${kind} sin cerrar vars`, open.line, open.col);
333
+ if (nx.kind === 'rparen') {
334
+ ts.next();
335
+ break;
336
+ }
337
+ ts.expect('lparen');
338
+ const name = readSymbolName(ts);
339
+ const sort = parseSortInternal(ts);
340
+ ts.expect('rparen');
341
+ vars.push({ name, sort });
342
+ }
343
+ const body = parseTermInternal(ts);
344
+ ts.expect('rparen'); // close quantifier
345
+ if (kind === 'forall')
346
+ return { kind: 'forall', vars, body };
347
+ return { kind: 'exists', vars, body };
348
+ }
349
+ function parseMatch(ts, open) {
350
+ const scrutinee = parseTermInternal(ts);
351
+ ts.expect('lparen'); // cases list
352
+ const cases = [];
353
+ while (true) {
354
+ const nx = ts.peek();
355
+ if (!nx)
356
+ throw new SmtParserError('match sin cerrar', open.line, open.col);
357
+ if (nx.kind === 'rparen') {
358
+ ts.next();
359
+ break;
360
+ }
361
+ ts.expect('lparen');
362
+ const pattern = parseTermInternal(ts);
363
+ const body = parseTermInternal(ts);
364
+ ts.expect('rparen');
365
+ cases.push({ pattern, body });
366
+ }
367
+ ts.expect('rparen');
368
+ return { kind: 'match', scrutinee, cases };
369
+ }
370
+ function parseAnnotated(ts, open) {
371
+ const term = parseTermInternal(ts);
372
+ const attrs = [];
373
+ while (true) {
374
+ const nx = ts.peek();
375
+ if (!nx)
376
+ throw new SmtParserError('annotation sin cerrar', open.line, open.col);
377
+ if (nx.kind === 'rparen') {
378
+ ts.next();
379
+ break;
380
+ }
381
+ if (nx.kind !== 'keyword') {
382
+ throw new SmtParserError(`attribute key debe empezar con ":" y vino ${nx.kind}`, nx.line, nx.col);
383
+ }
384
+ ts.next();
385
+ const key = nx.value;
386
+ const follow = ts.peek();
387
+ if (!follow || follow.kind === 'keyword' || follow.kind === 'rparen') {
388
+ attrs.push({ key });
389
+ }
390
+ else {
391
+ const value = readAttrValue(ts);
392
+ attrs.push({ key, value });
393
+ }
394
+ }
395
+ return { kind: 'annotated', term, attrs };
396
+ }
397
+ // --------------------------------------------------------------------
398
+ // Command
399
+ // --------------------------------------------------------------------
400
+ function parseCommand(ts) {
401
+ const open = ts.expect('lparen');
402
+ const head = ts.expectSymbol();
403
+ switch (head.value) {
404
+ case 'set-logic': {
405
+ const logic = readSymbolName(ts);
406
+ ts.expect('rparen');
407
+ return { kind: 'set-logic', logic };
408
+ }
409
+ case 'set-option': {
410
+ const keyTok = ts.next();
411
+ if (keyTok.kind !== 'keyword') {
412
+ throw new SmtParserError(`set-option requiere :keyword`, keyTok.line, keyTok.col);
413
+ }
414
+ const value = readAttrValue(ts);
415
+ ts.expect('rparen');
416
+ return { kind: 'set-option', key: keyTok.value, value };
417
+ }
418
+ case 'set-info': {
419
+ const keyTok = ts.next();
420
+ if (keyTok.kind !== 'keyword') {
421
+ throw new SmtParserError(`set-info requiere :keyword`, keyTok.line, keyTok.col);
422
+ }
423
+ const value = readAttrValue(ts);
424
+ ts.expect('rparen');
425
+ return { kind: 'set-info', key: keyTok.value, value };
426
+ }
427
+ case 'declare-sort': {
428
+ const name = readSymbolName(ts);
429
+ const arity = readNumeral(ts);
430
+ ts.expect('rparen');
431
+ return { kind: 'declare-sort', name, arity };
432
+ }
433
+ case 'define-sort': {
434
+ const name = readSymbolName(ts);
435
+ ts.expect('lparen');
436
+ const params = [];
437
+ while (true) {
438
+ const nx = ts.peek();
439
+ if (!nx)
440
+ throw new SmtParserError('define-sort sin cerrar', open.line, open.col);
441
+ if (nx.kind === 'rparen') {
442
+ ts.next();
443
+ break;
444
+ }
445
+ params.push(readSymbolName(ts));
446
+ }
447
+ const body = parseSortInternal(ts);
448
+ ts.expect('rparen');
449
+ return { kind: 'define-sort', name, params, body };
450
+ }
451
+ case 'declare-fun': {
452
+ const name = readSymbolName(ts);
453
+ ts.expect('lparen');
454
+ const paramSorts = [];
455
+ while (true) {
456
+ const nx = ts.peek();
457
+ if (!nx)
458
+ throw new SmtParserError('declare-fun sin cerrar', open.line, open.col);
459
+ if (nx.kind === 'rparen') {
460
+ ts.next();
461
+ break;
462
+ }
463
+ paramSorts.push(parseSortInternal(ts));
464
+ }
465
+ const resultSort = parseSortInternal(ts);
466
+ ts.expect('rparen');
467
+ return { kind: 'declare-fun', name, paramSorts, resultSort };
468
+ }
469
+ case 'define-fun': {
470
+ const name = readSymbolName(ts);
471
+ ts.expect('lparen');
472
+ const params = [];
473
+ while (true) {
474
+ const nx = ts.peek();
475
+ if (!nx)
476
+ throw new SmtParserError('define-fun sin cerrar', open.line, open.col);
477
+ if (nx.kind === 'rparen') {
478
+ ts.next();
479
+ break;
480
+ }
481
+ ts.expect('lparen');
482
+ const pname = readSymbolName(ts);
483
+ const psort = parseSortInternal(ts);
484
+ ts.expect('rparen');
485
+ params.push({ name: pname, sort: psort });
486
+ }
487
+ const resultSort = parseSortInternal(ts);
488
+ const body = parseTermInternal(ts);
489
+ ts.expect('rparen');
490
+ return { kind: 'define-fun', name, params, resultSort, body };
491
+ }
492
+ case 'declare-const': {
493
+ const name = readSymbolName(ts);
494
+ const sort = parseSortInternal(ts);
495
+ ts.expect('rparen');
496
+ return { kind: 'declare-const', name, sort };
497
+ }
498
+ case 'assert': {
499
+ const formula = parseTermInternal(ts);
500
+ ts.expect('rparen');
501
+ return { kind: 'assert', formula };
502
+ }
503
+ case 'check-sat': {
504
+ ts.expect('rparen');
505
+ return { kind: 'check-sat' };
506
+ }
507
+ case 'check-sat-assuming': {
508
+ ts.expect('lparen');
509
+ const assumptions = [];
510
+ while (true) {
511
+ const nx = ts.peek();
512
+ if (!nx)
513
+ throw new SmtParserError('check-sat-assuming sin cerrar', open.line, open.col);
514
+ if (nx.kind === 'rparen') {
515
+ ts.next();
516
+ break;
517
+ }
518
+ assumptions.push(parseTermInternal(ts));
519
+ }
520
+ ts.expect('rparen');
521
+ return { kind: 'check-sat-assuming', assumptions };
522
+ }
523
+ case 'get-assertions':
524
+ ts.expect('rparen');
525
+ return { kind: 'get-assertions' };
526
+ case 'get-model':
527
+ ts.expect('rparen');
528
+ return { kind: 'get-model' };
529
+ case 'get-proof':
530
+ ts.expect('rparen');
531
+ return { kind: 'get-proof' };
532
+ case 'get-unsat-core':
533
+ ts.expect('rparen');
534
+ return { kind: 'get-unsat-core' };
535
+ case 'get-value': {
536
+ ts.expect('lparen');
537
+ const terms = [];
538
+ while (true) {
539
+ const nx = ts.peek();
540
+ if (!nx)
541
+ throw new SmtParserError('get-value sin cerrar', open.line, open.col);
542
+ if (nx.kind === 'rparen') {
543
+ ts.next();
544
+ break;
545
+ }
546
+ terms.push(parseTermInternal(ts));
547
+ }
548
+ ts.expect('rparen');
549
+ return { kind: 'get-value', terms };
550
+ }
551
+ case 'push': {
552
+ const levels = readNumeral(ts);
553
+ ts.expect('rparen');
554
+ return { kind: 'push', levels };
555
+ }
556
+ case 'pop': {
557
+ const levels = readNumeral(ts);
558
+ ts.expect('rparen');
559
+ return { kind: 'pop', levels };
560
+ }
561
+ case 'reset':
562
+ ts.expect('rparen');
563
+ return { kind: 'reset' };
564
+ case 'reset-assertions':
565
+ ts.expect('rparen');
566
+ return { kind: 'reset-assertions' };
567
+ case 'exit':
568
+ ts.expect('rparen');
569
+ return { kind: 'exit' };
570
+ case 'echo': {
571
+ const msgTok = ts.next();
572
+ if (msgTok.kind !== 'string') {
573
+ throw new SmtParserError(`echo requiere string literal`, msgTok.line, msgTok.col);
574
+ }
575
+ ts.expect('rparen');
576
+ return { kind: 'echo', message: msgTok.value };
577
+ }
578
+ default:
579
+ throw new SmtParserError(`comando no reconocido: ${head.value}`, head.line, head.col);
580
+ }
581
+ }
582
+ /** Parse de un script SMT-LIB completo. */
583
+ function parseSmtLib(input) {
584
+ const tokens = (0, tokenizer_1.tokenize)(input);
585
+ const ts = new TokenStream(tokens);
586
+ const commands = [];
587
+ while (!ts.eof()) {
588
+ commands.push(parseCommand(ts));
589
+ }
590
+ return commands;
591
+ }
592
+ /** Parse de un único término. Útil para tests y bridges. */
593
+ function parseTerm(input) {
594
+ const tokens = (0, tokenizer_1.tokenize)(input);
595
+ const ts = new TokenStream(tokens);
596
+ const term = parseTermInternal(ts);
597
+ if (!ts.eof()) {
598
+ const t = ts.peek();
599
+ throw new SmtParserError(`tokens sobrantes tras término`, t?.line ?? 1, t?.col ?? 1);
600
+ }
601
+ return term;
602
+ }
603
+ /** Parse de un único sort. */
604
+ function parseSort(input) {
605
+ const tokens = (0, tokenizer_1.tokenize)(input);
606
+ const ts = new TokenStream(tokens);
607
+ const sort = parseSortInternal(ts);
608
+ if (!ts.eof()) {
609
+ const t = ts.peek();
610
+ throw new SmtParserError(`tokens sobrantes tras sort`, t?.line ?? 1, t?.col ?? 1);
611
+ }
612
+ return sort;
613
+ }
614
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/smt-lib/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type SmtTokenKind = 'lparen' | 'rparen' | 'symbol' | 'keyword' | 'numeral' | 'decimal' | 'hex' | 'binary' | 'string';
2
+ export interface SmtToken {
3
+ kind: SmtTokenKind;
4
+ value: string;
5
+ /** Línea 1-based donde inicia el token. */
6
+ line: number;
7
+ /** Columna 1-based donde inicia el token. */
8
+ col: number;
9
+ }
10
+ export declare class SmtTokenizerError extends Error {
11
+ readonly line: number;
12
+ readonly col: number;
13
+ constructor(message: string, line: number, col: number);
14
+ }
15
+ export declare function tokenize(input: string): SmtToken[];
16
+ //# sourceMappingURL=tokenizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/smt-lib/tokenizer.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,KAAK,GACL,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;aACZ,GAAG,EAAE,MAAM;gBAF3B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM;CAK9B;AAQD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4LlD"}