@stevenvo780/st-lang 2.7.0 → 2.8.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 (80) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +11 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lexer/lexer.d.ts +2 -1
  6. package/dist/lexer/lexer.d.ts.map +1 -1
  7. package/dist/lexer/lexer.js +4 -2
  8. package/dist/lexer/lexer.js.map +1 -1
  9. package/dist/lexer/tokens.d.ts +17 -0
  10. package/dist/lexer/tokens.d.ts.map +1 -1
  11. package/dist/lexer/tokens.js +58 -21
  12. package/dist/lexer/tokens.js.map +1 -1
  13. package/dist/parser/parser.d.ts +2 -1
  14. package/dist/parser/parser.d.ts.map +1 -1
  15. package/dist/parser/parser.js +4 -2
  16. package/dist/parser/parser.js.map +1 -1
  17. package/dist/profiles/classical/cdcl.d.ts +34 -0
  18. package/dist/profiles/classical/cdcl.d.ts.map +1 -0
  19. package/dist/profiles/classical/cdcl.js +843 -0
  20. package/dist/profiles/classical/cdcl.js.map +1 -0
  21. package/dist/profiles/classical/dpll.d.ts +20 -0
  22. package/dist/profiles/classical/dpll.d.ts.map +1 -0
  23. package/dist/profiles/classical/dpll.js +483 -0
  24. package/dist/profiles/classical/dpll.js.map +1 -0
  25. package/dist/profiles/classical/first-order.d.ts.map +1 -1
  26. package/dist/profiles/classical/first-order.js +20 -10
  27. package/dist/profiles/classical/first-order.js.map +1 -1
  28. package/dist/profiles/classical/parallel-sat.d.ts +62 -0
  29. package/dist/profiles/classical/parallel-sat.d.ts.map +1 -0
  30. package/dist/profiles/classical/parallel-sat.js +630 -0
  31. package/dist/profiles/classical/parallel-sat.js.map +1 -0
  32. package/dist/profiles/classical/propositional.d.ts.map +1 -1
  33. package/dist/profiles/classical/propositional.js +135 -22
  34. package/dist/profiles/classical/propositional.js.map +1 -1
  35. package/dist/profiles/classical/sat-preprocess.d.ts +17 -0
  36. package/dist/profiles/classical/sat-preprocess.d.ts.map +1 -0
  37. package/dist/profiles/classical/sat-preprocess.js +372 -0
  38. package/dist/profiles/classical/sat-preprocess.js.map +1 -0
  39. package/dist/profiles/classical/undecidability-detector.d.ts +13 -0
  40. package/dist/profiles/classical/undecidability-detector.d.ts.map +1 -0
  41. package/dist/profiles/classical/undecidability-detector.js +277 -0
  42. package/dist/profiles/classical/undecidability-detector.js.map +1 -0
  43. package/dist/profiles/paraconsistent/belnap.d.ts.map +1 -1
  44. package/dist/profiles/paraconsistent/belnap.js +4 -2
  45. package/dist/profiles/paraconsistent/belnap.js.map +1 -1
  46. package/dist/profiles/shared/tableau-engine.d.ts.map +1 -1
  47. package/dist/profiles/shared/tableau-engine.js +3 -1
  48. package/dist/profiles/shared/tableau-engine.js.map +1 -1
  49. package/dist/runtime/educational-notes.d.ts +27 -0
  50. package/dist/runtime/educational-notes.d.ts.map +1 -0
  51. package/dist/runtime/educational-notes.js +100 -0
  52. package/dist/runtime/educational-notes.js.map +1 -0
  53. package/dist/runtime/formula-factory.d.ts.map +1 -1
  54. package/dist/runtime/formula-factory.js +3 -2
  55. package/dist/runtime/formula-factory.js.map +1 -1
  56. package/dist/runtime/interpreter.d.ts +9 -0
  57. package/dist/runtime/interpreter.d.ts.map +1 -1
  58. package/dist/runtime/interpreter.js +126 -6
  59. package/dist/runtime/interpreter.js.map +1 -1
  60. package/dist/tests/benchmark-cdcl.test.d.ts +2 -0
  61. package/dist/tests/benchmark-cdcl.test.d.ts.map +1 -0
  62. package/dist/tests/benchmark-cdcl.test.js +172 -0
  63. package/dist/tests/benchmark-cdcl.test.js.map +1 -0
  64. package/dist/tests/limits.test.js +15 -7
  65. package/dist/tests/limits.test.js.map +1 -1
  66. package/dist/tests/parallel-sat.test.d.ts +2 -0
  67. package/dist/tests/parallel-sat.test.d.ts.map +1 -0
  68. package/dist/tests/parallel-sat.test.js +351 -0
  69. package/dist/tests/parallel-sat.test.js.map +1 -0
  70. package/dist/tests/stress-cdcl.test.d.ts +2 -0
  71. package/dist/tests/stress-cdcl.test.d.ts.map +1 -0
  72. package/dist/tests/stress-cdcl.test.js +792 -0
  73. package/dist/tests/stress-cdcl.test.js.map +1 -0
  74. package/dist/tests/stress-extreme.test.d.ts +2 -0
  75. package/dist/tests/stress-extreme.test.d.ts.map +1 -0
  76. package/dist/tests/stress-extreme.test.js +1005 -0
  77. package/dist/tests/stress-extreme.test.js.map +1 -0
  78. package/dist/tests/stress-hardware.test.js +161 -4
  79. package/dist/tests/stress-hardware.test.js.map +1 -1
  80. package/package.json +1 -1
@@ -29,7 +29,7 @@ function run(source) {
29
29
  (0, vitest_1.expect)(out.exitCode).toBe(0);
30
30
  (0, vitest_1.expect)(out.stdout).toContain('SATISFACIBLE');
31
31
  });
32
- (0, vitest_1.it)('reaches the 26 atoms bitset limit and falls back to truth table error', () => {
32
+ (0, vitest_1.it)('handles 27 atoms via DPLL solver (beyond bitset limit)', () => {
33
33
  const atoms = Array.from({ length: 27 }, (_, i) => i < 26 ? String.fromCharCode(65 + i) : 'AA').join(' & ');
34
34
  const source = `
35
35
  logic classical.propositional
@@ -37,8 +37,9 @@ function run(source) {
37
37
  check satisfiable f
38
38
  `;
39
39
  const out = run(source);
40
- // >26 atoms exceeds bitset path, falls back to truth table which rejects >20
41
- (0, vitest_1.expect)(out.diagnostics.some((d) => d.message.includes('Demasiadas variables'))).toBe(true);
40
+ // >26 atoms now handled by DPLL solver instead of failing
41
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
42
+ (0, vitest_1.expect)(out.stdout).toContain('SATISFACIBLE');
42
43
  });
43
44
  (0, vitest_1.it)('handles deep nesting (500 levels of NOT)', () => {
44
45
  let nesting = 'P';
@@ -200,10 +201,17 @@ ${setLines}
200
201
  print r
201
202
  `;
202
203
  const out = run(source);
203
- // Should catch the recursion limit error gracefully
204
- (0, vitest_1.expect)(out.diagnostics.some((d) => d.message.includes('recursión') ||
205
- d.message.includes('recursion') ||
206
- d.message.includes('Límite'))).toBe(true);
204
+ // With TCO and increased limits, well-managed tail recursion succeeds
205
+ // countdown is tail-recursive and terminates, so it should work
206
+ if (out.exitCode === 0) {
207
+ (0, vitest_1.expect)(out.stdout).toContain('0');
208
+ }
209
+ else {
210
+ // If it does hit a limit, the error should be graceful
211
+ (0, vitest_1.expect)(out.diagnostics.some((d) => d.message.includes('recursión') ||
212
+ d.message.includes('recursion') ||
213
+ d.message.includes('Límite'))).toBe(true);
214
+ }
207
215
  });
208
216
  });
209
217
  });
@@ -1 +1 @@
1
- {"version":3,"file":"limits.test.js","sourceRoot":"","sources":["../../src/tests/limits.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"limits.test.js","sourceRoot":"","sources":["../../src/tests/limits.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parallel-sat.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-sat.test.d.ts","sourceRoot":"","sources":["../../src/tests/parallel-sat.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * ST Parallel SAT Solver — Tests
5
+ * ================================
6
+ * Valida:
7
+ * - packClauses / unpackClauses (serialización round-trip)
8
+ * - workersAvailable() (detección de entorno)
9
+ * - cdclAsync / dpllAsync (resultados correctos vs secuencial)
10
+ * - tryParallelSolve fallback (fórmulas pequeñas → null)
11
+ * - Portfolio racing con SAT / UNSAT conocidos
12
+ * - Consistencia paralelo vs secuencial
13
+ */
14
+ const vitest_1 = require("vitest");
15
+ const formula_factory_1 = require("../runtime/formula-factory");
16
+ const cdcl_1 = require("../profiles/classical/cdcl");
17
+ const dpll_1 = require("../profiles/classical/dpll");
18
+ const parallel_sat_1 = require("../profiles/classical/parallel-sat");
19
+ (0, vitest_1.afterEach)(() => {
20
+ formula_factory_1.FormulaFactory.clear();
21
+ });
22
+ // ============================================================
23
+ // 1. SERIALIZATION: packClauses / unpackClauses
24
+ // ============================================================
25
+ (0, vitest_1.describe)('Parallel SAT: Serialization', () => {
26
+ (0, vitest_1.it)('pack/unpack round-trip — empty clauses', () => {
27
+ const clauses = [];
28
+ const packed = (0, parallel_sat_1.packClauses)(clauses);
29
+ const unpacked = (0, parallel_sat_1.unpackClauses)(packed);
30
+ (0, vitest_1.expect)(unpacked).toEqual([]);
31
+ });
32
+ (0, vitest_1.it)('pack/unpack round-trip — single unit clause', () => {
33
+ const clauses = [new Int32Array([3])];
34
+ const packed = (0, parallel_sat_1.packClauses)(clauses);
35
+ const unpacked = (0, parallel_sat_1.unpackClauses)(packed);
36
+ (0, vitest_1.expect)(unpacked.length).toBe(1);
37
+ (0, vitest_1.expect)(Array.from(unpacked[0])).toEqual([3]);
38
+ });
39
+ (0, vitest_1.it)('pack/unpack round-trip — multiple clauses', () => {
40
+ const clauses = [new Int32Array([1, -2, 3]), new Int32Array([-4, 5]), new Int32Array([6])];
41
+ const packed = (0, parallel_sat_1.packClauses)(clauses);
42
+ const unpacked = (0, parallel_sat_1.unpackClauses)(packed);
43
+ (0, vitest_1.expect)(unpacked.length).toBe(3);
44
+ (0, vitest_1.expect)(Array.from(unpacked[0])).toEqual([1, -2, 3]);
45
+ (0, vitest_1.expect)(Array.from(unpacked[1])).toEqual([-4, 5]);
46
+ (0, vitest_1.expect)(Array.from(unpacked[2])).toEqual([6]);
47
+ });
48
+ (0, vitest_1.it)('pack/unpack round-trip — large random clauses', () => {
49
+ const clauses = [];
50
+ for (let i = 0; i < 200; i++) {
51
+ const len = 1 + Math.floor(Math.random() * 10);
52
+ const lits = [];
53
+ for (let j = 0; j < len; j++) {
54
+ const v = 1 + Math.floor(Math.random() * 100);
55
+ lits.push(Math.random() < 0.5 ? v : -v);
56
+ }
57
+ clauses.push(new Int32Array(lits));
58
+ }
59
+ const packed = (0, parallel_sat_1.packClauses)(clauses);
60
+ const unpacked = (0, parallel_sat_1.unpackClauses)(packed);
61
+ (0, vitest_1.expect)(unpacked.length).toBe(clauses.length);
62
+ for (let i = 0; i < clauses.length; i++) {
63
+ (0, vitest_1.expect)(Array.from(unpacked[i])).toEqual(Array.from(clauses[i]));
64
+ }
65
+ });
66
+ (0, vitest_1.it)('pack/unpack with negative literals', () => {
67
+ const clauses = [new Int32Array([-1, -2, -3])];
68
+ const packed = (0, parallel_sat_1.packClauses)(clauses);
69
+ const unpacked = (0, parallel_sat_1.unpackClauses)(packed);
70
+ (0, vitest_1.expect)(Array.from(unpacked[0])).toEqual([-1, -2, -3]);
71
+ });
72
+ });
73
+ // ============================================================
74
+ // 2. ENVIRONMENT DETECTION
75
+ // ============================================================
76
+ (0, vitest_1.describe)('Parallel SAT: Environment Detection', () => {
77
+ (0, vitest_1.it)('workersAvailable() returns boolean', () => {
78
+ const result = (0, parallel_sat_1.workersAvailable)();
79
+ (0, vitest_1.expect)(typeof result).toBe('boolean');
80
+ });
81
+ (0, vitest_1.it)('workersAvailable() is true in Node.js (worker_threads available)', () => {
82
+ // En Node.js con vitest, worker_threads debería estar disponible
83
+ (0, vitest_1.expect)((0, parallel_sat_1.workersAvailable)()).toBe(true);
84
+ });
85
+ (0, vitest_1.it)('PARALLEL_THRESHOLD is a reasonable number', () => {
86
+ (0, vitest_1.expect)(parallel_sat_1.PARALLEL_THRESHOLD).toBeGreaterThanOrEqual(20);
87
+ (0, vitest_1.expect)(parallel_sat_1.PARALLEL_THRESHOLD).toBeLessThanOrEqual(500);
88
+ });
89
+ });
90
+ // ============================================================
91
+ // 3. tryParallelSolve — THRESHOLD GUARD
92
+ // ============================================================
93
+ (0, vitest_1.describe)('Parallel SAT: Threshold Guard', () => {
94
+ (0, vitest_1.it)('returns null for small formulas (below threshold)', () => {
95
+ const smallClauses = [new Int32Array([1, 2]), new Int32Array([-1, 3])];
96
+ const result = (0, parallel_sat_1.tryParallelSolve)(smallClauses, 3, ['a', 'b', 'c'], 5000);
97
+ (0, vitest_1.expect)(result).toBeNull();
98
+ });
99
+ (0, vitest_1.it)('returns non-null for formulas at/above threshold when workers available', () => {
100
+ // Crear fórmulas con suficientes variables
101
+ const clauses = [];
102
+ const numVars = parallel_sat_1.PARALLEL_THRESHOLD + 10;
103
+ const names = [];
104
+ for (let i = 0; i < numVars; i++)
105
+ names.push(`x${i}`);
106
+ // Random 3-SAT
107
+ for (let i = 0; i < numVars * 4; i++) {
108
+ const lits = [];
109
+ for (let j = 0; j < 3; j++) {
110
+ const v = 1 + Math.floor(Math.random() * numVars);
111
+ lits.push(Math.random() < 0.5 ? v : -v);
112
+ }
113
+ clauses.push(new Int32Array(lits));
114
+ }
115
+ if ((0, parallel_sat_1.workersAvailable)()) {
116
+ const result = (0, parallel_sat_1.tryParallelSolve)(clauses, numVars, names, 5000);
117
+ (0, vitest_1.expect)(result).not.toBeNull();
118
+ (0, vitest_1.expect)(result).toBeInstanceOf(Promise);
119
+ }
120
+ });
121
+ });
122
+ // ============================================================
123
+ // 4. cdclAsync — CORRECTNESS
124
+ // ============================================================
125
+ (0, vitest_1.describe)('Parallel SAT: cdclAsync correctness', () => {
126
+ // Helper: construir fórmula desde string de átomos con operadores
127
+ function makeAnd(atoms) {
128
+ if (atoms.length === 1)
129
+ return { kind: 'atom', name: atoms[0] };
130
+ return {
131
+ kind: 'and',
132
+ args: [{ kind: 'atom', name: atoms[0] }, makeAnd(atoms.slice(1))],
133
+ };
134
+ }
135
+ function makeOr(atoms) {
136
+ if (atoms.length === 1)
137
+ return { kind: 'atom', name: atoms[0] };
138
+ return {
139
+ kind: 'or',
140
+ args: [{ kind: 'atom', name: atoms[0] }, makeOr(atoms.slice(1))],
141
+ };
142
+ }
143
+ (0, vitest_1.it)('trivially SAT (conjunction of atoms)', async () => {
144
+ const atoms = Array.from({ length: 10 }, (_, i) => `p${i}`);
145
+ const formula = makeAnd(atoms);
146
+ const syncResult = (0, cdcl_1.cdcl)(formula);
147
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula);
148
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(true);
149
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(syncResult.satisfiable);
150
+ });
151
+ (0, vitest_1.it)('trivially UNSAT (p & ¬p)', async () => {
152
+ const formula = {
153
+ kind: 'and',
154
+ args: [
155
+ { kind: 'atom', name: 'p' },
156
+ { kind: 'not', args: [{ kind: 'atom', name: 'p' }] },
157
+ ],
158
+ };
159
+ const syncResult = (0, cdcl_1.cdcl)(formula);
160
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula);
161
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(false);
162
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(syncResult.satisfiable);
163
+ });
164
+ (0, vitest_1.it)('medium formula — sync vs async agree', async () => {
165
+ // Chain implication: p0 → p1 → ... → pN & p0 & ¬pN
166
+ const N = 30;
167
+ const atoms = [];
168
+ for (let i = 0; i <= N; i++)
169
+ atoms.push(`q${i}`);
170
+ // Build: (q0 → q1) & (q1 → q2) & ... & q0 & ¬qN
171
+ let formula = { kind: 'atom', name: 'q0' };
172
+ for (let i = 0; i < N; i++) {
173
+ const impl = {
174
+ kind: 'or',
175
+ args: [
176
+ { kind: 'not', args: [{ kind: 'atom', name: `q${i}` }] },
177
+ { kind: 'atom', name: `q${i + 1}` },
178
+ ],
179
+ };
180
+ formula = { kind: 'and', args: [formula, impl] };
181
+ }
182
+ // Assert q0 = true and qN = false → UNSAT
183
+ formula = {
184
+ kind: 'and',
185
+ args: [formula, { kind: 'not', args: [{ kind: 'atom', name: `q${N}` }] }],
186
+ };
187
+ const syncResult = (0, cdcl_1.cdcl)(formula, 10000);
188
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula, 10000);
189
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(false);
190
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(syncResult.satisfiable);
191
+ });
192
+ (0, vitest_1.it)('disjunction of many atoms — SAT', async () => {
193
+ const atoms = Array.from({ length: 50 }, (_, i) => `d${i}`);
194
+ const formula = makeOr(atoms);
195
+ const syncResult = (0, cdcl_1.cdcl)(formula);
196
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula);
197
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(true);
198
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(syncResult.satisfiable);
199
+ });
200
+ });
201
+ // ============================================================
202
+ // 5. dpllAsync — CORRECTNESS
203
+ // ============================================================
204
+ (0, vitest_1.describe)('Parallel SAT: dpllAsync correctness', () => {
205
+ (0, vitest_1.it)('simple SAT — dpllAsync matches dpll', async () => {
206
+ const formula = {
207
+ kind: 'or',
208
+ args: [
209
+ { kind: 'atom', name: 'a' },
210
+ { kind: 'atom', name: 'b' },
211
+ ],
212
+ };
213
+ const syncResult = (0, dpll_1.dpll)(formula);
214
+ const asyncResult = await (0, dpll_1.dpllAsync)(formula);
215
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(true);
216
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(syncResult.satisfiable);
217
+ });
218
+ (0, vitest_1.it)('UNSAT — dpllAsync matches dpll', async () => {
219
+ const formula = {
220
+ kind: 'and',
221
+ args: [
222
+ { kind: 'atom', name: 'x' },
223
+ { kind: 'not', args: [{ kind: 'atom', name: 'x' }] },
224
+ ],
225
+ };
226
+ const syncResult = (0, dpll_1.dpll)(formula);
227
+ const asyncResult = await (0, dpll_1.dpllAsync)(formula);
228
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(false);
229
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(syncResult.satisfiable);
230
+ });
231
+ });
232
+ // ============================================================
233
+ // 6. PARALLEL PORTFOLIO — LARGE FORMULA (cuando workers disponibles)
234
+ // ============================================================
235
+ (0, vitest_1.describe)('Parallel SAT: Portfolio Racing (large formulas)', () => {
236
+ (0, vitest_1.it)('random 3-SAT with 100 vars — parallel returns correct result', async () => {
237
+ // Generar fórmula SAT satisfacible: asignar todo true, generar cláusulas que lo satisfagan
238
+ const numVars = 100;
239
+ const atoms = [];
240
+ for (let i = 0; i < numVars; i++)
241
+ atoms.push(`v${i}`);
242
+ // Crear fórmula con bajo ratio → debería ser SAT
243
+ // Ratio ~2.0 (well below phase transition 4.27) → almost certainly SAT
244
+ const numClauses = numVars * 2;
245
+ let formula = null;
246
+ for (let c = 0; c < numClauses; c++) {
247
+ const litFormulas = [];
248
+ for (let j = 0; j < 3; j++) {
249
+ const v = Math.floor(Math.random() * numVars);
250
+ const positive = Math.random() < 0.5;
251
+ const atom = { kind: 'atom', name: atoms[v] };
252
+ litFormulas.push(positive ? atom : { kind: 'not', args: [atom] });
253
+ }
254
+ const clause = {
255
+ kind: 'or',
256
+ args: [litFormulas[0], { kind: 'or', args: [litFormulas[1], litFormulas[2]] }],
257
+ };
258
+ formula = formula ? { kind: 'and', args: [formula, clause] } : clause;
259
+ }
260
+ if (!formula)
261
+ return;
262
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula, 15000);
263
+ // Con ratio 2.0 debería ser SAT (probabilidad ~99.9%)
264
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(true);
265
+ (0, vitest_1.expect)(asyncResult.model).toBeDefined();
266
+ }, 20000);
267
+ (0, vitest_1.it)('pigeonhole n=5 (6 pigeons, 5 holes) — UNSAT via parallel', async () => {
268
+ // PHP(6,5): 6 pigeons into 5 holes → UNSAT
269
+ // Variables: p_{i,j} = pigeon i in hole j (i: 0..5, j: 0..4) → 30 vars
270
+ const n = 5;
271
+ const pigeons = n + 1;
272
+ const holes = n;
273
+ function varName(pigeon, hole) {
274
+ return `ph_${pigeon}_${hole}`;
275
+ }
276
+ // Each pigeon must be in at least one hole
277
+ let formula = null;
278
+ for (let i = 0; i < pigeons; i++) {
279
+ const holeAtoms = [];
280
+ for (let j = 0; j < holes; j++) {
281
+ holeAtoms.push({ kind: 'atom', name: varName(i, j) });
282
+ }
283
+ let clause = holeAtoms[0];
284
+ for (let j = 1; j < holeAtoms.length; j++) {
285
+ clause = { kind: 'or', args: [clause, holeAtoms[j]] };
286
+ }
287
+ formula = formula ? { kind: 'and', args: [formula, clause] } : clause;
288
+ }
289
+ // No two pigeons in same hole
290
+ for (let j = 0; j < holes; j++) {
291
+ for (let i1 = 0; i1 < pigeons; i1++) {
292
+ for (let i2 = i1 + 1; i2 < pigeons; i2++) {
293
+ const clash = {
294
+ kind: 'or',
295
+ args: [
296
+ { kind: 'not', args: [{ kind: 'atom', name: varName(i1, j) }] },
297
+ { kind: 'not', args: [{ kind: 'atom', name: varName(i2, j) }] },
298
+ ],
299
+ };
300
+ formula = { kind: 'and', args: [formula, clash] };
301
+ }
302
+ }
303
+ }
304
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula, 15000);
305
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(false);
306
+ }, 20000);
307
+ (0, vitest_1.it)('known satisfiable — model validates clauses', async () => {
308
+ // Simple but larger formula: (a0 | a1 | a2) & (a3 | a4 | a5) & ...
309
+ const numVars = 90;
310
+ const atoms = [];
311
+ for (let i = 0; i < numVars; i++)
312
+ atoms.push(`m${i}`);
313
+ // Pure positive 3-clauses → trivially SAT (any all-true assignment works)
314
+ let formula = null;
315
+ for (let c = 0; c < numVars; c++) {
316
+ const i0 = c % numVars;
317
+ const i1 = (c + 1) % numVars;
318
+ const i2 = (c + 2) % numVars;
319
+ const clause = {
320
+ kind: 'or',
321
+ args: [
322
+ { kind: 'atom', name: atoms[i0] },
323
+ {
324
+ kind: 'or',
325
+ args: [
326
+ { kind: 'atom', name: atoms[i1] },
327
+ { kind: 'atom', name: atoms[i2] },
328
+ ],
329
+ },
330
+ ],
331
+ };
332
+ formula = formula ? { kind: 'and', args: [formula, clause] } : clause;
333
+ }
334
+ const asyncResult = await (0, cdcl_1.cdclAsync)(formula, 10000);
335
+ (0, vitest_1.expect)(asyncResult.satisfiable).toBe(true);
336
+ (0, vitest_1.expect)(asyncResult.model).toBeDefined();
337
+ // Verify: at least one atom in each clause should be true
338
+ if (asyncResult.model) {
339
+ for (let c = 0; c < numVars; c++) {
340
+ const i0 = c % numVars;
341
+ const i1 = (c + 1) % numVars;
342
+ const i2 = (c + 2) % numVars;
343
+ const clauseSat = asyncResult.model[atoms[i0]] ||
344
+ asyncResult.model[atoms[i1]] ||
345
+ asyncResult.model[atoms[i2]];
346
+ (0, vitest_1.expect)(clauseSat).toBe(true);
347
+ }
348
+ }
349
+ }, 15000);
350
+ });
351
+ //# sourceMappingURL=parallel-sat.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-sat.test.js","sourceRoot":"","sources":["../../src/tests/parallel-sat.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stress-cdcl.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stress-cdcl.test.d.ts","sourceRoot":"","sources":["../../src/tests/stress-cdcl.test.ts"],"names":[],"mappings":""}