@stevenvo780/st-lang 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/bin/st +3 -0
  3. package/dist/api.d.ts +157 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +232 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/ast/nodes.d.ts +97 -0
  8. package/dist/ast/nodes.d.ts.map +1 -0
  9. package/dist/ast/nodes.js +6 -0
  10. package/dist/ast/nodes.js.map +1 -0
  11. package/dist/cli/index.d.ts +2 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +278 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/index.d.ts +16 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +80 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lexer/lexer.d.ts +25 -0
  20. package/dist/lexer/lexer.d.ts.map +1 -0
  21. package/dist/lexer/lexer.js +358 -0
  22. package/dist/lexer/lexer.js.map +1 -0
  23. package/dist/lexer/tokens.d.ts +56 -0
  24. package/dist/lexer/tokens.d.ts.map +1 -0
  25. package/dist/lexer/tokens.js +85 -0
  26. package/dist/lexer/tokens.js.map +1 -0
  27. package/dist/parser/parser.d.ts +46 -0
  28. package/dist/parser/parser.d.ts.map +1 -0
  29. package/dist/parser/parser.js +415 -0
  30. package/dist/parser/parser.js.map +1 -0
  31. package/dist/profiles/classical/first-order.d.ts +13 -0
  32. package/dist/profiles/classical/first-order.d.ts.map +1 -0
  33. package/dist/profiles/classical/first-order.js +67 -0
  34. package/dist/profiles/classical/first-order.js.map +1 -0
  35. package/dist/profiles/classical/propositional.d.ts +16 -0
  36. package/dist/profiles/classical/propositional.d.ts.map +1 -0
  37. package/dist/profiles/classical/propositional.js +597 -0
  38. package/dist/profiles/classical/propositional.js.map +1 -0
  39. package/dist/profiles/interface.d.ts +11 -0
  40. package/dist/profiles/interface.d.ts.map +1 -0
  41. package/dist/profiles/interface.js +26 -0
  42. package/dist/profiles/interface.js.map +1 -0
  43. package/dist/profiles/modal/k.d.ts +13 -0
  44. package/dist/profiles/modal/k.d.ts.map +1 -0
  45. package/dist/profiles/modal/k.js +39 -0
  46. package/dist/profiles/modal/k.js.map +1 -0
  47. package/dist/profiles/paraconsistent/belnap.d.ts +13 -0
  48. package/dist/profiles/paraconsistent/belnap.d.ts.map +1 -0
  49. package/dist/profiles/paraconsistent/belnap.js +39 -0
  50. package/dist/profiles/paraconsistent/belnap.js.map +1 -0
  51. package/dist/protocol/handler.d.ts +17 -0
  52. package/dist/protocol/handler.d.ts.map +1 -0
  53. package/dist/protocol/handler.js +219 -0
  54. package/dist/protocol/handler.js.map +1 -0
  55. package/dist/repl/repl.d.ts +12 -0
  56. package/dist/repl/repl.d.ts.map +1 -0
  57. package/dist/repl/repl.js +237 -0
  58. package/dist/repl/repl.js.map +1 -0
  59. package/dist/runtime/interpreter.d.ts +41 -0
  60. package/dist/runtime/interpreter.d.ts.map +1 -0
  61. package/dist/runtime/interpreter.js +355 -0
  62. package/dist/runtime/interpreter.js.map +1 -0
  63. package/dist/tests/cli.test.d.ts +2 -0
  64. package/dist/tests/cli.test.d.ts.map +1 -0
  65. package/dist/tests/cli.test.js +184 -0
  66. package/dist/tests/cli.test.js.map +1 -0
  67. package/dist/tests/core.test.d.ts +2 -0
  68. package/dist/tests/core.test.d.ts.map +1 -0
  69. package/dist/tests/core.test.js +220 -0
  70. package/dist/tests/core.test.js.map +1 -0
  71. package/dist/tests/parser.test.d.ts +2 -0
  72. package/dist/tests/parser.test.d.ts.map +1 -0
  73. package/dist/tests/parser.test.js +180 -0
  74. package/dist/tests/parser.test.js.map +1 -0
  75. package/dist/tests/runner.d.ts +6 -0
  76. package/dist/tests/runner.d.ts.map +1 -0
  77. package/dist/tests/runner.js +69 -0
  78. package/dist/tests/runner.js.map +1 -0
  79. package/dist/text-layer/compiler.d.ts +19 -0
  80. package/dist/text-layer/compiler.d.ts.map +1 -0
  81. package/dist/text-layer/compiler.js +151 -0
  82. package/dist/text-layer/compiler.js.map +1 -0
  83. package/dist/types/index.d.ts +178 -0
  84. package/dist/types/index.d.ts.map +1 -0
  85. package/dist/types/index.js +6 -0
  86. package/dist/types/index.js.map +1 -0
  87. package/package.json +79 -0
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Tests — Core (perfiles, motor proposicional)
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runCoreTests = runCoreTests;
7
+ const runner_1 = require("./runner");
8
+ const propositional_1 = require("../profiles/classical/propositional");
9
+ function makeTheory(axioms) {
10
+ const t = {
11
+ profile: 'classical.propositional',
12
+ axioms: new Map(Object.entries(axioms)),
13
+ theorems: new Map(),
14
+ claims: new Map(),
15
+ judgments: [],
16
+ };
17
+ return t;
18
+ }
19
+ // Helpers para crear fórmulas
20
+ function atom(name) {
21
+ return { kind: 'atom', name };
22
+ }
23
+ function not(f) {
24
+ return { kind: 'not', args: [f] };
25
+ }
26
+ function and(a, b) {
27
+ return { kind: 'and', args: [a, b] };
28
+ }
29
+ function or(a, b) {
30
+ return { kind: 'or', args: [a, b] };
31
+ }
32
+ function implies(a, b) {
33
+ return { kind: 'implies', args: [a, b] };
34
+ }
35
+ function biconditional(a, b) {
36
+ return { kind: 'biconditional', args: [a, b] };
37
+ }
38
+ function runCoreTests() {
39
+ const cp = new propositional_1.ClassicalPropositional();
40
+ (0, runner_1.describe)('ClassicalPropositional.checkWellFormed', () => {
41
+ (0, runner_1.it)('acepta atomo simple', () => {
42
+ const diags = cp.checkWellFormed(atom('P'));
43
+ (0, runner_1.assertEqual)(diags.length, 0);
44
+ });
45
+ (0, runner_1.it)('acepta negacion', () => {
46
+ const diags = cp.checkWellFormed(not(atom('P')));
47
+ (0, runner_1.assertEqual)(diags.length, 0);
48
+ });
49
+ (0, runner_1.it)('acepta implicacion compleja', () => {
50
+ const f = implies(atom('P'), implies(atom('Q'), atom('R')));
51
+ const diags = cp.checkWellFormed(f);
52
+ (0, runner_1.assertEqual)(diags.length, 0);
53
+ });
54
+ });
55
+ (0, runner_1.describe)('ClassicalPropositional.checkValid', () => {
56
+ (0, runner_1.it)('P -> P es tautologia', () => {
57
+ const f = implies(atom('P'), atom('P'));
58
+ const result = cp.checkValid(f);
59
+ (0, runner_1.assertEqual)(result.status, 'valid');
60
+ });
61
+ (0, runner_1.it)('P -> (Q -> P) es tautologia', () => {
62
+ const f = implies(atom('P'), implies(atom('Q'), atom('P')));
63
+ const result = cp.checkValid(f);
64
+ (0, runner_1.assertEqual)(result.status, 'valid');
65
+ });
66
+ (0, runner_1.it)('(P -> Q) -> (!Q -> !P) es tautologia (contraposicion)', () => {
67
+ const f = implies(implies(atom('P'), atom('Q')), implies(not(atom('Q')), not(atom('P'))));
68
+ const result = cp.checkValid(f);
69
+ (0, runner_1.assertEqual)(result.status, 'valid');
70
+ });
71
+ (0, runner_1.it)('P -> Q no es tautologia', () => {
72
+ const f = implies(atom('P'), atom('Q'));
73
+ const result = cp.checkValid(f);
74
+ (0, runner_1.assertEqual)(result.status, 'invalid');
75
+ });
76
+ (0, runner_1.it)('P | !P es tautologia (tercero excluido)', () => {
77
+ const f = or(atom('P'), not(atom('P')));
78
+ const result = cp.checkValid(f);
79
+ (0, runner_1.assertEqual)(result.status, 'valid');
80
+ });
81
+ (0, runner_1.it)('!(P & !P) es tautologia (no contradiccion)', () => {
82
+ const f = not(and(atom('P'), not(atom('P'))));
83
+ const result = cp.checkValid(f);
84
+ (0, runner_1.assertEqual)(result.status, 'valid');
85
+ });
86
+ });
87
+ (0, runner_1.describe)('ClassicalPropositional.checkSatisfiable', () => {
88
+ (0, runner_1.it)('P es satisfacible', () => {
89
+ const result = cp.checkSatisfiable(atom('P'));
90
+ (0, runner_1.assertEqual)(result.status, 'satisfiable');
91
+ });
92
+ (0, runner_1.it)('P & !P es insatisfacible', () => {
93
+ const f = and(atom('P'), not(atom('P')));
94
+ const result = cp.checkSatisfiable(f);
95
+ (0, runner_1.assertEqual)(result.status, 'unsatisfiable');
96
+ });
97
+ (0, runner_1.it)('P & Q es satisfacible', () => {
98
+ const f = and(atom('P'), atom('Q'));
99
+ const result = cp.checkSatisfiable(f);
100
+ (0, runner_1.assertEqual)(result.status, 'satisfiable');
101
+ });
102
+ });
103
+ (0, runner_1.describe)('ClassicalPropositional.derive', () => {
104
+ (0, runner_1.it)('Modus Ponens: P, P->Q |- Q', () => {
105
+ const theory = makeTheory({
106
+ a1: implies(atom('P'), atom('Q')),
107
+ a2: atom('P'),
108
+ });
109
+ const result = cp.derive(atom('Q'), ['a1', 'a2'], theory);
110
+ (0, runner_1.assertEqual)(result.status, 'provable');
111
+ });
112
+ (0, runner_1.it)('Modus Tollens: !Q, P->Q |- !P', () => {
113
+ const theory = makeTheory({
114
+ a1: implies(atom('P'), atom('Q')),
115
+ a2: not(atom('Q')),
116
+ });
117
+ const result = cp.derive(not(atom('P')), ['a1', 'a2'], theory);
118
+ (0, runner_1.assertEqual)(result.status, 'provable');
119
+ });
120
+ (0, runner_1.it)('Derivacion encadenada: P, P->Q, Q->R |- R', () => {
121
+ const theory = makeTheory({
122
+ a1: atom('P'),
123
+ a2: implies(atom('P'), atom('Q')),
124
+ a3: implies(atom('Q'), atom('R')),
125
+ });
126
+ const result = cp.derive(atom('R'), ['a1', 'a2', 'a3'], theory);
127
+ (0, runner_1.assertEqual)(result.status, 'provable');
128
+ });
129
+ (0, runner_1.it)('No se puede derivar Q solo de P', () => {
130
+ const theory = makeTheory({
131
+ a1: atom('P'),
132
+ });
133
+ const result = cp.derive(atom('Q'), ['a1'], theory);
134
+ (0, runner_1.assertEqual)(result.status, 'refutable');
135
+ });
136
+ });
137
+ (0, runner_1.describe)('ClassicalPropositional.countermodel', () => {
138
+ (0, runner_1.it)('encuentra contramodelo para P -> Q', () => {
139
+ const f = implies(atom('P'), atom('Q'));
140
+ const result = cp.countermodel(f);
141
+ (0, runner_1.assertEqual)(result.status, 'invalid');
142
+ (0, runner_1.assert)(result.model !== undefined, 'Debe tener modelo');
143
+ (0, runner_1.assert)(result.model.valuation !== undefined, 'Debe tener valuacion');
144
+ (0, runner_1.assertEqual)(result.model.valuation['P'], true);
145
+ (0, runner_1.assertEqual)(result.model.valuation['Q'], false);
146
+ });
147
+ (0, runner_1.it)('no encuentra contramodelo para tautologia', () => {
148
+ const f = implies(atom('P'), atom('P'));
149
+ const result = cp.countermodel(f);
150
+ (0, runner_1.assertEqual)(result.status, 'valid');
151
+ });
152
+ });
153
+ (0, runner_1.describe)('ClassicalPropositional.truthTable', () => {
154
+ (0, runner_1.it)('genera tabla correcta para P & Q', () => {
155
+ const f = and(atom('P'), atom('Q'));
156
+ const tt = cp.truthTable(f);
157
+ (0, runner_1.assertEqual)(tt.variables.length, 2);
158
+ (0, runner_1.assertEqual)(tt.rows.length, 4);
159
+ (0, runner_1.assertEqual)(tt.isTautology, false);
160
+ (0, runner_1.assertEqual)(tt.isSatisfiable, true);
161
+ // Solo P=T,Q=T da true
162
+ const trueRows = tt.rows.filter(r => r.result);
163
+ (0, runner_1.assertEqual)(trueRows.length, 1);
164
+ });
165
+ (0, runner_1.it)('genera tabla correcta para P | !P', () => {
166
+ const f = or(atom('P'), not(atom('P')));
167
+ const tt = cp.truthTable(f);
168
+ (0, runner_1.assertEqual)(tt.isTautology, true);
169
+ (0, runner_1.assertEqual)(tt.isContradiction, false);
170
+ });
171
+ });
172
+ (0, runner_1.describe)('ClassicalPropositional.checkEquivalent', () => {
173
+ (0, runner_1.it)('P->Q y !P|Q son equivalentes', () => {
174
+ const f1 = implies(atom('P'), atom('Q'));
175
+ const f2 = or(not(atom('P')), atom('Q'));
176
+ const result = cp.checkEquivalent(f1, f2);
177
+ (0, runner_1.assertEqual)(result.status, 'valid');
178
+ });
179
+ (0, runner_1.it)('P&Q y P|Q no son equivalentes', () => {
180
+ const f1 = and(atom('P'), atom('Q'));
181
+ const f2 = or(atom('P'), atom('Q'));
182
+ const result = cp.checkEquivalent(f1, f2);
183
+ (0, runner_1.assertEqual)(result.status, 'invalid');
184
+ });
185
+ (0, runner_1.it)('De Morgan: !(P&Q) y (!P|!Q) son equivalentes', () => {
186
+ const f1 = not(and(atom('P'), atom('Q')));
187
+ const f2 = or(not(atom('P')), not(atom('Q')));
188
+ const result = cp.checkEquivalent(f1, f2);
189
+ (0, runner_1.assertEqual)(result.status, 'valid');
190
+ });
191
+ });
192
+ (0, runner_1.describe)('ClassicalPropositional.explain', () => {
193
+ (0, runner_1.it)('explica formula correctamente', () => {
194
+ const f = implies(atom('P'), atom('Q'));
195
+ const result = cp.explain(f);
196
+ (0, runner_1.assert)(result.output !== undefined, 'Debe tener output');
197
+ (0, runner_1.assertIncludes)(result.output, 'Variables');
198
+ (0, runner_1.assertIncludes)(result.output, 'Tautologia: no');
199
+ });
200
+ });
201
+ (0, runner_1.describe)('formulaToString', () => {
202
+ (0, runner_1.it)('serializa atomo', () => {
203
+ (0, runner_1.assertEqual)((0, propositional_1.formulaToString)(atom('P')), 'P');
204
+ });
205
+ (0, runner_1.it)('serializa negacion', () => {
206
+ (0, runner_1.assertEqual)((0, propositional_1.formulaToString)(not(atom('P'))), '!P');
207
+ });
208
+ (0, runner_1.it)('serializa implicacion', () => {
209
+ (0, runner_1.assertEqual)((0, propositional_1.formulaToString)(implies(atom('P'), atom('Q'))), '(P -> Q)');
210
+ });
211
+ (0, runner_1.it)('serializa formula compleja', () => {
212
+ const f = implies(implies(atom('P'), atom('Q')), implies(not(atom('Q')), not(atom('P'))));
213
+ const str = (0, propositional_1.formulaToString)(f);
214
+ (0, runner_1.assertIncludes)(str, 'P');
215
+ (0, runner_1.assertIncludes)(str, 'Q');
216
+ (0, runner_1.assertIncludes)(str, '->');
217
+ });
218
+ });
219
+ }
220
+ //# sourceMappingURL=core.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.test.js","sourceRoot":"","sources":["../../src/tests/core.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,kDAAkD;AAClD,+DAA+D;;AAqC/D,oCAoNC;AAvPD,qCAA6E;AAC7E,uEAA8F;AAG9F,SAAS,UAAU,CAAC,MAA+B;IACjD,MAAM,CAAC,GAAW;QAChB,OAAO,EAAE,yBAAyB;QAClC,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8BAA8B;AAC9B,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AACD,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,CAAC;AACD,SAAS,GAAG,CAAC,CAAU,EAAE,CAAU;IACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC;AACD,SAAS,EAAE,CAAC,CAAU,EAAE,CAAU;IAChC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AACD,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU;IACrC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AACD,SAAS,aAAa,CAAC,CAAU,EAAE,CAAU;IAC3C,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAgB,YAAY;IAC1B,MAAM,EAAE,GAAG,IAAI,sCAAsB,EAAE,CAAC;IAExC,IAAA,iBAAQ,EAAC,wCAAwC,EAAE,GAAG,EAAE;QACtD,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAA,oBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,IAAA,oBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACpC,IAAA,oBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,CAAC,GAAG,OAAO,CACf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACxC,CAAC;YACF,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACvD,IAAA,WAAE,EAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;aACd,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;gBACb,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAChE,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;aACd,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACpD,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,mBAAmB,CAAC,CAAC;YACxD,IAAA,eAAM,EAAC,MAAM,CAAC,KAAM,CAAC,SAAS,KAAK,SAAS,EAAE,sBAAsB,CAAC,CAAC;YACtE,IAAA,oBAAW,EAAC,MAAM,CAAC,KAAM,CAAC,SAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,IAAA,oBAAW,EAAC,MAAM,CAAC,KAAM,CAAC,SAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAA,oBAAW,EAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACpC,IAAA,oBAAW,EAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAA,oBAAW,EAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACnC,IAAA,oBAAW,EAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACpC,uBAAuB;YACvB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAA,oBAAW,EAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAA,oBAAW,EAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAClC,IAAA,oBAAW,EAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,wCAAwC,EAAE,GAAG,EAAE;QACtD,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAA,oBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,mBAAmB,CAAC,CAAC;YACzD,IAAA,uBAAc,EAAC,MAAM,CAAC,MAAO,EAAE,WAAW,CAAC,CAAC;YAC5C,IAAA,uBAAc,EAAC,MAAM,CAAC,MAAO,EAAE,gBAAgB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,IAAA,oBAAW,EAAC,IAAA,+BAAe,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,IAAA,oBAAW,EAAC,IAAA,+BAAe,EAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,IAAA,oBAAW,EAAC,IAAA,+BAAe,EAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,MAAM,GAAG,GAAG,IAAA,+BAAe,EAAC,CAAC,CAAC,CAAC;YAC/B,IAAA,uBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzB,IAAA,uBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzB,IAAA,uBAAc,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runParserTests(): void;
2
+ //# sourceMappingURL=parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../../src/tests/parser.test.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,IAAI,IAAI,CAgMrC"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Tests — Parser
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runParserTests = runParserTests;
7
+ const runner_1 = require("./runner");
8
+ const parser_1 = require("../parser/parser");
9
+ function runParserTests() {
10
+ (0, runner_1.describe)('Parser — logic declaration', () => {
11
+ (0, runner_1.it)('parsea logic classical.propositional', () => {
12
+ const parser = new parser_1.Parser();
13
+ const program = parser.parse('logic classical.propositional');
14
+ (0, runner_1.assertEqual)(program.statements.length, 1);
15
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'logic_decl');
16
+ (0, runner_1.assertEqual)(program.statements[0].profile, 'classical.propositional');
17
+ });
18
+ });
19
+ (0, runner_1.describe)('Parser — axiom declaration', () => {
20
+ (0, runner_1.it)('parsea axiom simple', () => {
21
+ const parser = new parser_1.Parser();
22
+ const program = parser.parse('axiom a1 = P');
23
+ (0, runner_1.assertEqual)(program.statements.length, 1);
24
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'axiom_decl');
25
+ (0, runner_1.assertEqual)(program.statements[0].name, 'a1');
26
+ });
27
+ (0, runner_1.it)('parsea axiom con implicacion', () => {
28
+ const parser = new parser_1.Parser();
29
+ const program = parser.parse('axiom a1 = P -> Q');
30
+ (0, runner_1.assertEqual)(program.statements.length, 1);
31
+ const f = program.statements[0].formula;
32
+ (0, runner_1.assertEqual)(f.kind, 'implies');
33
+ });
34
+ });
35
+ (0, runner_1.describe)('Parser — formulas', () => {
36
+ (0, runner_1.it)('parsea negacion', () => {
37
+ const parser = new parser_1.Parser();
38
+ const program = parser.parse('axiom a = !P');
39
+ const f = program.statements[0].formula;
40
+ (0, runner_1.assertEqual)(f.kind, 'not');
41
+ (0, runner_1.assertEqual)(f.args[0].kind, 'atom');
42
+ });
43
+ (0, runner_1.it)('parsea conjuncion', () => {
44
+ const parser = new parser_1.Parser();
45
+ const program = parser.parse('axiom a = P & Q');
46
+ const f = program.statements[0].formula;
47
+ (0, runner_1.assertEqual)(f.kind, 'and');
48
+ });
49
+ (0, runner_1.it)('parsea disyuncion', () => {
50
+ const parser = new parser_1.Parser();
51
+ const program = parser.parse('axiom a = P | Q');
52
+ const f = program.statements[0].formula;
53
+ (0, runner_1.assertEqual)(f.kind, 'or');
54
+ });
55
+ (0, runner_1.it)('parsea bicondicional', () => {
56
+ const parser = new parser_1.Parser();
57
+ const program = parser.parse('axiom a = P <-> Q');
58
+ const f = program.statements[0].formula;
59
+ (0, runner_1.assertEqual)(f.kind, 'biconditional');
60
+ });
61
+ (0, runner_1.it)('respeta precedencia: & antes que |', () => {
62
+ const parser = new parser_1.Parser();
63
+ const program = parser.parse('axiom a = P | Q & R');
64
+ const f = program.statements[0].formula;
65
+ // Debe ser P | (Q & R), no (P | Q) & R
66
+ (0, runner_1.assertEqual)(f.kind, 'or');
67
+ (0, runner_1.assertEqual)(f.args[1].kind, 'and');
68
+ });
69
+ (0, runner_1.it)('parsea parentesis', () => {
70
+ const parser = new parser_1.Parser();
71
+ const program = parser.parse('axiom a = (P | Q) & R');
72
+ const f = program.statements[0].formula;
73
+ (0, runner_1.assertEqual)(f.kind, 'and');
74
+ (0, runner_1.assertEqual)(f.args[0].kind, 'or');
75
+ });
76
+ (0, runner_1.it)('asocia implicacion a la derecha', () => {
77
+ const parser = new parser_1.Parser();
78
+ const program = parser.parse('axiom a = P -> Q -> R');
79
+ const f = program.statements[0].formula;
80
+ (0, runner_1.assertEqual)(f.kind, 'implies');
81
+ (0, runner_1.assertEqual)(f.args[1].kind, 'implies');
82
+ });
83
+ });
84
+ (0, runner_1.describe)('Parser — commands', () => {
85
+ (0, runner_1.it)('parsea derive', () => {
86
+ const parser = new parser_1.Parser();
87
+ const program = parser.parse('derive Q from {a1, a2}');
88
+ (0, runner_1.assertEqual)(program.statements.length, 1);
89
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'derive_cmd');
90
+ (0, runner_1.assertEqual)(program.statements[0].premises.length, 2);
91
+ });
92
+ (0, runner_1.it)('parsea check valid', () => {
93
+ const parser = new parser_1.Parser();
94
+ const program = parser.parse('check valid (P -> Q)');
95
+ (0, runner_1.assertEqual)(program.statements.length, 1);
96
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'check_valid_cmd');
97
+ });
98
+ (0, runner_1.it)('parsea check satisfiable', () => {
99
+ const parser = new parser_1.Parser();
100
+ const program = parser.parse('check satisfiable (P & Q)');
101
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'check_satisfiable_cmd');
102
+ });
103
+ (0, runner_1.it)('parsea countermodel', () => {
104
+ const parser = new parser_1.Parser();
105
+ const program = parser.parse('countermodel (P -> Q)');
106
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'countermodel_cmd');
107
+ });
108
+ (0, runner_1.it)('parsea truth_table', () => {
109
+ const parser = new parser_1.Parser();
110
+ const program = parser.parse('truth_table (P & Q)');
111
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'truth_table_cmd');
112
+ });
113
+ (0, runner_1.it)('parsea prove', () => {
114
+ const parser = new parser_1.Parser();
115
+ const program = parser.parse('prove Q from {a1, a2}');
116
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'prove_cmd');
117
+ });
118
+ });
119
+ (0, runner_1.describe)('Parser — text layer', () => {
120
+ (0, runner_1.it)('parsea let passage', () => {
121
+ const parser = new parser_1.Parser();
122
+ const program = parser.parse('let p = passage([[clase-logica.md#b8]])');
123
+ (0, runner_1.assertEqual)(program.statements.length, 1);
124
+ const stmt = program.statements[0];
125
+ (0, runner_1.assertEqual)(stmt.kind, 'let_decl');
126
+ (0, runner_1.assertEqual)(stmt.letType, 'passage');
127
+ (0, runner_1.assertIncludes)(stmt.anchorPath, 'clase-logica');
128
+ });
129
+ (0, runner_1.it)('parsea let formalize', () => {
130
+ const parser = new parser_1.Parser();
131
+ const program = parser.parse('let phi = formalize p as (P -> Q)');
132
+ const stmt = program.statements[0];
133
+ (0, runner_1.assertEqual)(stmt.kind, 'let_decl');
134
+ (0, runner_1.assertEqual)(stmt.letType, 'formalize');
135
+ (0, runner_1.assertEqual)(stmt.passageName, 'p');
136
+ });
137
+ (0, runner_1.it)('parsea support', () => {
138
+ const parser = new parser_1.Parser();
139
+ const program = parser.parse('support c1 <- p');
140
+ (0, runner_1.assertEqual)(program.statements[0].kind, 'support_decl');
141
+ });
142
+ (0, runner_1.it)('parsea confidence', () => {
143
+ const parser = new parser_1.Parser();
144
+ const program = parser.parse('confidence c1 = 0.84');
145
+ const stmt = program.statements[0];
146
+ (0, runner_1.assertEqual)(stmt.kind, 'confidence_decl');
147
+ (0, runner_1.assertEqual)(stmt.value, 0.84);
148
+ });
149
+ (0, runner_1.it)('parsea context', () => {
150
+ const parser = new parser_1.Parser();
151
+ const program = parser.parse('context c1 = "contexto de ejemplo"');
152
+ const stmt = program.statements[0];
153
+ (0, runner_1.assertEqual)(stmt.kind, 'context_decl');
154
+ (0, runner_1.assertEqual)(stmt.text, 'contexto de ejemplo');
155
+ });
156
+ });
157
+ (0, runner_1.describe)('Parser — programa completo', () => {
158
+ (0, runner_1.it)('parsea script multi-linea', () => {
159
+ const source = `
160
+ logic classical.propositional
161
+
162
+ axiom a1 = P -> Q
163
+ axiom a2 = P
164
+
165
+ derive Q from {a1, a2}
166
+ check valid ((P -> Q) -> (!Q -> !P))
167
+ `;
168
+ const parser = new parser_1.Parser();
169
+ const program = parser.parse(source);
170
+ (0, runner_1.assertEqual)(parser.diagnostics.filter(d => d.severity === 'error').length, 0);
171
+ (0, runner_1.assert)(program.statements.length >= 4, `Esperaba >= 4 statements, got ${program.statements.length}`);
172
+ });
173
+ (0, runner_1.it)('reporta errores de sintaxis', () => {
174
+ const parser = new parser_1.Parser();
175
+ parser.parse('axiom = invalid syntax 123 @@');
176
+ (0, runner_1.assert)(parser.diagnostics.some(d => d.severity === 'error'), 'Deberia reportar errores');
177
+ });
178
+ });
179
+ }
180
+ //# sourceMappingURL=parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../src/tests/parser.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function describe(name: string, fn: () => void): void;
2
+ export declare function it(name: string, fn: () => void): void;
3
+ export declare function assert(condition: boolean, message?: string): void;
4
+ export declare function assertEqual<T>(actual: T, expected: T, message?: string): void;
5
+ export declare function assertIncludes(str: string, substring: string, message?: string): void;
6
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/tests/runner.ts"],"names":[],"mappings":"AAiBA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAI3D;AAED,wBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAUrD;AAED,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,GAAE,MAA2B,GAAG,IAAI,CAErF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAI7E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAIrF"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Tests — Runner simple sin dependencias
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.describe = describe;
7
+ exports.it = it;
8
+ exports.assert = assert;
9
+ exports.assertEqual = assertEqual;
10
+ exports.assertIncludes = assertIncludes;
11
+ const core_test_1 = require("./core.test");
12
+ const parser_test_1 = require("./parser.test");
13
+ const cli_test_1 = require("./cli.test");
14
+ let results = [];
15
+ let currentSuite = '';
16
+ function describe(name, fn) {
17
+ currentSuite = name;
18
+ console.log(`\n ${name}`);
19
+ fn();
20
+ }
21
+ function it(name, fn) {
22
+ try {
23
+ fn();
24
+ results.push({ name: `${currentSuite} > ${name}`, passed: true });
25
+ console.log(` ✓ ${name}`);
26
+ }
27
+ catch (e) {
28
+ results.push({ name: `${currentSuite} > ${name}`, passed: false, error: e.message });
29
+ console.log(` ✗ ${name}`);
30
+ console.log(` ${e.message}`);
31
+ }
32
+ }
33
+ function assert(condition, message = 'Assertion failed') {
34
+ if (!condition)
35
+ throw new Error(message);
36
+ }
37
+ function assertEqual(actual, expected, message) {
38
+ if (actual !== expected) {
39
+ throw new Error(message || `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
40
+ }
41
+ }
42
+ function assertIncludes(str, substring, message) {
43
+ if (!str.includes(substring)) {
44
+ throw new Error(message || `Expected string to include "${substring}", got: "${str.slice(0, 200)}"`);
45
+ }
46
+ }
47
+ // Main
48
+ console.log('ST Tests');
49
+ console.log('========\n');
50
+ (0, core_test_1.runCoreTests)();
51
+ (0, parser_test_1.runParserTests)();
52
+ (0, cli_test_1.runCLITests)();
53
+ const passed = results.filter(r => r.passed).length;
54
+ const failed = results.filter(r => !r.passed).length;
55
+ const total = results.length;
56
+ console.log(`\n========`);
57
+ console.log(`Total: ${total} | Passed: ${passed} | Failed: ${failed}`);
58
+ if (failed > 0) {
59
+ console.log('\nFailed tests:');
60
+ for (const r of results.filter(r => !r.passed)) {
61
+ console.log(` ✗ ${r.name}: ${r.error}`);
62
+ }
63
+ process.exit(1);
64
+ }
65
+ else {
66
+ console.log('\n✓ Todos los tests pasaron');
67
+ process.exit(0);
68
+ }
69
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/tests/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Anchor, Passage, Formalization, Claim, Support, Confidence, Context, Formula, Theory, Diagnostic } from '../types';
2
+ export interface TextLayerState {
3
+ passages: Map<string, Passage>;
4
+ formalizations: Map<string, Formalization>;
5
+ claims: Map<string, Claim>;
6
+ supports: Support[];
7
+ confidences: Confidence[];
8
+ contexts: Context[];
9
+ }
10
+ export declare function createTextLayerState(): TextLayerState;
11
+ export declare function parseAnchorPath(raw: string): Anchor;
12
+ export declare function registerPassage(state: TextLayerState, name: string, anchorPath: string): Diagnostic[];
13
+ export declare function registerFormalization(state: TextLayerState, name: string, passageName: string, formula: Formula): Diagnostic[];
14
+ export declare function registerClaim(state: TextLayerState, name: string, formula?: Formula, formalizationRef?: string): Diagnostic[];
15
+ export declare function registerSupport(state: TextLayerState, claimName: string, sourceName: string): Diagnostic[];
16
+ export declare function registerConfidence(state: TextLayerState, claimName: string, value: number): Diagnostic[];
17
+ export declare function registerContext(state: TextLayerState, claimName: string, text: string): Diagnostic[];
18
+ export declare function compileClaimsToTheory(state: TextLayerState, theory: Theory): Diagnostic[];
19
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/text-layer/compiler.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAC5E,MAAM,EAAE,UAAU,EACnB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CASrD;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcnD;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,UAAU,EAAE,CAId;AAGD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,UAAU,EAAE,CAYd;AAGD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,UAAU,EAAE,CAYd;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,UAAU,EAAE,CAmBd;AAGD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,UAAU,EAAE,CAyBd;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,UAAU,EAAE,CAkBd;AAGD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,GACb,UAAU,EAAE,CAqBd"}