@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.
- package/LICENSE +21 -0
- package/bin/st +3 -0
- package/dist/api.d.ts +157 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +232 -0
- package/dist/api.js.map +1 -0
- package/dist/ast/nodes.d.ts +97 -0
- package/dist/ast/nodes.d.ts.map +1 -0
- package/dist/ast/nodes.js +6 -0
- package/dist/ast/nodes.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +278 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer/lexer.d.ts +25 -0
- package/dist/lexer/lexer.d.ts.map +1 -0
- package/dist/lexer/lexer.js +358 -0
- package/dist/lexer/lexer.js.map +1 -0
- package/dist/lexer/tokens.d.ts +56 -0
- package/dist/lexer/tokens.d.ts.map +1 -0
- package/dist/lexer/tokens.js +85 -0
- package/dist/lexer/tokens.js.map +1 -0
- package/dist/parser/parser.d.ts +46 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +415 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/profiles/classical/first-order.d.ts +13 -0
- package/dist/profiles/classical/first-order.d.ts.map +1 -0
- package/dist/profiles/classical/first-order.js +67 -0
- package/dist/profiles/classical/first-order.js.map +1 -0
- package/dist/profiles/classical/propositional.d.ts +16 -0
- package/dist/profiles/classical/propositional.d.ts.map +1 -0
- package/dist/profiles/classical/propositional.js +597 -0
- package/dist/profiles/classical/propositional.js.map +1 -0
- package/dist/profiles/interface.d.ts +11 -0
- package/dist/profiles/interface.d.ts.map +1 -0
- package/dist/profiles/interface.js +26 -0
- package/dist/profiles/interface.js.map +1 -0
- package/dist/profiles/modal/k.d.ts +13 -0
- package/dist/profiles/modal/k.d.ts.map +1 -0
- package/dist/profiles/modal/k.js +39 -0
- package/dist/profiles/modal/k.js.map +1 -0
- package/dist/profiles/paraconsistent/belnap.d.ts +13 -0
- package/dist/profiles/paraconsistent/belnap.d.ts.map +1 -0
- package/dist/profiles/paraconsistent/belnap.js +39 -0
- package/dist/profiles/paraconsistent/belnap.js.map +1 -0
- package/dist/protocol/handler.d.ts +17 -0
- package/dist/protocol/handler.d.ts.map +1 -0
- package/dist/protocol/handler.js +219 -0
- package/dist/protocol/handler.js.map +1 -0
- package/dist/repl/repl.d.ts +12 -0
- package/dist/repl/repl.d.ts.map +1 -0
- package/dist/repl/repl.js +237 -0
- package/dist/repl/repl.js.map +1 -0
- package/dist/runtime/interpreter.d.ts +41 -0
- package/dist/runtime/interpreter.d.ts.map +1 -0
- package/dist/runtime/interpreter.js +355 -0
- package/dist/runtime/interpreter.js.map +1 -0
- package/dist/tests/cli.test.d.ts +2 -0
- package/dist/tests/cli.test.d.ts.map +1 -0
- package/dist/tests/cli.test.js +184 -0
- package/dist/tests/cli.test.js.map +1 -0
- package/dist/tests/core.test.d.ts +2 -0
- package/dist/tests/core.test.d.ts.map +1 -0
- package/dist/tests/core.test.js +220 -0
- package/dist/tests/core.test.js.map +1 -0
- package/dist/tests/parser.test.d.ts +2 -0
- package/dist/tests/parser.test.d.ts.map +1 -0
- package/dist/tests/parser.test.js +180 -0
- package/dist/tests/parser.test.js.map +1 -0
- package/dist/tests/runner.d.ts +6 -0
- package/dist/tests/runner.d.ts.map +1 -0
- package/dist/tests/runner.js +69 -0
- package/dist/tests/runner.js.map +1 -0
- package/dist/text-layer/compiler.d.ts +19 -0
- package/dist/text-layer/compiler.d.ts.map +1 -0
- package/dist/text-layer/compiler.js +151 -0
- package/dist/text-layer/compiler.js.map +1 -0
- package/dist/types/index.d.ts +178 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|