@stevenvo780/st-lang 4.5.2 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/categorical/fin-set.d.ts +39 -0
  2. package/dist/categorical/fin-set.d.ts.map +1 -0
  3. package/dist/categorical/fin-set.js +217 -0
  4. package/dist/categorical/fin-set.js.map +1 -0
  5. package/dist/categorical/free.d.ts +23 -0
  6. package/dist/categorical/free.d.ts.map +1 -0
  7. package/dist/categorical/free.js +168 -0
  8. package/dist/categorical/free.js.map +1 -0
  9. package/dist/categorical/functor.d.ts +40 -0
  10. package/dist/categorical/functor.d.ts.map +1 -0
  11. package/dist/categorical/functor.js +139 -0
  12. package/dist/categorical/functor.js.map +1 -0
  13. package/dist/categorical/index.d.ts +11 -0
  14. package/dist/categorical/index.d.ts.map +1 -0
  15. package/dist/categorical/index.js +33 -0
  16. package/dist/categorical/index.js.map +1 -0
  17. package/dist/categorical/limits.d.ts +64 -0
  18. package/dist/categorical/limits.d.ts.map +1 -0
  19. package/dist/categorical/limits.js +248 -0
  20. package/dist/categorical/limits.js.map +1 -0
  21. package/dist/categorical/monoidal.d.ts +14 -0
  22. package/dist/categorical/monoidal.d.ts.map +1 -0
  23. package/dist/categorical/monoidal.js +148 -0
  24. package/dist/categorical/monoidal.js.map +1 -0
  25. package/dist/categorical/poset.d.ts +14 -0
  26. package/dist/categorical/poset.d.ts.map +1 -0
  27. package/dist/categorical/poset.js +115 -0
  28. package/dist/categorical/poset.js.map +1 -0
  29. package/dist/categorical/types.d.ts +111 -0
  30. package/dist/categorical/types.d.ts.map +1 -0
  31. package/dist/categorical/types.js +15 -0
  32. package/dist/categorical/types.js.map +1 -0
  33. package/dist/csp-hoare/analysis.d.ts +51 -0
  34. package/dist/csp-hoare/analysis.d.ts.map +1 -0
  35. package/dist/csp-hoare/analysis.js +317 -0
  36. package/dist/csp-hoare/analysis.js.map +1 -0
  37. package/dist/csp-hoare/examples.d.ts +33 -0
  38. package/dist/csp-hoare/examples.d.ts.map +1 -0
  39. package/dist/csp-hoare/examples.js +108 -0
  40. package/dist/csp-hoare/examples.js.map +1 -0
  41. package/dist/csp-hoare/index.d.ts +6 -0
  42. package/dist/csp-hoare/index.d.ts.map +1 -0
  43. package/dist/csp-hoare/index.js +50 -0
  44. package/dist/csp-hoare/index.js.map +1 -0
  45. package/dist/csp-hoare/semantics.d.ts +49 -0
  46. package/dist/csp-hoare/semantics.d.ts.map +1 -0
  47. package/dist/csp-hoare/semantics.js +494 -0
  48. package/dist/csp-hoare/semantics.js.map +1 -0
  49. package/dist/csp-hoare/types.d.ts +60 -0
  50. package/dist/csp-hoare/types.d.ts.map +1 -0
  51. package/dist/csp-hoare/types.js +31 -0
  52. package/dist/csp-hoare/types.js.map +1 -0
  53. package/dist/hindley-milner/index.d.ts +7 -0
  54. package/dist/hindley-milner/index.d.ts.map +1 -0
  55. package/dist/hindley-milner/index.js +60 -0
  56. package/dist/hindley-milner/index.js.map +1 -0
  57. package/dist/hindley-milner/infer.d.ts +26 -0
  58. package/dist/hindley-milner/infer.d.ts.map +1 -0
  59. package/dist/hindley-milner/infer.js +278 -0
  60. package/dist/hindley-milner/infer.js.map +1 -0
  61. package/dist/hindley-milner/substitution.d.ts +21 -0
  62. package/dist/hindley-milner/substitution.d.ts.map +1 -0
  63. package/dist/hindley-milner/substitution.js +215 -0
  64. package/dist/hindley-milner/substitution.js.map +1 -0
  65. package/dist/hindley-milner/types.d.ts +84 -0
  66. package/dist/hindley-milner/types.d.ts.map +1 -0
  67. package/dist/hindley-milner/types.js +166 -0
  68. package/dist/hindley-milner/types.js.map +1 -0
  69. package/dist/hott/equality.d.ts +4 -0
  70. package/dist/hott/equality.d.ts.map +1 -0
  71. package/dist/hott/equality.js +108 -0
  72. package/dist/hott/equality.js.map +1 -0
  73. package/dist/hott/index.d.ts +13 -0
  74. package/dist/hott/index.d.ts.map +1 -0
  75. package/dist/hott/index.js +77 -0
  76. package/dist/hott/index.js.map +1 -0
  77. package/dist/hott/infer.d.ts +11 -0
  78. package/dist/hott/infer.d.ts.map +1 -0
  79. package/dist/hott/infer.js +465 -0
  80. package/dist/hott/infer.js.map +1 -0
  81. package/dist/hott/normalize.d.ts +5 -0
  82. package/dist/hott/normalize.d.ts.map +1 -0
  83. package/dist/hott/normalize.js +240 -0
  84. package/dist/hott/normalize.js.map +1 -0
  85. package/dist/hott/path-algebra.d.ts +25 -0
  86. package/dist/hott/path-algebra.d.ts.map +1 -0
  87. package/dist/hott/path-algebra.js +67 -0
  88. package/dist/hott/path-algebra.js.map +1 -0
  89. package/dist/hott/substitute.d.ts +3 -0
  90. package/dist/hott/substitute.d.ts.map +1 -0
  91. package/dist/hott/substitute.js +131 -0
  92. package/dist/hott/substitute.js.map +1 -0
  93. package/dist/hott/types.d.ts +126 -0
  94. package/dist/hott/types.d.ts.map +1 -0
  95. package/dist/hott/types.js +346 -0
  96. package/dist/hott/types.js.map +1 -0
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +48 -3
  100. package/dist/index.js.map +1 -1
  101. package/dist/lemma-synthesis/index.d.ts +124 -0
  102. package/dist/lemma-synthesis/index.d.ts.map +1 -0
  103. package/dist/lemma-synthesis/index.js +640 -0
  104. package/dist/lemma-synthesis/index.js.map +1 -0
  105. package/dist/tactic-dsl/combinators.d.ts +6 -0
  106. package/dist/tactic-dsl/combinators.d.ts.map +1 -0
  107. package/dist/tactic-dsl/combinators.js +98 -0
  108. package/dist/tactic-dsl/combinators.js.map +1 -0
  109. package/dist/tactic-dsl/index.d.ts +39 -0
  110. package/dist/tactic-dsl/index.d.ts.map +1 -0
  111. package/dist/tactic-dsl/index.js +162 -0
  112. package/dist/tactic-dsl/index.js.map +1 -0
  113. package/dist/tactic-dsl/tactics.d.ts +21 -0
  114. package/dist/tactic-dsl/tactics.d.ts.map +1 -0
  115. package/dist/tactic-dsl/tactics.js +536 -0
  116. package/dist/tactic-dsl/tactics.js.map +1 -0
  117. package/dist/tactic-dsl/types.d.ts +54 -0
  118. package/dist/tactic-dsl/types.d.ts.map +1 -0
  119. package/dist/tactic-dsl/types.js +226 -0
  120. package/dist/tactic-dsl/types.js.map +1 -0
  121. package/dist/tests/categorical/categorical.test.d.ts +2 -0
  122. package/dist/tests/categorical/categorical.test.d.ts.map +1 -0
  123. package/dist/tests/categorical/categorical.test.js +300 -0
  124. package/dist/tests/categorical/categorical.test.js.map +1 -0
  125. package/dist/tests/csp-hoare/csp-hoare.test.d.ts +2 -0
  126. package/dist/tests/csp-hoare/csp-hoare.test.d.ts.map +1 -0
  127. package/dist/tests/csp-hoare/csp-hoare.test.js +313 -0
  128. package/dist/tests/csp-hoare/csp-hoare.test.js.map +1 -0
  129. package/dist/tests/hindley-milner/hindley-milner.test.d.ts +2 -0
  130. package/dist/tests/hindley-milner/hindley-milner.test.d.ts.map +1 -0
  131. package/dist/tests/hindley-milner/hindley-milner.test.js +327 -0
  132. package/dist/tests/hindley-milner/hindley-milner.test.js.map +1 -0
  133. package/dist/tests/hott/hott.test.d.ts +2 -0
  134. package/dist/tests/hott/hott.test.d.ts.map +1 -0
  135. package/dist/tests/hott/hott.test.js +271 -0
  136. package/dist/tests/hott/hott.test.js.map +1 -0
  137. package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts +2 -0
  138. package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts.map +1 -0
  139. package/dist/tests/lemma-synthesis/lemma-synthesis.test.js +460 -0
  140. package/dist/tests/lemma-synthesis/lemma-synthesis.test.js.map +1 -0
  141. package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts +2 -0
  142. package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts.map +1 -0
  143. package/dist/tests/tactic-dsl/tactic-dsl.test.js +259 -0
  144. package/dist/tests/tactic-dsl/tactic-dsl.test.js.map +1 -0
  145. package/dist/tests/tptp/bridge.test.d.ts +2 -0
  146. package/dist/tests/tptp/bridge.test.d.ts.map +1 -0
  147. package/dist/tests/tptp/bridge.test.js +154 -0
  148. package/dist/tests/tptp/bridge.test.js.map +1 -0
  149. package/dist/tests/tptp/emitter.test.d.ts +2 -0
  150. package/dist/tests/tptp/emitter.test.d.ts.map +1 -0
  151. package/dist/tests/tptp/emitter.test.js +128 -0
  152. package/dist/tests/tptp/emitter.test.js.map +1 -0
  153. package/dist/tests/tptp/parser.test.d.ts +2 -0
  154. package/dist/tests/tptp/parser.test.d.ts.map +1 -0
  155. package/dist/tests/tptp/parser.test.js +192 -0
  156. package/dist/tests/tptp/parser.test.js.map +1 -0
  157. package/dist/tests/tptp/tokenizer.test.d.ts +2 -0
  158. package/dist/tests/tptp/tokenizer.test.d.ts.map +1 -0
  159. package/dist/tests/tptp/tokenizer.test.js +60 -0
  160. package/dist/tests/tptp/tokenizer.test.js.map +1 -0
  161. package/dist/tptp/ast.d.ts +73 -0
  162. package/dist/tptp/ast.d.ts.map +1 -0
  163. package/dist/tptp/ast.js +35 -0
  164. package/dist/tptp/ast.js.map +1 -0
  165. package/dist/tptp/bridge.d.ts +14 -0
  166. package/dist/tptp/bridge.d.ts.map +1 -0
  167. package/dist/tptp/bridge.js +146 -0
  168. package/dist/tptp/bridge.js.map +1 -0
  169. package/dist/tptp/emitter.d.ts +5 -0
  170. package/dist/tptp/emitter.d.ts.map +1 -0
  171. package/dist/tptp/emitter.js +103 -0
  172. package/dist/tptp/emitter.js.map +1 -0
  173. package/dist/tptp/index.d.ts +7 -0
  174. package/dist/tptp/index.d.ts.map +1 -0
  175. package/dist/tptp/index.js +31 -0
  176. package/dist/tptp/index.js.map +1 -0
  177. package/dist/tptp/parser.d.ts +23 -0
  178. package/dist/tptp/parser.d.ts.map +1 -0
  179. package/dist/tptp/parser.js +440 -0
  180. package/dist/tptp/parser.js.map +1 -0
  181. package/dist/tptp/tokenizer.d.ts +14 -0
  182. package/dist/tptp/tokenizer.d.ts.map +1 -0
  183. package/dist/tptp/tokenizer.js +264 -0
  184. package/dist/tptp/tokenizer.js.map +1 -0
  185. package/package.json +4 -1
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // TPTP — Emitter
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.emitTerm = emitTerm;
7
+ exports.emitFormula = emitFormula;
8
+ exports.emitTptp = emitTptp;
9
+ function emitTerm(term) {
10
+ if (term.kind === 'var' || term.kind === 'const')
11
+ return term.name;
12
+ if (term.args.length === 0)
13
+ return term.name;
14
+ return `${term.name}(${term.args.map(emitTerm).join(',')})`;
15
+ }
16
+ // Precedencias para parentizar al emitir.
17
+ const PREC = {
18
+ iff: 1,
19
+ xor: 1,
20
+ implies: 2,
21
+ or: 3,
22
+ and: 4,
23
+ not: 5,
24
+ quant: 5,
25
+ atomic: 9,
26
+ };
27
+ function formulaPrec(f) {
28
+ switch (f.kind) {
29
+ case 'iff':
30
+ case 'xor':
31
+ return PREC.iff;
32
+ case 'implies':
33
+ return PREC.implies;
34
+ case 'or':
35
+ return PREC.or;
36
+ case 'and':
37
+ return PREC.and;
38
+ case 'not':
39
+ case 'forall':
40
+ case 'exists':
41
+ return PREC.not;
42
+ default:
43
+ return PREC.atomic;
44
+ }
45
+ }
46
+ function parenIfBelow(child, parent) {
47
+ const childPrec = formulaPrec(child);
48
+ const s = emitFormula(child);
49
+ if (childPrec < parent)
50
+ return `(${s})`;
51
+ return s;
52
+ }
53
+ function emitFormula(f) {
54
+ switch (f.kind) {
55
+ case 'true':
56
+ return '$true';
57
+ case 'false':
58
+ return '$false';
59
+ case 'atom': {
60
+ if (f.args.length === 0)
61
+ return f.predicate;
62
+ return `${f.predicate}(${f.args.map(emitTerm).join(',')})`;
63
+ }
64
+ case 'eq':
65
+ return `${emitTerm(f.left)} = ${emitTerm(f.right)}`;
66
+ case 'neq':
67
+ return `${emitTerm(f.left)} != ${emitTerm(f.right)}`;
68
+ case 'not':
69
+ return `~${parenIfBelow(f.arg, PREC.not)}`;
70
+ case 'and':
71
+ return f.args.map((a) => parenIfBelow(a, PREC.and)).join(' & ');
72
+ case 'or':
73
+ return f.args.map((a) => parenIfBelow(a, PREC.or)).join(' | ');
74
+ case 'implies':
75
+ // implies asocia derecha; el lado izquierdo necesita paren si su
76
+ // precedencia ≤ implies (excepto a sí mismo? por claridad, sí).
77
+ return `${parenIfBelow(f.left, PREC.implies + 1)} => ${parenIfBelow(f.right, PREC.implies)}`;
78
+ case 'iff':
79
+ return `${parenIfBelow(f.left, PREC.iff + 1)} <=> ${parenIfBelow(f.right, PREC.iff + 1)}`;
80
+ case 'xor':
81
+ return `${parenIfBelow(f.left, PREC.iff + 1)} <~> ${parenIfBelow(f.right, PREC.iff + 1)}`;
82
+ case 'forall':
83
+ return `! [${f.vars.join(',')}] : ${parenIfBelow(f.body, PREC.not)}`;
84
+ case 'exists':
85
+ return `? [${f.vars.join(',')}] : ${parenIfBelow(f.body, PREC.not)}`;
86
+ }
87
+ }
88
+ function emitTptp(problem) {
89
+ const out = [];
90
+ for (const inc of problem.includes) {
91
+ out.push(`include('${inc}').`);
92
+ }
93
+ for (const a of problem.annotated) {
94
+ if (a.comment) {
95
+ for (const line of a.comment.split('\n')) {
96
+ out.push(`% ${line}`);
97
+ }
98
+ }
99
+ out.push(`${a.language}(${a.name}, ${a.role}, ${emitFormula(a.formula)}).`);
100
+ }
101
+ return out.join('\n');
102
+ }
103
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/tptp/emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type { TptpFormula, TptpProblem, TptpAnnotated, TptpTerm, TptpLanguage, TptpRole, } from './ast';
2
+ export { TPTP_LANGUAGES, TPTP_ROLES } from './ast';
3
+ export { TptpTokenizerError, tokenize, type TptpToken, type TptpTokenKind } from './tokenizer';
4
+ export { TptpParserError, parseTptp, parseFormula, parseTerm } from './parser';
5
+ export { emitTptp, emitFormula, emitTerm } from './emitter';
6
+ export { toFolProverFormat, tptpFormulaToFol, annotatedToFol, type FolProverBridgeOutput, } from './bridge';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tptp/index.ts"],"names":[],"mappings":"AASA,YAAY,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,UAAU,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // TPTP — Barrel
4
+ // ============================================================
5
+ //
6
+ // Parser + emitter para el formato TPTP (Thousands of Problems for
7
+ // Theorem Provers), soporte FOF / CNF / TFF light. Incluye un puente
8
+ // (`toFolProverFormat`) que convierte un `TptpProblem` al tipo `Formula`
9
+ // que entiende `src/fol-prover`.
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.annotatedToFol = exports.tptpFormulaToFol = exports.toFolProverFormat = exports.emitTerm = exports.emitFormula = exports.emitTptp = exports.parseTerm = exports.parseFormula = exports.parseTptp = exports.TptpParserError = exports.tokenize = exports.TptpTokenizerError = exports.TPTP_ROLES = exports.TPTP_LANGUAGES = void 0;
12
+ var ast_1 = require("./ast");
13
+ Object.defineProperty(exports, "TPTP_LANGUAGES", { enumerable: true, get: function () { return ast_1.TPTP_LANGUAGES; } });
14
+ Object.defineProperty(exports, "TPTP_ROLES", { enumerable: true, get: function () { return ast_1.TPTP_ROLES; } });
15
+ var tokenizer_1 = require("./tokenizer");
16
+ Object.defineProperty(exports, "TptpTokenizerError", { enumerable: true, get: function () { return tokenizer_1.TptpTokenizerError; } });
17
+ Object.defineProperty(exports, "tokenize", { enumerable: true, get: function () { return tokenizer_1.tokenize; } });
18
+ var parser_1 = require("./parser");
19
+ Object.defineProperty(exports, "TptpParserError", { enumerable: true, get: function () { return parser_1.TptpParserError; } });
20
+ Object.defineProperty(exports, "parseTptp", { enumerable: true, get: function () { return parser_1.parseTptp; } });
21
+ Object.defineProperty(exports, "parseFormula", { enumerable: true, get: function () { return parser_1.parseFormula; } });
22
+ Object.defineProperty(exports, "parseTerm", { enumerable: true, get: function () { return parser_1.parseTerm; } });
23
+ var emitter_1 = require("./emitter");
24
+ Object.defineProperty(exports, "emitTptp", { enumerable: true, get: function () { return emitter_1.emitTptp; } });
25
+ Object.defineProperty(exports, "emitFormula", { enumerable: true, get: function () { return emitter_1.emitFormula; } });
26
+ Object.defineProperty(exports, "emitTerm", { enumerable: true, get: function () { return emitter_1.emitTerm; } });
27
+ var bridge_1 = require("./bridge");
28
+ Object.defineProperty(exports, "toFolProverFormat", { enumerable: true, get: function () { return bridge_1.toFolProverFormat; } });
29
+ Object.defineProperty(exports, "tptpFormulaToFol", { enumerable: true, get: function () { return bridge_1.tptpFormulaToFol; } });
30
+ Object.defineProperty(exports, "annotatedToFol", { enumerable: true, get: function () { return bridge_1.annotatedToFol; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tptp/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,qEAAqE;AACrE,yEAAyE;AACzE,iCAAiC;;;AAWjC,6BAAmD;AAA1C,qGAAA,cAAc,OAAA;AAAE,iGAAA,UAAU,OAAA;AAEnC,yCAA+F;AAAtF,+GAAA,kBAAkB,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAErC,mCAA+E;AAAtE,yGAAA,eAAe,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,mGAAA,SAAS,OAAA;AAE5D,qCAA4D;AAAnD,mGAAA,QAAQ,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAExC,mCAKkB;AAJhB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,wGAAA,cAAc,OAAA"}
@@ -0,0 +1,23 @@
1
+ import { TptpFormula, TptpLanguage, TptpProblem, TptpTerm } from './ast';
2
+ import { TptpToken, TptpTokenKind } from './tokenizer';
3
+ export declare class TptpParserError extends Error {
4
+ readonly line: number;
5
+ readonly col: number;
6
+ constructor(message: string, line: number, col: number);
7
+ }
8
+ declare class Cursor {
9
+ private readonly tokens;
10
+ private idx;
11
+ constructor(tokens: TptpToken[]);
12
+ peek(offset?: number): TptpToken | undefined;
13
+ next(): TptpToken;
14
+ done(): boolean;
15
+ expect(kind: TptpTokenKind): TptpToken;
16
+ matchKind(kind: TptpTokenKind): boolean;
17
+ consumeKind(kind: TptpTokenKind): TptpToken | undefined;
18
+ }
19
+ export declare function parseTptp(input: string): TptpProblem;
20
+ export declare function parseFormula(input: string, lang: TptpLanguage): TptpFormula;
21
+ export declare function parseTerm(cur: Cursor | string): TptpTerm;
22
+ export {};
23
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/tptp/parser.ts"],"names":[],"mappings":"AAwBA,OAAO,EAEL,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,QAAQ,EAGT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,aAAa,EAAY,MAAM,aAAa,CAAC;AAEjE,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,IAAI,EAAE,MAAM;aACZ,GAAG,EAAE,MAAM;gBAF3B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM;CAK9B;AAED,cAAM,MAAM;IAEE,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,GAAG,CAAK;gBACa,MAAM,EAAE,SAAS,EAAE;IAEhD,IAAI,CAAC,MAAM,SAAI,GAAG,SAAS,GAAG,SAAS;IAIvC,IAAI,IAAI,SAAS;IASjB,IAAI,IAAI,OAAO;IAIf,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;IAetC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAIvC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS;CAIxD;AAWD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAgCpD;AA2ED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CAW3E;AAoOD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAGxD"}
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // TPTP — Parser
4
+ // ============================================================
5
+ //
6
+ // Parser para FOF / CNF / TFF light. Gramática simplificada:
7
+ //
8
+ // tptp_input := annotated_formula | include
9
+ // annotated_formula := language '(' name ',' role ',' formula ')' '.'
10
+ // include := 'include' '(' single_quoted ')' '.'
11
+ // formula := iff_expr
12
+ // iff_expr := imp_expr (('<=>' | '<~>') imp_expr)?
13
+ // imp_expr := or_expr (('=>' | '<=') imp_expr)?
14
+ // or_expr := and_expr ('|' and_expr)*
15
+ // and_expr := unary_expr ('&' unary_expr)*
16
+ // unary_expr := '~' unary_expr | quantified | atom_or_paren
17
+ // quantified := ('!' | '?') '[' var (',' var)* ']' ':' unary_expr
18
+ // atom_or_paren := '(' formula ')' | atom | term_eq
19
+ // atom := lower_word ('(' term (',' term)* ')')?
20
+ // term_eq := term ('=' | '!=') term
21
+ // term := variable | lower_word ('(' term (',' term)* ')')?
22
+ //
23
+ // TFF light: aceptamos type annotations en argumentos (`![X : $i] : ...`)
24
+ // pero las descartamos para construir la fórmula FOL.
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.TptpParserError = void 0;
27
+ exports.parseTptp = parseTptp;
28
+ exports.parseFormula = parseFormula;
29
+ exports.parseTerm = parseTerm;
30
+ const ast_1 = require("./ast");
31
+ const tokenizer_1 = require("./tokenizer");
32
+ class TptpParserError extends Error {
33
+ line;
34
+ col;
35
+ constructor(message, line, col) {
36
+ super(`TPTP parser ${line}:${col}: ${message}`);
37
+ this.line = line;
38
+ this.col = col;
39
+ this.name = 'TptpParserError';
40
+ }
41
+ }
42
+ exports.TptpParserError = TptpParserError;
43
+ class Cursor {
44
+ tokens;
45
+ idx = 0;
46
+ constructor(tokens) {
47
+ this.tokens = tokens;
48
+ }
49
+ peek(offset = 0) {
50
+ return this.tokens[this.idx + offset];
51
+ }
52
+ next() {
53
+ const t = this.tokens[this.idx];
54
+ if (!t) {
55
+ throw new TptpParserError('fin inesperado de entrada', 0, 0);
56
+ }
57
+ this.idx++;
58
+ return t;
59
+ }
60
+ done() {
61
+ return this.idx >= this.tokens.length;
62
+ }
63
+ expect(kind) {
64
+ const t = this.peek();
65
+ if (!t) {
66
+ throw new TptpParserError(`se esperaba ${kind} pero llegó EOF`, 0, 0);
67
+ }
68
+ if (t.kind !== kind) {
69
+ throw new TptpParserError(`se esperaba ${kind} pero llegó ${t.kind} (${JSON.stringify(t.value)})`, t.line, t.col);
70
+ }
71
+ return this.next();
72
+ }
73
+ matchKind(kind) {
74
+ return this.peek()?.kind === kind;
75
+ }
76
+ consumeKind(kind) {
77
+ if (this.matchKind(kind))
78
+ return this.next();
79
+ return undefined;
80
+ }
81
+ }
82
+ // ── Helpers ─────────────────────────────────────────────────────────────
83
+ function isVariable(name) {
84
+ const ch = name[0] ?? '';
85
+ return /[A-Z_]/.test(ch);
86
+ }
87
+ // ── Parser de problema completo ─────────────────────────────────────────
88
+ function parseTptp(input) {
89
+ const tokens = (0, tokenizer_1.tokenize)(input);
90
+ const cur = new Cursor(tokens);
91
+ const annotated = [];
92
+ const includes = [];
93
+ while (!cur.done()) {
94
+ const t = cur.peek();
95
+ if (!t)
96
+ break;
97
+ if (t.kind !== 'lower_word') {
98
+ throw new TptpParserError(`se esperaba 'fof'/'cnf'/'tff'/'thf'/'include' pero llegó ${t.kind}`, t.line, t.col);
99
+ }
100
+ if (t.value === 'include') {
101
+ includes.push(parseInclude(cur));
102
+ continue;
103
+ }
104
+ if (ast_1.TPTP_LANGUAGES.has(t.value)) {
105
+ annotated.push(parseAnnotated(cur));
106
+ continue;
107
+ }
108
+ throw new TptpParserError(`palabra de cabecera desconocida: ${JSON.stringify(t.value)}`, t.line, t.col);
109
+ }
110
+ return { annotated, includes };
111
+ }
112
+ function parseInclude(cur) {
113
+ const head = cur.expect('lower_word');
114
+ if (head.value !== 'include') {
115
+ throw new TptpParserError(`esperaba 'include' pero llegó ${head.value}`, head.line, head.col);
116
+ }
117
+ cur.expect('lparen');
118
+ const file = cur.expect('single_quoted');
119
+ // include opcionalmente acepta una lista de "selectors" tras coma
120
+ // include('file.ax', [a, b]). — la consumimos pero la descartamos.
121
+ if (cur.consumeKind('comma')) {
122
+ skipBalanced(cur);
123
+ }
124
+ cur.expect('rparen');
125
+ cur.expect('dot');
126
+ return file.value;
127
+ }
128
+ function skipBalanced(cur) {
129
+ // Consume tokens hasta un comma/rparen a nivel 0
130
+ let depth = 0;
131
+ while (!cur.done()) {
132
+ const t = cur.peek();
133
+ if (!t)
134
+ break;
135
+ if ((t.kind === 'rparen' || t.kind === 'rbracket') && depth === 0)
136
+ return;
137
+ if (t.kind === 'comma' && depth === 0)
138
+ return;
139
+ if (t.kind === 'lparen' || t.kind === 'lbracket')
140
+ depth++;
141
+ if (t.kind === 'rparen' || t.kind === 'rbracket')
142
+ depth--;
143
+ cur.next();
144
+ }
145
+ }
146
+ function parseAnnotated(cur) {
147
+ const langTok = cur.expect('lower_word');
148
+ const language = langTok.value;
149
+ if (!ast_1.TPTP_LANGUAGES.has(language)) {
150
+ throw new TptpParserError(`lenguaje no reconocido: ${langTok.value}`, langTok.line, langTok.col);
151
+ }
152
+ cur.expect('lparen');
153
+ const nameTok = cur.next();
154
+ let name;
155
+ if (nameTok.kind === 'lower_word' || nameTok.kind === 'integer') {
156
+ name = nameTok.value;
157
+ }
158
+ else if (nameTok.kind === 'single_quoted') {
159
+ name = nameTok.value;
160
+ }
161
+ else {
162
+ throw new TptpParserError(`nombre inválido (${nameTok.kind})`, nameTok.line, nameTok.col);
163
+ }
164
+ cur.expect('comma');
165
+ const roleTok = cur.expect('lower_word');
166
+ const role = roleTok.value;
167
+ if (!ast_1.TPTP_ROLES.has(role)) {
168
+ throw new TptpParserError(`role desconocido: ${roleTok.value}`, roleTok.line, roleTok.col);
169
+ }
170
+ cur.expect('comma');
171
+ const formula = parseFormulaFromCursor(cur, language);
172
+ // anotaciones opcionales: (..., source, useful_info)
173
+ if (cur.consumeKind('comma')) {
174
+ skipBalanced(cur);
175
+ while (cur.consumeKind('comma')) {
176
+ skipBalanced(cur);
177
+ }
178
+ }
179
+ cur.expect('rparen');
180
+ cur.expect('dot');
181
+ return { language, name, role, formula };
182
+ }
183
+ // ── Parser de fórmula ───────────────────────────────────────────────────
184
+ function parseFormula(input, lang) {
185
+ const tokens = (0, tokenizer_1.tokenize)(input);
186
+ const cur = new Cursor(tokens);
187
+ const f = parseFormulaFromCursor(cur, lang);
188
+ if (!cur.done()) {
189
+ const t = cur.peek();
190
+ if (t) {
191
+ throw new TptpParserError(`tokens sobrantes tras fórmula (${t.kind})`, t.line, t.col);
192
+ }
193
+ }
194
+ return f;
195
+ }
196
+ function parseFormulaFromCursor(cur, lang) {
197
+ if (lang === 'cnf')
198
+ return parseCnfClause(cur);
199
+ return parseIff(cur);
200
+ }
201
+ // CNF: lista de literales separados por `|`. Variables implícitamente
202
+ // cuantificadas universal. Los literales son atom o ~atom o eq/neq.
203
+ function parseCnfClause(cur) {
204
+ // CNF puede venir envuelto en paréntesis opcionales
205
+ const parenOpen = cur.consumeKind('lparen');
206
+ const literals = [parseCnfLiteral(cur)];
207
+ while (cur.consumeKind('op_or')) {
208
+ literals.push(parseCnfLiteral(cur));
209
+ }
210
+ if (parenOpen)
211
+ cur.expect('rparen');
212
+ if (literals.length === 1)
213
+ return literals[0];
214
+ return { kind: 'or', args: literals };
215
+ }
216
+ function parseCnfLiteral(cur) {
217
+ if (cur.consumeKind('op_not')) {
218
+ const inner = parseCnfAtom(cur);
219
+ return { kind: 'not', arg: inner };
220
+ }
221
+ return parseCnfAtom(cur);
222
+ }
223
+ function parseCnfAtom(cur) {
224
+ // un atom puede ser una eq/neq entre términos o un atom predicativo
225
+ return parseAtomOrEquality(cur);
226
+ }
227
+ // FOF: iff a nivel más alto.
228
+ function parseIff(cur) {
229
+ const left = parseImplies(cur);
230
+ const op = cur.peek();
231
+ if (op && (op.kind === 'op_iff' || op.kind === 'op_xor')) {
232
+ cur.next();
233
+ const right = parseImplies(cur);
234
+ if (op.kind === 'op_iff')
235
+ return { kind: 'iff', left, right };
236
+ return { kind: 'xor', left, right };
237
+ }
238
+ return left;
239
+ }
240
+ function parseImplies(cur) {
241
+ const left = parseOr(cur);
242
+ const op = cur.peek();
243
+ if (op && op.kind === 'op_implies') {
244
+ cur.next();
245
+ const right = parseImplies(cur);
246
+ return { kind: 'implies', left, right };
247
+ }
248
+ if (op && op.kind === 'op_nimplies') {
249
+ // a <= b ≡ b => a
250
+ cur.next();
251
+ const right = parseImplies(cur);
252
+ return { kind: 'implies', left: right, right: left };
253
+ }
254
+ return left;
255
+ }
256
+ function parseOr(cur) {
257
+ const first = parseAnd(cur);
258
+ if (!cur.matchKind('op_or'))
259
+ return first;
260
+ const args = [first];
261
+ while (cur.consumeKind('op_or')) {
262
+ args.push(parseAnd(cur));
263
+ }
264
+ return { kind: 'or', args };
265
+ }
266
+ function parseAnd(cur) {
267
+ const first = parseUnary(cur);
268
+ if (!cur.matchKind('op_and'))
269
+ return first;
270
+ const args = [first];
271
+ while (cur.consumeKind('op_and')) {
272
+ args.push(parseUnary(cur));
273
+ }
274
+ return { kind: 'and', args };
275
+ }
276
+ function parseUnary(cur) {
277
+ if (cur.consumeKind('op_not')) {
278
+ const arg = parseUnary(cur);
279
+ return { kind: 'not', arg };
280
+ }
281
+ if (cur.matchKind('op_forall') || cur.matchKind('op_exists')) {
282
+ return parseQuantified(cur);
283
+ }
284
+ return parsePrimary(cur);
285
+ }
286
+ function parseQuantified(cur) {
287
+ const qTok = cur.next();
288
+ const kind = qTok.kind === 'op_forall' ? 'forall' : 'exists';
289
+ cur.expect('lbracket');
290
+ const vars = [parseVariableDecl(cur)];
291
+ while (cur.consumeKind('comma')) {
292
+ vars.push(parseVariableDecl(cur));
293
+ }
294
+ cur.expect('rbracket');
295
+ cur.expect('colon');
296
+ const body = parseUnary(cur);
297
+ return { kind, vars, body };
298
+ }
299
+ function parseVariableDecl(cur) {
300
+ const t = cur.expect('upper_word');
301
+ // TFF light: variable opcionalmente seguida de `:` type — descartamos el type
302
+ if (cur.consumeKind('colon')) {
303
+ parseTypeExpr(cur);
304
+ }
305
+ return t.value;
306
+ }
307
+ function parseTypeExpr(cur) {
308
+ // type puede ser $i, $o, lower_word, o un constructor; consumimos hasta
309
+ // un comma/rbracket a nivel 0.
310
+ let depth = 0;
311
+ while (!cur.done()) {
312
+ const t = cur.peek();
313
+ if (!t)
314
+ return;
315
+ if (depth === 0 && (t.kind === 'comma' || t.kind === 'rbracket'))
316
+ return;
317
+ if (t.kind === 'lparen' || t.kind === 'lbracket')
318
+ depth++;
319
+ if (t.kind === 'rparen' || t.kind === 'rbracket') {
320
+ if (depth === 0)
321
+ return;
322
+ depth--;
323
+ }
324
+ cur.next();
325
+ }
326
+ }
327
+ function parsePrimary(cur) {
328
+ const t = cur.peek();
329
+ if (!t) {
330
+ throw new TptpParserError('fin inesperado en primary', 0, 0);
331
+ }
332
+ // Constantes lógicas $true / $false (en TPTP se escriben así, pero
333
+ // nuestro lexer no las captura como token especial — vienen como '$'
334
+ // + lower_word. Para mantenerlo simple aceptamos también los símbolos
335
+ // `true` y `false` como atómicos sin args)
336
+ if (t.kind === 'lower_word' && (t.value === '$true' || t.value === 'true')) {
337
+ cur.next();
338
+ return { kind: 'true' };
339
+ }
340
+ if (t.kind === 'lower_word' && (t.value === '$false' || t.value === 'false')) {
341
+ cur.next();
342
+ return { kind: 'false' };
343
+ }
344
+ if (t.kind === 'lparen') {
345
+ cur.next();
346
+ const inner = parseIff(cur);
347
+ cur.expect('rparen');
348
+ return inner;
349
+ }
350
+ return parseAtomOrEquality(cur);
351
+ }
352
+ // Maneja: <term> = <term> | <term> != <term> | <predicate>(args) | <prop>
353
+ function parseAtomOrEquality(cur) {
354
+ const startToken = cur.peek();
355
+ if (!startToken) {
356
+ throw new TptpParserError('fin inesperado en atom', 0, 0);
357
+ }
358
+ // Si el primer token es variable o un término, podría ser una eq/neq
359
+ // o (rara vez) un atom-no-predicativo. Probamos parsear un término
360
+ // y vemos si sigue `=` o `!=`.
361
+ if (startToken.kind === 'upper_word') {
362
+ const left = parseTerm(cur);
363
+ return finishEquality(cur, left);
364
+ }
365
+ if (startToken.kind === 'lower_word') {
366
+ // Podría ser predicado p(...), constante c, o término con `=`.
367
+ // Lo más simple: parsear como término y mirar el siguiente token.
368
+ // Si el siguiente es `=` o `!=`, es equality.
369
+ // Si NO hay siguiente operador de igualdad, lo tratamos como
370
+ // predicado/atom proposicional.
371
+ const left = parseTerm(cur);
372
+ if (cur.matchKind('op_eq') || cur.matchKind('op_neq')) {
373
+ return finishEquality(cur, left);
374
+ }
375
+ // Convertir el término a atom (asumimos lower_word con args = predicado)
376
+ return termToAtom(left, startToken.line, startToken.col);
377
+ }
378
+ throw new TptpParserError(`token inesperado en atom: ${startToken.kind} (${JSON.stringify(startToken.value)})`, startToken.line, startToken.col);
379
+ }
380
+ function termToAtom(t, line, col) {
381
+ if (t.kind === 'var') {
382
+ throw new TptpParserError(`variable no puede ser atom proposicional: ${t.name}`, line, col);
383
+ }
384
+ if (t.kind === 'const') {
385
+ return { kind: 'atom', predicate: t.name, args: [] };
386
+ }
387
+ return { kind: 'atom', predicate: t.name, args: t.args };
388
+ }
389
+ function finishEquality(cur, left) {
390
+ if (cur.consumeKind('op_eq')) {
391
+ const right = parseTerm(cur);
392
+ return { kind: 'eq', left, right };
393
+ }
394
+ if (cur.consumeKind('op_neq')) {
395
+ const right = parseTerm(cur);
396
+ return { kind: 'neq', left, right };
397
+ }
398
+ // El término solo (sin =/!=) ya fue manejado en parseAtomOrEquality si
399
+ // venía de lower_word. Si llegamos aquí desde upper_word sin operador,
400
+ // es un error.
401
+ const t = cur.peek();
402
+ throw new TptpParserError(`se esperaba '=' o '!=' tras término`, t?.line ?? 0, t?.col ?? 0);
403
+ }
404
+ // ── Parser de término ───────────────────────────────────────────────────
405
+ function parseTerm(cur) {
406
+ const c = typeof cur === 'string' ? new Cursor((0, tokenizer_1.tokenize)(cur)) : cur;
407
+ return parseTermInternal(c);
408
+ }
409
+ function parseTermInternal(cur) {
410
+ const t = cur.peek();
411
+ if (!t) {
412
+ throw new TptpParserError('fin inesperado en término', 0, 0);
413
+ }
414
+ if (t.kind === 'upper_word') {
415
+ cur.next();
416
+ return { kind: 'var', name: t.value };
417
+ }
418
+ if (t.kind === 'lower_word' || t.kind === 'integer' || t.kind === 'single_quoted') {
419
+ cur.next();
420
+ const name = t.value;
421
+ // Opcionalmente: argumentos
422
+ if (cur.consumeKind('lparen')) {
423
+ const args = [parseTermInternal(cur)];
424
+ while (cur.consumeKind('comma')) {
425
+ args.push(parseTermInternal(cur));
426
+ }
427
+ cur.expect('rparen');
428
+ return { kind: 'func', name, args };
429
+ }
430
+ // Decisión de var/const: integer y single_quoted siempre const.
431
+ // lower_word sin args y empieza con mayúscula → imposible (lexer
432
+ // lo habría clasificado como upper_word). Es const.
433
+ if (isVariable(name)) {
434
+ return { kind: 'var', name };
435
+ }
436
+ return { kind: 'const', name };
437
+ }
438
+ throw new TptpParserError(`token inesperado en término: ${t.kind}`, t.line, t.col);
439
+ }
440
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/tptp/parser.ts"],"names":[],"mappings":"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"}