@stevenvo780/st-lang 4.15.2 → 4.15.4

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 (24) hide show
  1. package/dist/logic/profiles/dl-hybrid/tableau.d.ts +4 -1
  2. package/dist/logic/profiles/dl-hybrid/tableau.d.ts.map +1 -1
  3. package/dist/logic/profiles/dl-hybrid/tableau.js +95 -20
  4. package/dist/logic/profiles/dl-hybrid/tableau.js.map +1 -1
  5. package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts +7 -4
  6. package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts.map +1 -1
  7. package/dist/logic/profiles/intuitionistic-nj/kripke.js +68 -7
  8. package/dist/logic/profiles/intuitionistic-nj/kripke.js.map +1 -1
  9. package/dist/logic/profiles/modal-frame-axioms/tableau.d.ts.map +1 -1
  10. package/dist/logic/profiles/modal-frame-axioms/tableau.js +89 -16
  11. package/dist/logic/profiles/modal-frame-axioms/tableau.js.map +1 -1
  12. package/dist/solver/cdcl-v2-incremental/solver.d.ts +14 -4
  13. package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -1
  14. package/dist/solver/cdcl-v2-incremental/solver.js +47 -8
  15. package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -1
  16. package/dist/tests/logic/intuitionistic-nj/nj.test.js +14 -1
  17. package/dist/tests/logic/intuitionistic-nj/nj.test.js.map +1 -1
  18. package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.js +23 -0
  19. package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.js.map +1 -1
  20. package/dist/tests/properties/intuit-nj.property.test.js +17 -0
  21. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
  22. package/dist/tests/solver/sat-v2-incremental/basic.test.js +19 -0
  23. package/dist/tests/solver/sat-v2-incremental/basic.test.js.map +1 -1
  24. package/package.json +1 -1
@@ -24,6 +24,8 @@ export interface DLCheckResult {
24
24
  /**
25
25
  * Decide si `f` es válida sobre toda la malla muestreada (criterio de
26
26
  * validez universal acotada). Si encuentra contraejemplo lo retorna.
27
+ * Si algún estado resulta 'unknown' (ODE no soportada) y ninguno produce
28
+ * contraejemplo, retorna {status:'unknown'} para no afirmar validez sin respaldo.
27
29
  */
28
30
  export declare function checkValid(f: DLFormula, opts?: DLOptions): DLCheckResult;
29
31
  /** Decide si `f` es satisfacible en algún estado muestreado. */
@@ -31,8 +33,9 @@ export declare function checkSatisfiable(f: DLFormula, opts?: DLOptions): DLChec
31
33
  /**
32
34
  * Evalúa la fórmula en un estado específico — útil para casos donde el
33
35
  * usuario quiere chequear desde una pre-condición concreta.
36
+ * Retorna `'unknown'` si la evaluación topa con una ODE no soportada.
34
37
  */
35
- export declare function evalInState(f: DLFormula, s: State, opts?: DLOptions): boolean;
38
+ export declare function evalInState(f: DLFormula, s: State, opts?: DLOptions): boolean | 'unknown';
36
39
  /** Re-export utilitario: lista de variables relevantes en la fórmula. */
37
40
  export declare function relevantVariables(f: DLFormula): string[];
38
41
  //# sourceMappingURL=tableau.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/tableau.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAyB,KAAK,EAAE,MAAM,OAAO,CAAC;AAKrE,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,sGAAsG;IACtG,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IACxB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AA0MD,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC;IAC1E,wCAAwC;IACxC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,CASxE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,CAS9E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAE7E;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAgBxD"}
1
+ {"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/tableau.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAyB,KAAK,EAAE,MAAM,OAAO,CAAC;AAKrE,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,sGAAsG;IACtG,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IACxB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAoPD,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,eAAe,GAAG,SAAS,CAAC;IAC1E,wCAAwC;IACxC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,CAaxE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,CAa9E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAEzF;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAgBxD"}
@@ -76,16 +76,27 @@ function executeProgram(prog, s, opts) {
76
76
  }
77
77
  case 'seq': {
78
78
  const first = executeProgram(prog.left, s, opts);
79
+ if (first.unsupported)
80
+ return { outcomes: [], unsupported: true };
79
81
  const combined = [];
82
+ let seqUnsupported = false;
80
83
  for (const mid of first.outcomes) {
81
84
  const after = executeProgram(prog.right, mid, opts);
85
+ if (after.unsupported) {
86
+ seqUnsupported = true;
87
+ break;
88
+ }
82
89
  combined.push(...after.outcomes);
83
90
  }
91
+ if (seqUnsupported)
92
+ return { outcomes: [], unsupported: true };
84
93
  return { outcomes: combined };
85
94
  }
86
95
  case 'choice': {
87
96
  const a = executeProgram(prog.left, s, opts);
88
97
  const b = executeProgram(prog.right, s, opts);
98
+ if (a.unsupported || b.unsupported)
99
+ return { outcomes: [], unsupported: true };
89
100
  return { outcomes: [...a.outcomes, ...b.outcomes] };
90
101
  }
91
102
  case 'loop': {
@@ -96,6 +107,8 @@ function executeProgram(prog, s, opts) {
96
107
  const next = [];
97
108
  for (const st of current) {
98
109
  const step = executeProgram(prog.body, st, opts);
110
+ if (step.unsupported)
111
+ return { outcomes: [], unsupported: true };
99
112
  next.push(...step.outcomes);
100
113
  }
101
114
  if (next.length === 0)
@@ -108,9 +121,7 @@ function executeProgram(prog, s, opts) {
108
121
  case 'ode': {
109
122
  const klass = (0, differential_1.classifyOde)(prog.system);
110
123
  if (klass.kind === 'unsupported') {
111
- // No podemos evaluar — devolvemos un outcome especial: el propio
112
- // estado, marcando blocked si no hay dominio para verificar.
113
- return { outcomes: [s], blocked: false };
124
+ return { outcomes: [], unsupported: true };
114
125
  }
115
126
  const out = [];
116
127
  const dt = opts.odeHorizon / Math.max(1, opts.odeSamples - 1);
@@ -143,7 +154,8 @@ function executeProgram(prog, s, opts) {
143
154
  }
144
155
  /**
145
156
  * Evalúa una fórmula dL sobre un estado concreto. Para modalidades
146
- * recurre a `executeProgram`.
157
+ * recurre a `executeProgram`. Retorna `'unknown'` cuando la evaluación
158
+ * topa con una ODE no soportada y no puede decidirse de forma sonora.
147
159
  */
148
160
  function evalFormula(f, s, opts) {
149
161
  switch (f.kind) {
@@ -153,34 +165,82 @@ function evalFormula(f, s, opts) {
153
165
  return false;
154
166
  case 'comp':
155
167
  return (0, semantics_1.evalQuantifierFree)(f, s);
156
- case 'not':
157
- return !evalFormula(f.arg, s, opts);
158
- case 'and':
159
- return evalFormula(f.left, s, opts) && evalFormula(f.right, s, opts);
160
- case 'or':
161
- return evalFormula(f.left, s, opts) || evalFormula(f.right, s, opts);
162
- case 'implies':
163
- return !evalFormula(f.left, s, opts) || evalFormula(f.right, s, opts);
164
- case 'iff':
165
- return evalFormula(f.left, s, opts) === evalFormula(f.right, s, opts);
168
+ case 'not': {
169
+ const v = evalFormula(f.arg, s, opts);
170
+ if (v === 'unknown')
171
+ return 'unknown';
172
+ return !v;
173
+ }
174
+ case 'and': {
175
+ const l = evalFormula(f.left, s, opts);
176
+ if (l === false)
177
+ return false;
178
+ const r = evalFormula(f.right, s, opts);
179
+ if (r === false)
180
+ return false;
181
+ if (l === 'unknown' || r === 'unknown')
182
+ return 'unknown';
183
+ return true;
184
+ }
185
+ case 'or': {
186
+ const l = evalFormula(f.left, s, opts);
187
+ if (l === true)
188
+ return true;
189
+ const r = evalFormula(f.right, s, opts);
190
+ if (r === true)
191
+ return true;
192
+ if (l === 'unknown' || r === 'unknown')
193
+ return 'unknown';
194
+ return false;
195
+ }
196
+ case 'implies': {
197
+ const l = evalFormula(f.left, s, opts);
198
+ if (l === false)
199
+ return true;
200
+ const r = evalFormula(f.right, s, opts);
201
+ if (r === true)
202
+ return true;
203
+ if (l === 'unknown' || r === 'unknown')
204
+ return 'unknown';
205
+ return false;
206
+ }
207
+ case 'iff': {
208
+ const l = evalFormula(f.left, s, opts);
209
+ const r = evalFormula(f.right, s, opts);
210
+ if (l === 'unknown' || r === 'unknown')
211
+ return 'unknown';
212
+ return l === r;
213
+ }
166
214
  case 'box': {
167
215
  const step = executeProgram(f.program, s, opts);
216
+ if (step.unsupported)
217
+ return 'unknown';
168
218
  // [α]φ: en TODOS los outcomes φ debe valer.
169
219
  // Si el test bloquea (sin outcomes), [?ψ]φ es vacuously true.
220
+ let sawUnknown = false;
170
221
  for (const out of step.outcomes) {
171
- if (!evalFormula(f.post, out, opts))
222
+ const v = evalFormula(f.post, out, opts);
223
+ if (v === false)
172
224
  return false;
225
+ if (v === 'unknown')
226
+ sawUnknown = true;
173
227
  }
174
- return true;
228
+ return sawUnknown ? 'unknown' : true;
175
229
  }
176
230
  case 'diamond': {
177
231
  const step = executeProgram(f.program, s, opts);
232
+ if (step.unsupported)
233
+ return 'unknown';
178
234
  // ⟨α⟩φ: existe un outcome donde φ vale.
235
+ let sawUnknown = false;
179
236
  for (const out of step.outcomes) {
180
- if (evalFormula(f.post, out, opts))
237
+ const v = evalFormula(f.post, out, opts);
238
+ if (v === true)
181
239
  return true;
240
+ if (v === 'unknown')
241
+ sawUnknown = true;
182
242
  }
183
- return false;
243
+ return sawUnknown ? 'unknown' : false;
184
244
  }
185
245
  }
186
246
  }
@@ -237,31 +297,46 @@ function generateInitialStates(f, opts) {
237
297
  /**
238
298
  * Decide si `f` es válida sobre toda la malla muestreada (criterio de
239
299
  * validez universal acotada). Si encuentra contraejemplo lo retorna.
300
+ * Si algún estado resulta 'unknown' (ODE no soportada) y ninguno produce
301
+ * contraejemplo, retorna {status:'unknown'} para no afirmar validez sin respaldo.
240
302
  */
241
303
  function checkValid(f, opts) {
242
304
  const o = withDefaults(opts);
243
305
  const states = generateInitialStates(f, o);
306
+ let sawUnknown = false;
244
307
  for (const s of states) {
245
- if (!evalFormula(f, s, o)) {
308
+ const v = evalFormula(f, s, o);
309
+ if (v === false) {
246
310
  return { status: 'invalid', witness: s, statesChecked: states.length };
247
311
  }
312
+ if (v === 'unknown')
313
+ sawUnknown = true;
248
314
  }
315
+ if (sawUnknown)
316
+ return { status: 'unknown', statesChecked: states.length };
249
317
  return { status: 'valid', statesChecked: states.length };
250
318
  }
251
319
  /** Decide si `f` es satisfacible en algún estado muestreado. */
252
320
  function checkSatisfiable(f, opts) {
253
321
  const o = withDefaults(opts);
254
322
  const states = generateInitialStates(f, o);
323
+ let sawUnknown = false;
255
324
  for (const s of states) {
256
- if (evalFormula(f, s, o)) {
325
+ const v = evalFormula(f, s, o);
326
+ if (v === true) {
257
327
  return { status: 'satisfiable', witness: s, statesChecked: states.length };
258
328
  }
329
+ if (v === 'unknown')
330
+ sawUnknown = true;
259
331
  }
332
+ if (sawUnknown)
333
+ return { status: 'unknown', statesChecked: states.length };
260
334
  return { status: 'unsatisfiable', statesChecked: states.length };
261
335
  }
262
336
  /**
263
337
  * Evalúa la fórmula en un estado específico — útil para casos donde el
264
338
  * usuario quiere chequear desde una pre-condición concreta.
339
+ * Retorna `'unknown'` si la evaluación topa con una ODE no soportada.
265
340
  */
266
341
  function evalInState(f, s, opts) {
267
342
  return evalFormula(f, s, withDefaults(opts));
@@ -1 +1 @@
1
- {"version":3,"file":"tableau.js","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/tableau.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tableau.js","sourceRoot":"","sources":["../../../../src/logic/profiles/dl-hybrid/tableau.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,19 @@ import { IntuitFormula, KripkeIntuitModel } from './types';
2
2
  /**
3
3
  * API pública: si `formula` NO es válida intuicionistamente,
4
4
  * devuelve un modelo Kripke cuya raíz (w0) la refuta. Si es
5
- * válida, devuelve `null`.
5
+ * válida (dentro de la cota explorada), devuelve `null`.
6
6
  *
7
- * El budget máximo (mundos) se ajusta a la cantidad de átomos.
7
+ * El budget por defecto es la cota de filtración |sub(formula)|,
8
+ * recortada al techo factible según el nº de átomos.
8
9
  */
9
10
  export declare function kripkeCounterModel(formula: IntuitFormula, options?: {
10
11
  maxWorlds?: number;
11
12
  }): KripkeIntuitModel | null;
12
13
  /**
13
- * Helper: ¿la fórmula es válida intuicionistamente bajo modelos
14
- * de tamaño `maxWorlds`? Útil en tests para cruzar con el prover.
14
+ * Helper: ¿la fórmula es válida intuicionistamente bajo modelos hasta
15
+ * la cota de completitud (filtración por subfórmulas, recortada al techo
16
+ * factible)? Útil en tests para cruzar con el prover. Si se pasa
17
+ * `maxWorlds`, fija explícitamente la cota.
15
18
  */
16
19
  export declare function isIPCValid(formula: IntuitFormula, maxWorlds?: number): boolean;
17
20
  //# sourceMappingURL=kripke.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kripke.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/intuitionistic-nj/kripke.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAwK3D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,iBAAiB,GAAG,IAAI,CAS1B;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,SAAI,GAAG,OAAO,CAEzE"}
1
+ {"version":3,"file":"kripke.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/intuitionistic-nj/kripke.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAgO3D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,iBAAiB,GAAG,IAAI,CAW1B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9E"}
@@ -182,16 +182,75 @@ function toPublic(model) {
182
182
  }
183
183
  return { worlds, accessibility, forcing };
184
184
  }
185
+ /**
186
+ * Cuenta las subfórmulas distintas (módulo igualdad estructural) de `f`.
187
+ * IPC tiene la propiedad del modelo finito por filtración a través del
188
+ * conjunto de subfórmulas: si `f` no es un teorema, existe un modelo de
189
+ * Kripke (preorden finito + forcing persistente) cuya raíz la refuta y
190
+ * cuyo número de mundos está acotado por |sub(f)| (cada mundo es un
191
+ * "tipo" distinto respecto a las subfórmulas). Usamos ese conteo como
192
+ * cota de completitud para la búsqueda.
193
+ */
194
+ function countSubformulas(f) {
195
+ const seen = new Set();
196
+ const walk = (g) => {
197
+ const k = (0, formula_1.formulaKey)(g);
198
+ if (seen.has(k))
199
+ return;
200
+ seen.add(k);
201
+ switch (g.kind) {
202
+ case 'atom':
203
+ case 'bottom':
204
+ return;
205
+ case 'not':
206
+ return walk(g.arg);
207
+ case 'and':
208
+ case 'or':
209
+ case 'implies':
210
+ walk(g.left);
211
+ walk(g.right);
212
+ return;
213
+ }
214
+ };
215
+ walk(f);
216
+ return seen.size;
217
+ }
218
+ /**
219
+ * Techo de mundos factible para la enumeración exhaustiva.
220
+ *
221
+ * Encontrar un contramodelo es barato (corte temprano), pero CONFIRMAR
222
+ * validez exige agotar todo el espacio de preórdenes × valuaciones. Ese
223
+ * costo crece con el nº de mundos y, sobre todo, con el nº de átomos
224
+ * (las valuaciones son #upward-closed-sets ^ |átomos|). Mediciones:
225
+ * n=4 ⇒ ~0.4s con 4 átomos, ~5s con 5; n=5 ⇒ ~8s ya con 3 átomos.
226
+ *
227
+ * Por eso el techo decrece con la cantidad de átomos. Trade-off: para
228
+ * fórmulas cuyo menor contramodelo excede este techo, la búsqueda no
229
+ * lo hallará y `isIPCValid` podría reportar validez espuria; el oráculo
230
+ * autoritativo de validez sigue siendo el prover NJ (`proveIntuiti...`),
231
+ * que decide IPC de forma completa. Esta enumeración es para EXHIBIR
232
+ * contramodelos de los casos estándar, no para decidir validez de
233
+ * fórmulas arbitrariamente grandes.
234
+ */
235
+ function feasibleWorldCap(atomCount) {
236
+ if (atomCount <= 2)
237
+ return 5;
238
+ if (atomCount <= 4)
239
+ return 4;
240
+ return 3;
241
+ }
185
242
  /**
186
243
  * API pública: si `formula` NO es válida intuicionistamente,
187
244
  * devuelve un modelo Kripke cuya raíz (w0) la refuta. Si es
188
- * válida, devuelve `null`.
245
+ * válida (dentro de la cota explorada), devuelve `null`.
189
246
  *
190
- * El budget máximo (mundos) se ajusta a la cantidad de átomos.
247
+ * El budget por defecto es la cota de filtración |sub(formula)|,
248
+ * recortada al techo factible según el nº de átomos.
191
249
  */
192
250
  function kripkeCounterModel(formula, options = {}) {
193
251
  const atoms = [...(0, formula_1.collectAtoms)(formula)];
194
- const cap = options.maxWorlds ?? (atoms.length <= 2 ? 3 : 2);
252
+ const filtrationBound = countSubformulas(formula);
253
+ const cap = options.maxWorlds ?? Math.max(2, Math.min(filtrationBound, feasibleWorldCap(atoms.length)));
195
254
  for (const model of generateModels(atoms, cap)) {
196
255
  if (!forces(model, 0, formula)) {
197
256
  return toPublic(model);
@@ -200,10 +259,12 @@ function kripkeCounterModel(formula, options = {}) {
200
259
  return null;
201
260
  }
202
261
  /**
203
- * Helper: ¿la fórmula es válida intuicionistamente bajo modelos
204
- * de tamaño `maxWorlds`? Útil en tests para cruzar con el prover.
262
+ * Helper: ¿la fórmula es válida intuicionistamente bajo modelos hasta
263
+ * la cota de completitud (filtración por subfórmulas, recortada al techo
264
+ * factible)? Útil en tests para cruzar con el prover. Si se pasa
265
+ * `maxWorlds`, fija explícitamente la cota.
205
266
  */
206
- function isIPCValid(formula, maxWorlds = 3) {
207
- return kripkeCounterModel(formula, { maxWorlds }) === null;
267
+ function isIPCValid(formula, maxWorlds) {
268
+ return kripkeCounterModel(formula, maxWorlds === undefined ? {} : { maxWorlds }) === null;
208
269
  }
209
270
  //# sourceMappingURL=kripke.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kripke.js","sourceRoot":"","sources":["../../../../src/logic/profiles/intuitionistic-nj/kripke.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;AAC/D,EAAE;AACF,sDAAsD;AACtD,4DAA4D;AAC5D,4DAA4D;AAC5D,uCAAuC;AACvC,EAAE;AACF,sDAAsD;AACtD,wDAAwD;AACxD,+CAA+C;AAC/C,EAAE;AACF,yDAAyD;AACzD,qCAAqC;;AAiLrC,gDAYC;AAMD,gCAEC;AAlMD,uCAAyC;AAUzC;;GAEG;AACH,SAAS,MAAM,CAAC,KAAoB,EAAE,CAAS,EAAE,CAAgB;IAC/D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QAChD,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/D,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/D,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC3E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC5C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,MAAgC,EAAE,MAAgB;IACpF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YAC/C,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;wBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACX,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAgB,EAAE,MAAgC;IAC1E,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnB,MAAM,GAAG,KAAK,CAAC;oBACf,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,MAAM;QACrB,CAAC;QACD,IAAI,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,QAAQ,CAAC,CAAC,iBAAiB,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;IAChC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAChF,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,CAAC,cAAc,CAAC,KAAe,EAAE,SAAiB;IACzD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,kDAAkD;YAClD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;gBAC3C,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC9C,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;oBACpC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBAChC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAoB;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,aAAa,GAA4B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,OAAsB,EACtB,UAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAAsB,EAAE,SAAS,GAAG,CAAC;IAC9D,OAAO,kBAAkB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,IAAI,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"kripke.js","sourceRoot":"","sources":["../../../../src/logic/profiles/intuitionistic-nj/kripke.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/modal-frame-axioms/tableau.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,UAAU,EAAe,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA4R/E,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAoBf"}
1
+ {"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../../../../src/logic/profiles/modal-frame-axioms/tableau.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,UAAU,EAAe,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAqW/E,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAwBf"}
@@ -190,7 +190,15 @@ function* generateFrames(size, axioms) {
190
190
  }
191
191
  }
192
192
  const total = 1 << pairs.length;
193
- const seen = new Set();
193
+ // La deduplicación post-clausura es una optimización (evita re-evaluar
194
+ // frames sintácticamente iguales tras cerrar los axiomas). El `seen` Set
195
+ // crece hasta 2^|pairs| entradas; a partir de ~2^22 supera el tamaño
196
+ // máximo de Set de V8 y lanza RangeError. Por encima de ese umbral
197
+ // desactivamos la dedup: la corrección no depende de ella (sólo evita
198
+ // trabajo repetido), así que preferimos enumerar con duplicados antes
199
+ // que crashear.
200
+ const DEDUP_MAX = 1 << 20;
201
+ const seen = total <= DEDUP_MAX ? new Set() : null;
194
202
  for (let mask = 0; mask < total; mask++) {
195
203
  const edges = new Set();
196
204
  for (let b = 0; b < pairs.length; b++) {
@@ -205,10 +213,12 @@ function* generateFrames(size, axioms) {
205
213
  val: Array.from({ length: size }, () => new Set()),
206
214
  };
207
215
  closeFrame(model, axioms);
208
- const sig = [...model.edges].sort((a, b) => a - b).join(',');
209
- if (seen.has(sig))
210
- continue;
211
- seen.add(sig);
216
+ if (seen !== null) {
217
+ const sig = [...model.edges].sort((a, b) => a - b).join(',');
218
+ if (seen.has(sig))
219
+ continue;
220
+ seen.add(sig);
221
+ }
212
222
  yield model;
213
223
  }
214
224
  }
@@ -241,18 +251,77 @@ function* generateValuations(size, atoms) {
241
251
  // Cota de tamaño de modelo
242
252
  // ------------------------------------------------------------
243
253
  /**
244
- * Tamaño máximo de modelo a explorar. Conservador: 2^|atoms|+1
245
- * bastaría para la propiedad de filtración en muchas lógicas,
246
- * pero acotado por un máximo absoluto para evitar explosiones.
254
+ * Cuenta las "demandas existenciales de sucesor" de `f`: cada modalidad
255
+ * que, en la rama del tableau, obliga a crear un mundo testigo. Con
256
+ * polaridad (NNF implícito): un en posición positiva, o un □ bajo un
257
+ * nº impar de negaciones (≡ ◇¬), genera una demanda. □ positivo y ◇
258
+ * negativo son universales (no crean mundos nuevos por sí mismos).
259
+ *
260
+ * Es una cota superior del nº de sucesores que la raíz puede necesitar:
261
+ * en K un modelo árbol satisface `f` con a lo sumo (1 + #demandas)
262
+ * mundos en el primer nivel, y las demandas anidadas se contabilizan
263
+ * recursivamente. La usamos para dimensionar la búsqueda sin caer en la
264
+ * constante fija que provocaba BUG-T2 ni en el costo de explorar siempre
265
+ * el techo máximo.
266
+ */
267
+ function countSuccessorDemands(f) {
268
+ const walk = (g, positive) => {
269
+ switch (g.kind) {
270
+ case 'atom':
271
+ return 0;
272
+ case 'not':
273
+ return walk((0, formula_1.subUnary)(g), !positive);
274
+ case 'diamond':
275
+ return (positive ? 1 : 0) + walk((0, formula_1.subUnary)(g), positive);
276
+ case 'box':
277
+ return (positive ? 0 : 1) + walk((0, formula_1.subUnary)(g), positive);
278
+ case 'and':
279
+ case 'or':
280
+ return walk((0, formula_1.subLeft)(g), positive) + walk((0, formula_1.subRight)(g), positive);
281
+ case 'implies':
282
+ // a → b ≡ ¬a ∨ b: el antecedente invierte polaridad.
283
+ return walk((0, formula_1.subLeft)(g), !positive) + walk((0, formula_1.subRight)(g), positive);
284
+ }
285
+ };
286
+ return walk(f, true);
287
+ }
288
+ /**
289
+ * Techo de mundos absoluto factible para la enumeración exhaustiva.
290
+ *
291
+ * El cuello de botella es la enumeración de frames: hay 2^(n²) (o
292
+ * 2^(n²-n) bajo T) aristas posibles para `n` mundos. Mediciones en este
293
+ * motor: n=4 ⇒ ~0.25s; n=5 ⇒ inviable (2^25≈33M frames, además el Set de
294
+ * dedup supera el máximo de V8). Por eso el techo absoluto es 4.
295
+ *
296
+ * Trade-off (documentado): para fórmulas cuyo menor modelo satisfacible
297
+ * requiere >4 mundos, esta enumeración por fuerza bruta no lo halla y
298
+ * `isSatisfiable` puede dar un falso negativo (⇒ `isValid` un falso
299
+ * positivo). Es una limitación inherente del enfoque enumerativo, no un
300
+ * número mágico arbitrario: es el mayor `n` para el que la búsqueda
301
+ * exhaustiva termina en tiempo razonable sin agotar memoria. Para
302
+ * decisión completa de validez modal se necesitaría un tableau prefijado
303
+ * real (con bloqueo) en lugar de enumeración de frames.
304
+ */
305
+ const FEASIBLE_WORLD_CAP = 4;
306
+ /**
307
+ * Tamaño máximo de modelo a explorar para `phi`. Antes era la constante
308
+ * fija 3 (BUG-T2: declaraba insatisfacibles fórmulas K cuyo menor modelo
309
+ * tiene 4 mundos, p.ej. ◇a∧◇b∧◇c∧◇d con átomos disjuntos por □). Ahora
310
+ * se dimensiona por el nº de demandas existenciales de sucesor:
311
+ * `1 (raíz) + #demandas`, con piso 3 (preserva el comportamiento de los
312
+ * casos simples que ya cubría el 3) y recortado al techo factible.
313
+ *
314
+ * Usar las demandas (y no |sub(phi)|) mantiene barata la confirmación de
315
+ * validez de fórmulas con pocas demandas pero muchas subfórmulas (p.ej.
316
+ * el axioma K, ¬(□(p→q)→(□p→□q)) ≡ □(p→q)∧□p∧◇¬q: 1 demanda ⇒ 2 mundos,
317
+ * que se confirma UNSAT en ~1ms en vez de ~4s explorando 4 mundos).
247
318
  *
248
- * Override vía `options.maxWorlds` en la API pública.
319
+ * Override vía `options.maxWorlds` en la API pública (también recortado
320
+ * al techo factible para no crashear con valores grandes).
249
321
  */
250
- function defaultMaxWorlds(atomCount) {
251
- if (atomCount <= 1)
252
- return 3;
253
- if (atomCount <= 2)
254
- return 3;
255
- return 3;
322
+ function defaultMaxWorlds(phi) {
323
+ const demands = countSuccessorDemands(phi);
324
+ return Math.max(3, Math.min(1 + demands, FEASIBLE_WORLD_CAP));
256
325
  }
257
326
  // ------------------------------------------------------------
258
327
  // Conversión modelo interno → público
@@ -283,7 +352,11 @@ function tableauWithAxioms(phi, axioms, options = {}) {
283
352
  // Si la fórmula no menciona átomos (e.g. □⊥ con notación
284
353
  // sintética), igual hay que considerar valuaciones triviales.
285
354
  const effectiveAtoms = atoms.length === 0 ? [] : atoms;
286
- const maxWorlds = options.maxWorlds ?? defaultMaxWorlds(effectiveAtoms.length);
355
+ // Un `maxWorlds` explícito se recorta al techo factible para no agotar
356
+ // memoria (la dedup de frames se desactiva sola por encima de 2^20,
357
+ // pero la enumeración 2^(n²) seguiría siendo inviable para n grande).
358
+ const requested = options.maxWorlds ?? defaultMaxWorlds(phi);
359
+ const maxWorlds = Math.max(1, Math.min(requested, FEASIBLE_WORLD_CAP));
287
360
  for (let size = 1; size <= maxWorlds; size++) {
288
361
  for (const frame of generateFrames(size, axiomSet)) {
289
362
  for (const val of generateValuations(size, effectiveAtoms)) {