@stevenvo780/st-lang 4.3.0 → 4.4.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/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/lambda-calc/church.d.ts.map +1 -1
- package/dist/lambda-calc/church.js.map +1 -1
- package/dist/lambda-calc/combinators.d.ts.map +1 -1
- package/dist/lambda-calc/combinators.js.map +1 -1
- package/dist/lambda-calc/index.d.ts +1 -1
- package/dist/lambda-calc/index.d.ts.map +1 -1
- package/dist/lambda-calc/index.js.map +1 -1
- package/dist/mltt/equality.d.ts +9 -0
- package/dist/mltt/equality.d.ts.map +1 -0
- package/dist/mltt/equality.js +79 -0
- package/dist/mltt/equality.js.map +1 -0
- package/dist/mltt/index.d.ts +8 -0
- package/dist/mltt/index.d.ts.map +1 -0
- package/dist/mltt/index.js +49 -0
- package/dist/mltt/index.js.map +1 -0
- package/dist/mltt/infer.d.ts +17 -0
- package/dist/mltt/infer.d.ts.map +1 -0
- package/dist/mltt/infer.js +269 -0
- package/dist/mltt/infer.js.map +1 -0
- package/dist/mltt/normalize.d.ts +7 -0
- package/dist/mltt/normalize.d.ts.map +1 -0
- package/dist/mltt/normalize.js +131 -0
- package/dist/mltt/normalize.js.map +1 -0
- package/dist/mltt/substitute.d.ts +4 -0
- package/dist/mltt/substitute.d.ts.map +1 -0
- package/dist/mltt/substitute.js +94 -0
- package/dist/mltt/substitute.js.map +1 -0
- package/dist/mltt/types.d.ts +72 -0
- package/dist/mltt/types.d.ts.map +1 -0
- package/dist/mltt/types.js +211 -0
- package/dist/mltt/types.js.map +1 -0
- package/dist/profiles/many-valued/index.d.ts.map +1 -1
- package/dist/profiles/many-valued/index.js.map +1 -1
- package/dist/profiles/mu-calculus/check.d.ts +15 -0
- package/dist/profiles/mu-calculus/check.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/check.js +172 -0
- package/dist/profiles/mu-calculus/check.js.map +1 -0
- package/dist/profiles/mu-calculus/ctl-translate.d.ts +61 -0
- package/dist/profiles/mu-calculus/ctl-translate.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/ctl-translate.js +181 -0
- package/dist/profiles/mu-calculus/ctl-translate.js.map +1 -0
- package/dist/profiles/mu-calculus/index.d.ts +7 -0
- package/dist/profiles/mu-calculus/index.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/index.js +33 -0
- package/dist/profiles/mu-calculus/index.js.map +1 -0
- package/dist/profiles/mu-calculus/types.d.ts +51 -0
- package/dist/profiles/mu-calculus/types.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/types.js +42 -0
- package/dist/profiles/mu-calculus/types.js.map +1 -0
- package/dist/profiles/mu-calculus/wellformed.d.ts +40 -0
- package/dist/profiles/mu-calculus/wellformed.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/wellformed.js +160 -0
- package/dist/profiles/mu-calculus/wellformed.js.map +1 -0
- package/dist/profiles/sequent-lk/cut-elimination.d.ts +11 -0
- package/dist/profiles/sequent-lk/cut-elimination.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/cut-elimination.js +216 -0
- package/dist/profiles/sequent-lk/cut-elimination.js.map +1 -0
- package/dist/profiles/sequent-lk/index.d.ts +5 -0
- package/dist/profiles/sequent-lk/index.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/index.js +24 -0
- package/dist/profiles/sequent-lk/index.js.map +1 -0
- package/dist/profiles/sequent-lk/prover.d.ts +25 -0
- package/dist/profiles/sequent-lk/prover.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/prover.js +532 -0
- package/dist/profiles/sequent-lk/prover.js.map +1 -0
- package/dist/profiles/sequent-lk/types.d.ts +55 -0
- package/dist/profiles/sequent-lk/types.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/types.js +18 -0
- package/dist/profiles/sequent-lk/types.js.map +1 -0
- package/dist/profiles/sequent-lk/util.d.ts +18 -0
- package/dist/profiles/sequent-lk/util.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/util.js +71 -0
- package/dist/profiles/sequent-lk/util.js.map +1 -0
- package/dist/refinement-types/checker.d.ts +19 -0
- package/dist/refinement-types/checker.d.ts.map +1 -0
- package/dist/refinement-types/checker.js +248 -0
- package/dist/refinement-types/checker.js.map +1 -0
- package/dist/refinement-types/index.d.ts +11 -0
- package/dist/refinement-types/index.d.ts.map +1 -0
- package/dist/refinement-types/index.js +51 -0
- package/dist/refinement-types/index.js.map +1 -0
- package/dist/refinement-types/predicate.d.ts +31 -0
- package/dist/refinement-types/predicate.d.ts.map +1 -0
- package/dist/refinement-types/predicate.js +369 -0
- package/dist/refinement-types/predicate.js.map +1 -0
- package/dist/refinement-types/solver.d.ts +24 -0
- package/dist/refinement-types/solver.d.ts.map +1 -0
- package/dist/refinement-types/solver.js +207 -0
- package/dist/refinement-types/solver.js.map +1 -0
- package/dist/refinement-types/subtype.d.ts +14 -0
- package/dist/refinement-types/subtype.d.ts.map +1 -0
- package/dist/refinement-types/subtype.js +39 -0
- package/dist/refinement-types/subtype.js.map +1 -0
- package/dist/refinement-types/types.d.ts +64 -0
- package/dist/refinement-types/types.d.ts.map +1 -0
- package/dist/refinement-types/types.js +130 -0
- package/dist/refinement-types/types.js.map +1 -0
- package/dist/runtime/anti-unification/anti-unify.d.ts +22 -0
- package/dist/runtime/anti-unification/anti-unify.d.ts.map +1 -0
- package/dist/runtime/anti-unification/anti-unify.js +154 -0
- package/dist/runtime/anti-unification/anti-unify.js.map +1 -0
- package/dist/runtime/anti-unification/index.d.ts +6 -0
- package/dist/runtime/anti-unification/index.d.ts.map +1 -0
- package/dist/runtime/anti-unification/index.js +23 -0
- package/dist/runtime/anti-unification/index.js.map +1 -0
- package/dist/runtime/anti-unification/many.d.ts +49 -0
- package/dist/runtime/anti-unification/many.d.ts.map +1 -0
- package/dist/runtime/anti-unification/many.js +185 -0
- package/dist/runtime/anti-unification/many.js.map +1 -0
- package/dist/runtime/anti-unification/term-utils.d.ts +40 -0
- package/dist/runtime/anti-unification/term-utils.d.ts.map +1 -0
- package/dist/runtime/anti-unification/term-utils.js +173 -0
- package/dist/runtime/anti-unification/term-utils.js.map +1 -0
- package/dist/runtime/anti-unification/types.d.ts +41 -0
- package/dist/runtime/anti-unification/types.d.ts.map +1 -0
- package/dist/runtime/anti-unification/types.js +26 -0
- package/dist/runtime/anti-unification/types.js.map +1 -0
- package/dist/runtime/csp/ac3.d.ts +20 -0
- package/dist/runtime/csp/ac3.d.ts.map +1 -0
- package/dist/runtime/csp/ac3.js +165 -0
- package/dist/runtime/csp/ac3.js.map +1 -0
- package/dist/runtime/csp/backtrack.d.ts +15 -0
- package/dist/runtime/csp/backtrack.d.ts.map +1 -0
- package/dist/runtime/csp/backtrack.js +233 -0
- package/dist/runtime/csp/backtrack.js.map +1 -0
- package/dist/runtime/csp/builtins.d.ts +27 -0
- package/dist/runtime/csp/builtins.d.ts.map +1 -0
- package/dist/runtime/csp/builtins.js +109 -0
- package/dist/runtime/csp/builtins.js.map +1 -0
- package/dist/runtime/csp/index.d.ts +5 -0
- package/dist/runtime/csp/index.d.ts.map +1 -0
- package/dist/runtime/csp/index.js +23 -0
- package/dist/runtime/csp/index.js.map +1 -0
- package/dist/runtime/csp/types.d.ts +54 -0
- package/dist/runtime/csp/types.d.ts.map +1 -0
- package/dist/runtime/csp/types.js +14 -0
- package/dist/runtime/csp/types.js.map +1 -0
- package/dist/runtime/markov-logic/grounding.d.ts +19 -0
- package/dist/runtime/markov-logic/grounding.d.ts.map +1 -0
- package/dist/runtime/markov-logic/grounding.js +252 -0
- package/dist/runtime/markov-logic/grounding.js.map +1 -0
- package/dist/runtime/markov-logic/index.d.ts +6 -0
- package/dist/runtime/markov-logic/index.d.ts.map +1 -0
- package/dist/runtime/markov-logic/index.js +47 -0
- package/dist/runtime/markov-logic/index.js.map +1 -0
- package/dist/runtime/markov-logic/inference.d.ts +77 -0
- package/dist/runtime/markov-logic/inference.d.ts.map +1 -0
- package/dist/runtime/markov-logic/inference.js +382 -0
- package/dist/runtime/markov-logic/inference.js.map +1 -0
- package/dist/runtime/markov-logic/parser.d.ts +25 -0
- package/dist/runtime/markov-logic/parser.d.ts.map +1 -0
- package/dist/runtime/markov-logic/parser.js +264 -0
- package/dist/runtime/markov-logic/parser.js.map +1 -0
- package/dist/runtime/markov-logic/types.d.ts +64 -0
- package/dist/runtime/markov-logic/types.d.ts.map +1 -0
- package/dist/runtime/markov-logic/types.js +17 -0
- package/dist/runtime/markov-logic/types.js.map +1 -0
- package/dist/runtime/pi-calculus/congruence.d.ts +15 -0
- package/dist/runtime/pi-calculus/congruence.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/congruence.js +271 -0
- package/dist/runtime/pi-calculus/congruence.js.map +1 -0
- package/dist/runtime/pi-calculus/index.d.ts +6 -0
- package/dist/runtime/pi-calculus/index.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/index.js +30 -0
- package/dist/runtime/pi-calculus/index.js.map +1 -0
- package/dist/runtime/pi-calculus/names.d.ts +28 -0
- package/dist/runtime/pi-calculus/names.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/names.js +182 -0
- package/dist/runtime/pi-calculus/names.js.map +1 -0
- package/dist/runtime/pi-calculus/reduction.d.ts +25 -0
- package/dist/runtime/pi-calculus/reduction.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/reduction.js +338 -0
- package/dist/runtime/pi-calculus/reduction.js.map +1 -0
- package/dist/runtime/pi-calculus/substitution.d.ts +11 -0
- package/dist/runtime/pi-calculus/substitution.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/substitution.js +109 -0
- package/dist/runtime/pi-calculus/substitution.js.map +1 -0
- package/dist/runtime/pi-calculus/types.d.ts +38 -0
- package/dist/runtime/pi-calculus/types.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/types.js +22 -0
- package/dist/runtime/pi-calculus/types.js.map +1 -0
- package/dist/runtime/planning/astar.d.ts +10 -0
- package/dist/runtime/planning/astar.d.ts.map +1 -0
- package/dist/runtime/planning/astar.js +155 -0
- package/dist/runtime/planning/astar.js.map +1 -0
- package/dist/runtime/planning/bfs.d.ts +17 -0
- package/dist/runtime/planning/bfs.d.ts.map +1 -0
- package/dist/runtime/planning/bfs.js +87 -0
- package/dist/runtime/planning/bfs.js.map +1 -0
- package/dist/runtime/planning/ground.d.ts +55 -0
- package/dist/runtime/planning/ground.d.ts.map +1 -0
- package/dist/runtime/planning/ground.js +154 -0
- package/dist/runtime/planning/ground.js.map +1 -0
- package/dist/runtime/planning/heuristic.d.ts +29 -0
- package/dist/runtime/planning/heuristic.d.ts.map +1 -0
- package/dist/runtime/planning/heuristic.js +172 -0
- package/dist/runtime/planning/heuristic.js.map +1 -0
- package/dist/runtime/planning/index.d.ts +6 -0
- package/dist/runtime/planning/index.d.ts.map +1 -0
- package/dist/runtime/planning/index.js +38 -0
- package/dist/runtime/planning/index.js.map +1 -0
- package/dist/runtime/planning/types.d.ts +100 -0
- package/dist/runtime/planning/types.d.ts.map +1 -0
- package/dist/runtime/planning/types.js +22 -0
- package/dist/runtime/planning/types.js.map +1 -0
- package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/differentiate.js.map +1 -1
- package/dist/runtime/symbolic-diff/index.d.ts +1 -1
- package/dist/runtime/symbolic-diff/index.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/index.js.map +1 -1
- package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/parse.js +7 -1
- package/dist/runtime/symbolic-diff/parse.js.map +1 -1
- package/dist/runtime/theorem-cache/cache.d.ts +100 -0
- package/dist/runtime/theorem-cache/cache.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/cache.js +213 -0
- package/dist/runtime/theorem-cache/cache.js.map +1 -0
- package/dist/runtime/theorem-cache/canonical.d.ts +59 -0
- package/dist/runtime/theorem-cache/canonical.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/canonical.js +105 -0
- package/dist/runtime/theorem-cache/canonical.js.map +1 -0
- package/dist/runtime/theorem-cache/index.d.ts +6 -0
- package/dist/runtime/theorem-cache/index.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/index.js +16 -0
- package/dist/runtime/theorem-cache/index.js.map +1 -0
- package/dist/runtime/theorem-cache/pattern.d.ts +24 -0
- package/dist/runtime/theorem-cache/pattern.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/pattern.js +80 -0
- package/dist/runtime/theorem-cache/pattern.js.map +1 -0
- package/dist/system-f/index.d.ts +7 -0
- package/dist/system-f/index.d.ts.map +1 -0
- package/dist/system-f/index.js +48 -0
- package/dist/system-f/index.js.map +1 -0
- package/dist/system-f/infer.d.ts +9 -0
- package/dist/system-f/infer.d.ts.map +1 -0
- package/dist/system-f/infer.js +94 -0
- package/dist/system-f/infer.js.map +1 -0
- package/dist/system-f/reduce.d.ts +15 -0
- package/dist/system-f/reduce.d.ts.map +1 -0
- package/dist/system-f/reduce.js +259 -0
- package/dist/system-f/reduce.js.map +1 -0
- package/dist/system-f/types.d.ts +53 -0
- package/dist/system-f/types.d.ts.map +1 -0
- package/dist/system-f/types.js +157 -0
- package/dist/system-f/types.js.map +1 -0
- package/dist/tests/anti-unification/anti-unify.test.d.ts +2 -0
- package/dist/tests/anti-unification/anti-unify.test.d.ts.map +1 -0
- package/dist/tests/anti-unification/anti-unify.test.js +219 -0
- package/dist/tests/anti-unification/anti-unify.test.js.map +1 -0
- package/dist/tests/coverage-fill-aristotelian.test.js +1 -1
- package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -1
- package/dist/tests/coverage-fill-fallacies.test.js +1 -1
- package/dist/tests/coverage-fill-fallacies.test.js.map +1 -1
- package/dist/tests/coverage-fill-format.test.js +1 -1
- package/dist/tests/coverage-fill-format.test.js.map +1 -1
- package/dist/tests/coverage-fill-intuitionistic.test.js +1 -1
- package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -1
- package/dist/tests/coverage-fill-probabilistic.test.js +1 -1
- package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -1
- package/dist/tests/csp/csp.test.d.ts +2 -0
- package/dist/tests/csp/csp.test.d.ts.map +1 -0
- package/dist/tests/csp/csp.test.js +292 -0
- package/dist/tests/csp/csp.test.js.map +1 -0
- package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -1
- package/dist/tests/many-valued/many-valued.test.js.map +1 -1
- package/dist/tests/markov-logic/markov-logic.test.d.ts +2 -0
- package/dist/tests/markov-logic/markov-logic.test.d.ts.map +1 -0
- package/dist/tests/markov-logic/markov-logic.test.js +349 -0
- package/dist/tests/markov-logic/markov-logic.test.js.map +1 -0
- package/dist/tests/mltt/mltt.test.d.ts +2 -0
- package/dist/tests/mltt/mltt.test.d.ts.map +1 -0
- package/dist/tests/mltt/mltt.test.js +181 -0
- package/dist/tests/mltt/mltt.test.js.map +1 -0
- package/dist/tests/mu-calculus/check.test.d.ts +2 -0
- package/dist/tests/mu-calculus/check.test.d.ts.map +1 -0
- package/dist/tests/mu-calculus/check.test.js +234 -0
- package/dist/tests/mu-calculus/check.test.js.map +1 -0
- package/dist/tests/pi-calculus/pi-calculus.test.d.ts +2 -0
- package/dist/tests/pi-calculus/pi-calculus.test.d.ts.map +1 -0
- package/dist/tests/pi-calculus/pi-calculus.test.js +273 -0
- package/dist/tests/pi-calculus/pi-calculus.test.js.map +1 -0
- package/dist/tests/planning/planning.test.d.ts +2 -0
- package/dist/tests/planning/planning.test.d.ts.map +1 -0
- package/dist/tests/planning/planning.test.js +397 -0
- package/dist/tests/planning/planning.test.js.map +1 -0
- package/dist/tests/refinement-types/refinement-types.test.d.ts +2 -0
- package/dist/tests/refinement-types/refinement-types.test.d.ts.map +1 -0
- package/dist/tests/refinement-types/refinement-types.test.js +174 -0
- package/dist/tests/refinement-types/refinement-types.test.js.map +1 -0
- package/dist/tests/sequent-lk/prover.test.d.ts +2 -0
- package/dist/tests/sequent-lk/prover.test.d.ts.map +1 -0
- package/dist/tests/sequent-lk/prover.test.js +317 -0
- package/dist/tests/sequent-lk/prover.test.js.map +1 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -1
- package/dist/tests/system-f/system-f.test.d.ts +2 -0
- package/dist/tests/system-f/system-f.test.d.ts.map +1 -0
- package/dist/tests/system-f/system-f.test.js +217 -0
- package/dist/tests/system-f/system-f.test.js.map +1 -0
- package/dist/tests/theorem-cache/cache.test.d.ts +2 -0
- package/dist/tests/theorem-cache/cache.test.d.ts.map +1 -0
- package/dist/tests/theorem-cache/cache.test.js +510 -0
- package/dist/tests/theorem-cache/cache.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/runtime/symbolic-diff/parse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/runtime/symbolic-diff/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export interface CachedTheorem {
|
|
2
|
+
/** Hash determinista derivado de (normalizedFormula, profile). */
|
|
3
|
+
id: string;
|
|
4
|
+
formula: string;
|
|
5
|
+
/** Forma canónica con identificadores normalizados a `?0`, `?1`, … */
|
|
6
|
+
normalizedFormula: string;
|
|
7
|
+
profile: string;
|
|
8
|
+
/** Prueba opaca (ProofTree / NJProof / sequent / …). */
|
|
9
|
+
proof: unknown;
|
|
10
|
+
/** Nombre de la función de verificación, para re-verify. */
|
|
11
|
+
verifier?: string;
|
|
12
|
+
metadata: {
|
|
13
|
+
provedAt: string;
|
|
14
|
+
ms: number;
|
|
15
|
+
provedBy?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface CacheOptions {
|
|
19
|
+
/** Cap de entradas; LRU. Default 10000. */
|
|
20
|
+
maxEntries?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Ruta del archivo de persistencia (JSON). Default
|
|
23
|
+
* `~/.st-theorem-cache/theorems.json`.
|
|
24
|
+
*/
|
|
25
|
+
persistPath?: string;
|
|
26
|
+
/** Hash function (default sha1 hex). */
|
|
27
|
+
hashFn?: (formula: string) => string;
|
|
28
|
+
}
|
|
29
|
+
export interface CacheStats {
|
|
30
|
+
entries: number;
|
|
31
|
+
hits: number;
|
|
32
|
+
misses: number;
|
|
33
|
+
storedBytes: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ReuseResult {
|
|
36
|
+
reusable: boolean;
|
|
37
|
+
substitution?: Record<string, string>;
|
|
38
|
+
reusedProof?: unknown;
|
|
39
|
+
}
|
|
40
|
+
export declare class TheoremCache {
|
|
41
|
+
private readonly maxEntries;
|
|
42
|
+
private readonly persistPath;
|
|
43
|
+
private readonly hashFn;
|
|
44
|
+
private entries;
|
|
45
|
+
private hits;
|
|
46
|
+
private misses;
|
|
47
|
+
constructor(opts?: CacheOptions);
|
|
48
|
+
/**
|
|
49
|
+
* Canonicaliza una fórmula a forma estable (placeholders).
|
|
50
|
+
*/
|
|
51
|
+
canonicalize(formula: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Almacena un teorema; retorna el id asignado. Si ya existe una
|
|
54
|
+
* entrada con el mismo (formula canónica, profile), la reemplaza
|
|
55
|
+
* y la promueve a MRU.
|
|
56
|
+
*/
|
|
57
|
+
store(theorem: Omit<CachedTheorem, 'id'>): string;
|
|
58
|
+
/**
|
|
59
|
+
* Devuelve el teorema cacheado para una fórmula+profile dados, o
|
|
60
|
+
* `undefined` si no existe. Incrementa hits/misses.
|
|
61
|
+
*/
|
|
62
|
+
retrieve(formula: string, profile: string): CachedTheorem | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Retorna todos los teoremas que matchean el patrón dado.
|
|
65
|
+
*
|
|
66
|
+
* El patrón usa metavariables `?x`. Ej: `?x -> ?x` matchea cualquier
|
|
67
|
+
* teorema cacheado cuya fórmula sea `<id> -> <id>` (mismo lado).
|
|
68
|
+
*
|
|
69
|
+
* El matching opera sobre la fórmula original (no la canónica), de
|
|
70
|
+
* modo que el caller puede inspeccionar los nombres reales.
|
|
71
|
+
*/
|
|
72
|
+
retrieveByPattern(pattern: string): CachedTheorem[];
|
|
73
|
+
/**
|
|
74
|
+
* Comprueba si existe una entrada para (formula, profile). NO afecta
|
|
75
|
+
* los contadores hits/misses.
|
|
76
|
+
*/
|
|
77
|
+
exists(formula: string, profile: string): boolean;
|
|
78
|
+
remove(id: string): boolean;
|
|
79
|
+
clear(): void;
|
|
80
|
+
saveToDisk(): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Carga teoremas desde disco. Devuelve cuántas entradas cargó.
|
|
83
|
+
* No-op silencioso si el archivo no existe.
|
|
84
|
+
*/
|
|
85
|
+
loadFromDisk(): Promise<number>;
|
|
86
|
+
stats(): CacheStats;
|
|
87
|
+
private evictLru;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Intenta reusar la prueba de un teorema cacheado para un target
|
|
91
|
+
* dado. Si las fórmulas son canónicamente equivalentes (misma
|
|
92
|
+
* estructura, identificadores en el mismo orden), calcula la
|
|
93
|
+
* substitución y reemplaza los nombres en la prueba (cuando la
|
|
94
|
+
* prueba es un string o un objeto JSON que la admita textualmente).
|
|
95
|
+
*
|
|
96
|
+
* Para pruebas opacas no-string, devuelve la prueba original sin
|
|
97
|
+
* tocar — el caller es responsable de re-instanciar.
|
|
98
|
+
*/
|
|
99
|
+
export declare function tryReuseProof(theorem: CachedTheorem, targetFormula: string): ReuseResult;
|
|
100
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/cache.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAcD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBAEP,IAAI,CAAC,EAAE,YAAY;IAM/B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,MAAM;IAmBjD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAerE;;;;;;;;OAQG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE;IAUnD;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAMjD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B,KAAK,IAAI,IAAI;IAMP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAuCrC,KAAK,IAAI,UAAU;IAanB,OAAO,CAAC,QAAQ;CAIjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CAqBxF"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TheoremCache = void 0;
|
|
7
|
+
exports.tryReuseProof = tryReuseProof;
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const crypto_1 = require("crypto");
|
|
12
|
+
const canonical_1 = require("./canonical");
|
|
13
|
+
const pattern_1 = require("./pattern");
|
|
14
|
+
function defaultPersistPath() {
|
|
15
|
+
return path_1.default.join(os_1.default.homedir(), '.st-theorem-cache', 'theorems.json');
|
|
16
|
+
}
|
|
17
|
+
function defaultHash(input) {
|
|
18
|
+
return (0, crypto_1.createHash)('sha1').update(input).digest('hex');
|
|
19
|
+
}
|
|
20
|
+
class TheoremCache {
|
|
21
|
+
maxEntries;
|
|
22
|
+
persistPath;
|
|
23
|
+
hashFn;
|
|
24
|
+
entries = new Map();
|
|
25
|
+
hits = 0;
|
|
26
|
+
misses = 0;
|
|
27
|
+
constructor(opts) {
|
|
28
|
+
this.maxEntries = opts?.maxEntries ?? 10000;
|
|
29
|
+
this.persistPath = opts?.persistPath ?? defaultPersistPath();
|
|
30
|
+
this.hashFn = opts?.hashFn ?? defaultHash;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Canonicaliza una fórmula a forma estable (placeholders).
|
|
34
|
+
*/
|
|
35
|
+
canonicalize(formula) {
|
|
36
|
+
return (0, canonical_1.canonicalize)(formula).canonical;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Almacena un teorema; retorna el id asignado. Si ya existe una
|
|
40
|
+
* entrada con el mismo (formula canónica, profile), la reemplaza
|
|
41
|
+
* y la promueve a MRU.
|
|
42
|
+
*/
|
|
43
|
+
store(theorem) {
|
|
44
|
+
const normalized = theorem.normalizedFormula && theorem.normalizedFormula.length > 0
|
|
45
|
+
? theorem.normalizedFormula
|
|
46
|
+
: this.canonicalize(theorem.formula);
|
|
47
|
+
const id = this.hashFn(`${theorem.profile}::${normalized}`);
|
|
48
|
+
const full = { ...theorem, normalizedFormula: normalized, id };
|
|
49
|
+
if (this.entries.has(id)) {
|
|
50
|
+
this.entries.delete(id);
|
|
51
|
+
}
|
|
52
|
+
else if (this.entries.size >= this.maxEntries) {
|
|
53
|
+
this.evictLru();
|
|
54
|
+
}
|
|
55
|
+
this.entries.set(id, { theorem: full });
|
|
56
|
+
return id;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Devuelve el teorema cacheado para una fórmula+profile dados, o
|
|
60
|
+
* `undefined` si no existe. Incrementa hits/misses.
|
|
61
|
+
*/
|
|
62
|
+
retrieve(formula, profile) {
|
|
63
|
+
const normalized = this.canonicalize(formula);
|
|
64
|
+
const id = this.hashFn(`${profile}::${normalized}`);
|
|
65
|
+
const entry = this.entries.get(id);
|
|
66
|
+
if (entry === undefined) {
|
|
67
|
+
this.misses++;
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
this.hits++;
|
|
71
|
+
// LRU promote.
|
|
72
|
+
this.entries.delete(id);
|
|
73
|
+
this.entries.set(id, entry);
|
|
74
|
+
return entry.theorem;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Retorna todos los teoremas que matchean el patrón dado.
|
|
78
|
+
*
|
|
79
|
+
* El patrón usa metavariables `?x`. Ej: `?x -> ?x` matchea cualquier
|
|
80
|
+
* teorema cacheado cuya fórmula sea `<id> -> <id>` (mismo lado).
|
|
81
|
+
*
|
|
82
|
+
* El matching opera sobre la fórmula original (no la canónica), de
|
|
83
|
+
* modo que el caller puede inspeccionar los nombres reales.
|
|
84
|
+
*/
|
|
85
|
+
retrieveByPattern(pattern) {
|
|
86
|
+
const out = [];
|
|
87
|
+
for (const { theorem } of this.entries.values()) {
|
|
88
|
+
if ((0, pattern_1.matchPattern)(pattern, theorem.formula) !== undefined) {
|
|
89
|
+
out.push(theorem);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return out;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Comprueba si existe una entrada para (formula, profile). NO afecta
|
|
96
|
+
* los contadores hits/misses.
|
|
97
|
+
*/
|
|
98
|
+
exists(formula, profile) {
|
|
99
|
+
const normalized = this.canonicalize(formula);
|
|
100
|
+
const id = this.hashFn(`${profile}::${normalized}`);
|
|
101
|
+
return this.entries.has(id);
|
|
102
|
+
}
|
|
103
|
+
remove(id) {
|
|
104
|
+
return this.entries.delete(id);
|
|
105
|
+
}
|
|
106
|
+
clear() {
|
|
107
|
+
this.entries.clear();
|
|
108
|
+
this.hits = 0;
|
|
109
|
+
this.misses = 0;
|
|
110
|
+
}
|
|
111
|
+
async saveToDisk() {
|
|
112
|
+
const dir = path_1.default.dirname(this.persistPath);
|
|
113
|
+
await fs_1.promises.mkdir(dir, { recursive: true });
|
|
114
|
+
const payload = [];
|
|
115
|
+
for (const { theorem } of this.entries.values())
|
|
116
|
+
payload.push(theorem);
|
|
117
|
+
await fs_1.promises.writeFile(this.persistPath, JSON.stringify(payload), 'utf-8');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Carga teoremas desde disco. Devuelve cuántas entradas cargó.
|
|
121
|
+
* No-op silencioso si el archivo no existe.
|
|
122
|
+
*/
|
|
123
|
+
async loadFromDisk() {
|
|
124
|
+
let raw;
|
|
125
|
+
try {
|
|
126
|
+
raw = await fs_1.promises.readFile(this.persistPath, 'utf-8');
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
let parsed;
|
|
132
|
+
try {
|
|
133
|
+
parsed = JSON.parse(raw);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
if (!Array.isArray(parsed))
|
|
139
|
+
return 0;
|
|
140
|
+
let loaded = 0;
|
|
141
|
+
for (const item of parsed) {
|
|
142
|
+
if (!item || typeof item !== 'object')
|
|
143
|
+
continue;
|
|
144
|
+
const t = item;
|
|
145
|
+
if (typeof t.id !== 'string' ||
|
|
146
|
+
typeof t.formula !== 'string' ||
|
|
147
|
+
typeof t.normalizedFormula !== 'string' ||
|
|
148
|
+
typeof t.profile !== 'string' ||
|
|
149
|
+
!t.metadata ||
|
|
150
|
+
typeof t.metadata !== 'object') {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (this.entries.has(t.id))
|
|
154
|
+
continue;
|
|
155
|
+
if (this.entries.size >= this.maxEntries)
|
|
156
|
+
break;
|
|
157
|
+
this.entries.set(t.id, { theorem: t });
|
|
158
|
+
loaded++;
|
|
159
|
+
}
|
|
160
|
+
return loaded;
|
|
161
|
+
}
|
|
162
|
+
stats() {
|
|
163
|
+
let bytes = 0;
|
|
164
|
+
for (const { theorem } of this.entries.values()) {
|
|
165
|
+
bytes += JSON.stringify(theorem).length;
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
entries: this.entries.size,
|
|
169
|
+
hits: this.hits,
|
|
170
|
+
misses: this.misses,
|
|
171
|
+
storedBytes: bytes,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
evictLru() {
|
|
175
|
+
const firstKey = this.entries.keys().next().value;
|
|
176
|
+
if (firstKey !== undefined)
|
|
177
|
+
this.entries.delete(firstKey);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.TheoremCache = TheoremCache;
|
|
181
|
+
/**
|
|
182
|
+
* Intenta reusar la prueba de un teorema cacheado para un target
|
|
183
|
+
* dado. Si las fórmulas son canónicamente equivalentes (misma
|
|
184
|
+
* estructura, identificadores en el mismo orden), calcula la
|
|
185
|
+
* substitución y reemplaza los nombres en la prueba (cuando la
|
|
186
|
+
* prueba es un string o un objeto JSON que la admita textualmente).
|
|
187
|
+
*
|
|
188
|
+
* Para pruebas opacas no-string, devuelve la prueba original sin
|
|
189
|
+
* tocar — el caller es responsable de re-instanciar.
|
|
190
|
+
*/
|
|
191
|
+
function tryReuseProof(theorem, targetFormula) {
|
|
192
|
+
const substitution = (0, canonical_1.computeSubstitution)(theorem.formula, targetFormula);
|
|
193
|
+
if (substitution === undefined) {
|
|
194
|
+
return { reusable: false };
|
|
195
|
+
}
|
|
196
|
+
let reusedProof = theorem.proof;
|
|
197
|
+
if (typeof theorem.proof === 'string') {
|
|
198
|
+
reusedProof = (0, canonical_1.applySubstitution)(theorem.proof, substitution);
|
|
199
|
+
}
|
|
200
|
+
else if (theorem.proof && typeof theorem.proof === 'object') {
|
|
201
|
+
// Substitución textual sobre la serialización JSON.
|
|
202
|
+
try {
|
|
203
|
+
const serialized = JSON.stringify(theorem.proof);
|
|
204
|
+
const rewritten = (0, canonical_1.applySubstitution)(serialized, substitution);
|
|
205
|
+
reusedProof = JSON.parse(rewritten);
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
reusedProof = theorem.proof;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return { reusable: true, substitution, reusedProof };
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonicalización de fórmulas (string-based) para el theorem cache.
|
|
3
|
+
*
|
|
4
|
+
* El objetivo no es parsear lógica completa, sino normalizar:
|
|
5
|
+
* - whitespace
|
|
6
|
+
* - mapear identificadores (átomos / metavariables) a placeholders
|
|
7
|
+
* canónicos en orden de primera aparición, preservando estructura.
|
|
8
|
+
*
|
|
9
|
+
* Resultado: `P -> P` y `Q -> Q` producen la misma forma canónica
|
|
10
|
+
* (`?0 -> ?0`), mientras que `P -> Q` produce `?0 -> ?1`. Esto soporta
|
|
11
|
+
* proof reuse via substitución.
|
|
12
|
+
*
|
|
13
|
+
* Símbolos lógicos reservados (palabras clave) NO se renombran:
|
|
14
|
+
* not, and, or, implies, iff, forall, exists, true, false, ->,
|
|
15
|
+
* →, ∧, ∨, ¬, ↔, ∀, ∃, ⊤, ⊥
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Normaliza whitespace: colapsa runs de espacio/tabs/newlines a un solo
|
|
19
|
+
* espacio, y trimea. Mantiene la separación de tokens.
|
|
20
|
+
*/
|
|
21
|
+
export declare function normalizeWhitespace(formula: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Devuelve la forma canónica de una fórmula como string.
|
|
24
|
+
*
|
|
25
|
+
* Cada identificador no reservado se reemplaza por `?N` donde N es el
|
|
26
|
+
* orden de primera aparición. La estructura (operadores, paréntesis,
|
|
27
|
+
* cuantificadores) se preserva intacta tras normalizar whitespace.
|
|
28
|
+
*
|
|
29
|
+
* También devuelve el mapping inverso (canonical → original) para
|
|
30
|
+
* poder reconstruir substituciones.
|
|
31
|
+
*/
|
|
32
|
+
export interface CanonicalResult {
|
|
33
|
+
canonical: string;
|
|
34
|
+
/** Mapping de original → placeholder. Ej: `{P: "?0", Q: "?1"}` */
|
|
35
|
+
forward: Map<string, string>;
|
|
36
|
+
/** Mapping de placeholder → original. Ej: `{"?0": "P", "?1": "Q"}` */
|
|
37
|
+
reverse: Map<string, string>;
|
|
38
|
+
}
|
|
39
|
+
export declare function canonicalize(formula: string): CanonicalResult;
|
|
40
|
+
/**
|
|
41
|
+
* Versión simple que sólo devuelve el string canónico.
|
|
42
|
+
*/
|
|
43
|
+
export declare function canonicalString(formula: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Intenta encontrar una substitución que mapee la fórmula cacheada
|
|
46
|
+
* al target. Si las formas canónicas coinciden, calcula el mapping
|
|
47
|
+
* desde los identificadores originales del teorema hacia los del
|
|
48
|
+
* target.
|
|
49
|
+
*
|
|
50
|
+
* Retorna `undefined` si no son canónicamente equivalentes.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computeSubstitution(cachedFormula: string, targetFormula: string): Record<string, string> | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Aplica una substitución textual (mapping original → reemplazo) a
|
|
55
|
+
* una fórmula, respetando límites de identificador. Útil para
|
|
56
|
+
* rehidratar pruebas reutilizadas.
|
|
57
|
+
*/
|
|
58
|
+
export declare function applySubstitution(formula: string, substitution: Record<string, string>): string;
|
|
59
|
+
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoBH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,sEAAsE;IACtE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAkB7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAapC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAK/F"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Canonicalización de fórmulas (string-based) para el theorem cache.
|
|
4
|
+
*
|
|
5
|
+
* El objetivo no es parsear lógica completa, sino normalizar:
|
|
6
|
+
* - whitespace
|
|
7
|
+
* - mapear identificadores (átomos / metavariables) a placeholders
|
|
8
|
+
* canónicos en orden de primera aparición, preservando estructura.
|
|
9
|
+
*
|
|
10
|
+
* Resultado: `P -> P` y `Q -> Q` producen la misma forma canónica
|
|
11
|
+
* (`?0 -> ?0`), mientras que `P -> Q` produce `?0 -> ?1`. Esto soporta
|
|
12
|
+
* proof reuse via substitución.
|
|
13
|
+
*
|
|
14
|
+
* Símbolos lógicos reservados (palabras clave) NO se renombran:
|
|
15
|
+
* not, and, or, implies, iff, forall, exists, true, false, ->,
|
|
16
|
+
* →, ∧, ∨, ¬, ↔, ∀, ∃, ⊤, ⊥
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.normalizeWhitespace = normalizeWhitespace;
|
|
20
|
+
exports.canonicalize = canonicalize;
|
|
21
|
+
exports.canonicalString = canonicalString;
|
|
22
|
+
exports.computeSubstitution = computeSubstitution;
|
|
23
|
+
exports.applySubstitution = applySubstitution;
|
|
24
|
+
const RESERVED = new Set([
|
|
25
|
+
'not',
|
|
26
|
+
'and',
|
|
27
|
+
'or',
|
|
28
|
+
'implies',
|
|
29
|
+
'iff',
|
|
30
|
+
'forall',
|
|
31
|
+
'exists',
|
|
32
|
+
'true',
|
|
33
|
+
'false',
|
|
34
|
+
'True',
|
|
35
|
+
'False',
|
|
36
|
+
'TRUE',
|
|
37
|
+
'FALSE',
|
|
38
|
+
]);
|
|
39
|
+
const IDENT_RE = /[A-Za-z_][A-Za-z0-9_]*/g;
|
|
40
|
+
/**
|
|
41
|
+
* Normaliza whitespace: colapsa runs de espacio/tabs/newlines a un solo
|
|
42
|
+
* espacio, y trimea. Mantiene la separación de tokens.
|
|
43
|
+
*/
|
|
44
|
+
function normalizeWhitespace(formula) {
|
|
45
|
+
return formula.replace(/\s+/g, ' ').trim();
|
|
46
|
+
}
|
|
47
|
+
function canonicalize(formula) {
|
|
48
|
+
const normalized = normalizeWhitespace(formula);
|
|
49
|
+
const forward = new Map();
|
|
50
|
+
const reverse = new Map();
|
|
51
|
+
let counter = 0;
|
|
52
|
+
const canonical = normalized.replace(IDENT_RE, (match) => {
|
|
53
|
+
if (RESERVED.has(match))
|
|
54
|
+
return match;
|
|
55
|
+
let placeholder = forward.get(match);
|
|
56
|
+
if (placeholder === undefined) {
|
|
57
|
+
placeholder = `?${counter++}`;
|
|
58
|
+
forward.set(match, placeholder);
|
|
59
|
+
reverse.set(placeholder, match);
|
|
60
|
+
}
|
|
61
|
+
return placeholder;
|
|
62
|
+
});
|
|
63
|
+
return { canonical, forward, reverse };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Versión simple que sólo devuelve el string canónico.
|
|
67
|
+
*/
|
|
68
|
+
function canonicalString(formula) {
|
|
69
|
+
return canonicalize(formula).canonical;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Intenta encontrar una substitución que mapee la fórmula cacheada
|
|
73
|
+
* al target. Si las formas canónicas coinciden, calcula el mapping
|
|
74
|
+
* desde los identificadores originales del teorema hacia los del
|
|
75
|
+
* target.
|
|
76
|
+
*
|
|
77
|
+
* Retorna `undefined` si no son canónicamente equivalentes.
|
|
78
|
+
*/
|
|
79
|
+
function computeSubstitution(cachedFormula, targetFormula) {
|
|
80
|
+
const c1 = canonicalize(cachedFormula);
|
|
81
|
+
const c2 = canonicalize(targetFormula);
|
|
82
|
+
if (c1.canonical !== c2.canonical)
|
|
83
|
+
return undefined;
|
|
84
|
+
const substitution = {};
|
|
85
|
+
for (const [original, placeholder] of c1.forward) {
|
|
86
|
+
const targetOriginal = c2.reverse.get(placeholder);
|
|
87
|
+
if (targetOriginal === undefined)
|
|
88
|
+
return undefined;
|
|
89
|
+
substitution[original] = targetOriginal;
|
|
90
|
+
}
|
|
91
|
+
return substitution;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Aplica una substitución textual (mapping original → reemplazo) a
|
|
95
|
+
* una fórmula, respetando límites de identificador. Útil para
|
|
96
|
+
* rehidratar pruebas reutilizadas.
|
|
97
|
+
*/
|
|
98
|
+
function applySubstitution(formula, substitution) {
|
|
99
|
+
return formula.replace(IDENT_RE, (match) => {
|
|
100
|
+
if (RESERVED.has(match))
|
|
101
|
+
return match;
|
|
102
|
+
return substitution[match] ?? match;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=canonical.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/canonical.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAwBH,kDAEC;AAoBD,oCAkBC;AAKD,0CAEC;AAUD,kDAgBC;AAOD,8CAKC;AA3GD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS;IAC/B,KAAK;IACL,KAAK;IACL,IAAI;IACJ,SAAS;IACT,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAE3C;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAoBD,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG,IAAI,OAAO,EAAE,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,aAAqB,EACrB,aAAqB;IAErB,MAAM,EAAE,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAEvC,IAAI,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEpD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,cAAc,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACnD,YAAY,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;IAC1C,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,YAAoC;IACrF,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TheoremCache, tryReuseProof } from './cache';
|
|
2
|
+
export type { CachedTheorem, CacheOptions, CacheStats, ReuseResult } from './cache';
|
|
3
|
+
export { canonicalize, canonicalString, computeSubstitution, applySubstitution, normalizeWhitespace, } from './canonical';
|
|
4
|
+
export type { CanonicalResult } from './canonical';
|
|
5
|
+
export { matchPattern, patternMatches } from './pattern';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.patternMatches = exports.matchPattern = exports.normalizeWhitespace = exports.applySubstitution = exports.computeSubstitution = exports.canonicalString = exports.canonicalize = exports.tryReuseProof = exports.TheoremCache = void 0;
|
|
4
|
+
var cache_1 = require("./cache");
|
|
5
|
+
Object.defineProperty(exports, "TheoremCache", { enumerable: true, get: function () { return cache_1.TheoremCache; } });
|
|
6
|
+
Object.defineProperty(exports, "tryReuseProof", { enumerable: true, get: function () { return cache_1.tryReuseProof; } });
|
|
7
|
+
var canonical_1 = require("./canonical");
|
|
8
|
+
Object.defineProperty(exports, "canonicalize", { enumerable: true, get: function () { return canonical_1.canonicalize; } });
|
|
9
|
+
Object.defineProperty(exports, "canonicalString", { enumerable: true, get: function () { return canonical_1.canonicalString; } });
|
|
10
|
+
Object.defineProperty(exports, "computeSubstitution", { enumerable: true, get: function () { return canonical_1.computeSubstitution; } });
|
|
11
|
+
Object.defineProperty(exports, "applySubstitution", { enumerable: true, get: function () { return canonical_1.applySubstitution; } });
|
|
12
|
+
Object.defineProperty(exports, "normalizeWhitespace", { enumerable: true, get: function () { return canonical_1.normalizeWhitespace; } });
|
|
13
|
+
var pattern_1 = require("./pattern");
|
|
14
|
+
Object.defineProperty(exports, "matchPattern", { enumerable: true, get: function () { return pattern_1.matchPattern; } });
|
|
15
|
+
Object.defineProperty(exports, "patternMatches", { enumerable: true, get: function () { return pattern_1.patternMatches; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/index.ts"],"names":[],"mappings":";;;AAAA,iCAAsD;AAA7C,qGAAA,YAAY,OAAA;AAAE,sGAAA,aAAa,OAAA;AAEpC,yCAMqB;AALnB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AAGrB,qCAAyD;AAAhD,uGAAA,YAAY,OAAA;AAAE,yGAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matching de patrones contra fórmulas cacheadas.
|
|
3
|
+
*
|
|
4
|
+
* Un patrón usa `?x`, `?y`, … como metavariables. Para que un patrón
|
|
5
|
+
* matchee una fórmula, debe existir una asignación consistente
|
|
6
|
+
* (cada metavariable mapea a un único identificador en la fórmula).
|
|
7
|
+
*
|
|
8
|
+
* Ejemplos:
|
|
9
|
+
* patrón `?x -> ?x` matchea `P -> P` (con x=P)
|
|
10
|
+
* patrón `?x -> ?x` NO matchea `P -> Q`
|
|
11
|
+
* patrón `?x -> ?y` matchea `P -> Q` (con x=P, y=Q)
|
|
12
|
+
* patrón `?x -> ?y` matchea `P -> P` (con x=P, y=P)
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Intenta matchear un patrón contra una fórmula. Retorna la
|
|
16
|
+
* asignación de metavariables si matchea, o `undefined` si no.
|
|
17
|
+
*/
|
|
18
|
+
export declare function matchPattern(pattern: string, formula: string): Record<string, string> | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Comprueba si un patrón matchea (al menos una vez) sobre la fórmula
|
|
21
|
+
* completa, sin extraer las bindings.
|
|
22
|
+
*/
|
|
23
|
+
export declare function patternMatches(pattern: string, formula: string): boolean;
|
|
24
|
+
//# sourceMappingURL=pattern.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../../src/runtime/theorem-cache/pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4BH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CA8BjG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAExE"}
|