@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.
- package/dist/logic/profiles/dl-hybrid/tableau.d.ts +4 -1
- package/dist/logic/profiles/dl-hybrid/tableau.d.ts.map +1 -1
- package/dist/logic/profiles/dl-hybrid/tableau.js +95 -20
- package/dist/logic/profiles/dl-hybrid/tableau.js.map +1 -1
- package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts +7 -4
- package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts.map +1 -1
- package/dist/logic/profiles/intuitionistic-nj/kripke.js +68 -7
- package/dist/logic/profiles/intuitionistic-nj/kripke.js.map +1 -1
- package/dist/logic/profiles/modal-frame-axioms/tableau.d.ts.map +1 -1
- package/dist/logic/profiles/modal-frame-axioms/tableau.js +89 -16
- package/dist/logic/profiles/modal-frame-axioms/tableau.js.map +1 -1
- package/dist/solver/cdcl-v2-incremental/solver.d.ts +14 -4
- package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -1
- package/dist/solver/cdcl-v2-incremental/solver.js +47 -8
- package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -1
- package/dist/tests/logic/intuitionistic-nj/nj.test.js +14 -1
- package/dist/tests/logic/intuitionistic-nj/nj.test.js.map +1 -1
- package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.js +23 -0
- package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.js.map +1 -1
- package/dist/tests/properties/intuit-nj.property.test.js +17 -0
- package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
- package/dist/tests/solver/sat-v2-incremental/basic.test.js +19 -0
- package/dist/tests/solver/sat-v2-incremental/basic.test.js.map +1 -1
- 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;
|
|
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
|
-
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
case '
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
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;
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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;;
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
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(
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
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)) {
|