@stevenvo780/st-lang 4.14.1 → 4.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/format/stnb/__tests__/executor.test.d.ts +2 -0
  2. package/dist/format/stnb/__tests__/executor.test.d.ts.map +1 -0
  3. package/dist/format/stnb/__tests__/executor.test.js +140 -0
  4. package/dist/format/stnb/__tests__/executor.test.js.map +1 -0
  5. package/dist/format/stnb/__tests__/parser.test.d.ts +2 -0
  6. package/dist/format/stnb/__tests__/parser.test.d.ts.map +1 -0
  7. package/dist/format/stnb/__tests__/parser.test.js +119 -0
  8. package/dist/format/stnb/__tests__/parser.test.js.map +1 -0
  9. package/dist/format/stnb/__tests__/renderer.test.d.ts +2 -0
  10. package/dist/format/stnb/__tests__/renderer.test.d.ts.map +1 -0
  11. package/dist/format/stnb/__tests__/renderer.test.js +109 -0
  12. package/dist/format/stnb/__tests__/renderer.test.js.map +1 -0
  13. package/dist/format/stnb/__tests__/roundtrip.test.d.ts +2 -0
  14. package/dist/format/stnb/__tests__/roundtrip.test.d.ts.map +1 -0
  15. package/dist/format/stnb/__tests__/roundtrip.test.js +91 -0
  16. package/dist/format/stnb/__tests__/roundtrip.test.js.map +1 -0
  17. package/dist/format/stnb/__tests__/serializer.test.d.ts +2 -0
  18. package/dist/format/stnb/__tests__/serializer.test.d.ts.map +1 -0
  19. package/dist/format/stnb/__tests__/serializer.test.js +60 -0
  20. package/dist/format/stnb/__tests__/serializer.test.js.map +1 -0
  21. package/dist/format/stnb/executor.d.ts +29 -0
  22. package/dist/format/stnb/executor.d.ts.map +1 -0
  23. package/dist/format/stnb/executor.js +139 -0
  24. package/dist/format/stnb/executor.js.map +1 -0
  25. package/dist/format/stnb/index.d.ts +19 -0
  26. package/dist/format/stnb/index.d.ts.map +1 -0
  27. package/dist/format/stnb/index.js +28 -0
  28. package/dist/format/stnb/index.js.map +1 -0
  29. package/dist/format/stnb/renderer-html.d.ts +11 -0
  30. package/dist/format/stnb/renderer-html.d.ts.map +1 -0
  31. package/dist/format/stnb/renderer-html.js +180 -0
  32. package/dist/format/stnb/renderer-html.js.map +1 -0
  33. package/dist/format/stnb/renderer-markdown.d.ts +13 -0
  34. package/dist/format/stnb/renderer-markdown.d.ts.map +1 -0
  35. package/dist/format/stnb/renderer-markdown.js +92 -0
  36. package/dist/format/stnb/renderer-markdown.js.map +1 -0
  37. package/dist/format/stnb/serializer.d.ts +14 -0
  38. package/dist/format/stnb/serializer.d.ts.map +1 -0
  39. package/dist/format/stnb/serializer.js +21 -0
  40. package/dist/format/stnb/serializer.js.map +1 -0
  41. package/dist/index.d.ts +5 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +7 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.d.ts +2 -0
  46. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.d.ts.map +1 -0
  47. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.js +141 -0
  48. package/dist/logic/profiles/dl-hybrid/__tests__/differential.test.js.map +1 -0
  49. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.d.ts +2 -0
  50. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.d.ts.map +1 -0
  51. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.js +55 -0
  52. package/dist/logic/profiles/dl-hybrid/__tests__/examples.test.js.map +1 -0
  53. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.d.ts +2 -0
  54. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.d.ts.map +1 -0
  55. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.js +149 -0
  56. package/dist/logic/profiles/dl-hybrid/__tests__/parser.test.js.map +1 -0
  57. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.d.ts +2 -0
  58. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.d.ts.map +1 -0
  59. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.js +105 -0
  60. package/dist/logic/profiles/dl-hybrid/__tests__/tableau.test.js.map +1 -0
  61. package/dist/logic/profiles/dl-hybrid/ast.d.ts +160 -0
  62. package/dist/logic/profiles/dl-hybrid/ast.d.ts.map +1 -0
  63. package/dist/logic/profiles/dl-hybrid/ast.js +261 -0
  64. package/dist/logic/profiles/dl-hybrid/ast.js.map +1 -0
  65. package/dist/logic/profiles/dl-hybrid/differential.d.ts +61 -0
  66. package/dist/logic/profiles/dl-hybrid/differential.d.ts.map +1 -0
  67. package/dist/logic/profiles/dl-hybrid/differential.js +291 -0
  68. package/dist/logic/profiles/dl-hybrid/differential.js.map +1 -0
  69. package/dist/logic/profiles/dl-hybrid/index.d.ts +10 -0
  70. package/dist/logic/profiles/dl-hybrid/index.d.ts.map +1 -0
  71. package/dist/logic/profiles/dl-hybrid/index.js +90 -0
  72. package/dist/logic/profiles/dl-hybrid/index.js.map +1 -0
  73. package/dist/logic/profiles/dl-hybrid/parser.d.ts +8 -0
  74. package/dist/logic/profiles/dl-hybrid/parser.d.ts.map +1 -0
  75. package/dist/logic/profiles/dl-hybrid/parser.js +410 -0
  76. package/dist/logic/profiles/dl-hybrid/parser.js.map +1 -0
  77. package/dist/logic/profiles/dl-hybrid/profile.d.ts +23 -0
  78. package/dist/logic/profiles/dl-hybrid/profile.d.ts.map +1 -0
  79. package/dist/logic/profiles/dl-hybrid/profile.js +122 -0
  80. package/dist/logic/profiles/dl-hybrid/profile.js.map +1 -0
  81. package/dist/logic/profiles/dl-hybrid/semantics.d.ts +16 -0
  82. package/dist/logic/profiles/dl-hybrid/semantics.d.ts.map +1 -0
  83. package/dist/logic/profiles/dl-hybrid/semantics.js +181 -0
  84. package/dist/logic/profiles/dl-hybrid/semantics.js.map +1 -0
  85. package/dist/logic/profiles/dl-hybrid/tableau.d.ts +38 -0
  86. package/dist/logic/profiles/dl-hybrid/tableau.d.ts.map +1 -0
  87. package/dist/logic/profiles/dl-hybrid/tableau.js +289 -0
  88. package/dist/logic/profiles/dl-hybrid/tableau.js.map +1 -0
  89. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.d.ts +2 -0
  90. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.d.ts.map +1 -0
  91. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.js +74 -0
  92. package/dist/reasoning/dl-hybrid/__tests__/invariant.test.js.map +1 -0
  93. package/dist/reasoning/dl-hybrid/index.d.ts +3 -0
  94. package/dist/reasoning/dl-hybrid/index.d.ts.map +1 -0
  95. package/dist/reasoning/dl-hybrid/index.js +16 -0
  96. package/dist/reasoning/dl-hybrid/index.js.map +1 -0
  97. package/dist/reasoning/dl-hybrid/invariant-search.d.ts +39 -0
  98. package/dist/reasoning/dl-hybrid/invariant-search.d.ts.map +1 -0
  99. package/dist/reasoning/dl-hybrid/invariant-search.js +188 -0
  100. package/dist/reasoning/dl-hybrid/invariant-search.js.map +1 -0
  101. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.d.ts +2 -0
  102. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.d.ts.map +1 -0
  103. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.js +72 -0
  104. package/dist/reasoning/lemma-rag/__tests__/benchmarks.test.js.map +1 -0
  105. package/dist/reasoning/lemma-rag/__tests__/embedding.test.d.ts +2 -0
  106. package/dist/reasoning/lemma-rag/__tests__/embedding.test.d.ts.map +1 -0
  107. package/dist/reasoning/lemma-rag/__tests__/embedding.test.js +102 -0
  108. package/dist/reasoning/lemma-rag/__tests__/embedding.test.js.map +1 -0
  109. package/dist/reasoning/lemma-rag/__tests__/integration.test.d.ts +2 -0
  110. package/dist/reasoning/lemma-rag/__tests__/integration.test.d.ts.map +1 -0
  111. package/dist/reasoning/lemma-rag/__tests__/integration.test.js +40 -0
  112. package/dist/reasoning/lemma-rag/__tests__/integration.test.js.map +1 -0
  113. package/dist/reasoning/lemma-rag/__tests__/query.test.d.ts +2 -0
  114. package/dist/reasoning/lemma-rag/__tests__/query.test.d.ts.map +1 -0
  115. package/dist/reasoning/lemma-rag/__tests__/query.test.js +136 -0
  116. package/dist/reasoning/lemma-rag/__tests__/query.test.js.map +1 -0
  117. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.d.ts +2 -0
  118. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.d.ts.map +1 -0
  119. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.js +147 -0
  120. package/dist/reasoning/lemma-rag/__tests__/retrieval.test.js.map +1 -0
  121. package/dist/reasoning/lemma-rag/benchmarks.d.ts +30 -0
  122. package/dist/reasoning/lemma-rag/benchmarks.d.ts.map +1 -0
  123. package/dist/reasoning/lemma-rag/benchmarks.js +177 -0
  124. package/dist/reasoning/lemma-rag/benchmarks.js.map +1 -0
  125. package/dist/reasoning/lemma-rag/embedding.d.ts +26 -0
  126. package/dist/reasoning/lemma-rag/embedding.d.ts.map +1 -0
  127. package/dist/reasoning/lemma-rag/embedding.js +243 -0
  128. package/dist/reasoning/lemma-rag/embedding.js.map +1 -0
  129. package/dist/reasoning/lemma-rag/index-store.d.ts +35 -0
  130. package/dist/reasoning/lemma-rag/index-store.d.ts.map +1 -0
  131. package/dist/reasoning/lemma-rag/index-store.js +105 -0
  132. package/dist/reasoning/lemma-rag/index-store.js.map +1 -0
  133. package/dist/reasoning/lemma-rag/index.d.ts +9 -0
  134. package/dist/reasoning/lemma-rag/index.d.ts.map +1 -0
  135. package/dist/reasoning/lemma-rag/index.js +34 -0
  136. package/dist/reasoning/lemma-rag/index.js.map +1 -0
  137. package/dist/reasoning/lemma-rag/query.d.ts +48 -0
  138. package/dist/reasoning/lemma-rag/query.d.ts.map +1 -0
  139. package/dist/reasoning/lemma-rag/query.js +92 -0
  140. package/dist/reasoning/lemma-rag/query.js.map +1 -0
  141. package/dist/reasoning/lemma-rag/retrieval.d.ts +33 -0
  142. package/dist/reasoning/lemma-rag/retrieval.d.ts.map +1 -0
  143. package/dist/reasoning/lemma-rag/retrieval.js +123 -0
  144. package/dist/reasoning/lemma-rag/retrieval.js.map +1 -0
  145. package/dist/reasoning/lemma-rag/types.d.ts +52 -0
  146. package/dist/reasoning/lemma-rag/types.d.ts.map +1 -0
  147. package/dist/reasoning/lemma-rag/types.js +13 -0
  148. package/dist/reasoning/lemma-rag/types.js.map +1 -0
  149. package/dist/reasoning/proof-mining/__tests__/extractor.test.d.ts +2 -0
  150. package/dist/reasoning/proof-mining/__tests__/extractor.test.d.ts.map +1 -0
  151. package/dist/reasoning/proof-mining/__tests__/extractor.test.js +263 -0
  152. package/dist/reasoning/proof-mining/__tests__/extractor.test.js.map +1 -0
  153. package/dist/reasoning/proof-mining/__tests__/generalizer.test.d.ts +2 -0
  154. package/dist/reasoning/proof-mining/__tests__/generalizer.test.d.ts.map +1 -0
  155. package/dist/reasoning/proof-mining/__tests__/generalizer.test.js +123 -0
  156. package/dist/reasoning/proof-mining/__tests__/generalizer.test.js.map +1 -0
  157. package/dist/reasoning/proof-mining/__tests__/integration.test.d.ts +2 -0
  158. package/dist/reasoning/proof-mining/__tests__/integration.test.d.ts.map +1 -0
  159. package/dist/reasoning/proof-mining/__tests__/integration.test.js +128 -0
  160. package/dist/reasoning/proof-mining/__tests__/integration.test.js.map +1 -0
  161. package/dist/reasoning/proof-mining/__tests__/persistence.test.d.ts +2 -0
  162. package/dist/reasoning/proof-mining/__tests__/persistence.test.d.ts.map +1 -0
  163. package/dist/reasoning/proof-mining/__tests__/persistence.test.js +119 -0
  164. package/dist/reasoning/proof-mining/__tests__/persistence.test.js.map +1 -0
  165. package/dist/reasoning/proof-mining/__tests__/ranker.test.d.ts +2 -0
  166. package/dist/reasoning/proof-mining/__tests__/ranker.test.d.ts.map +1 -0
  167. package/dist/reasoning/proof-mining/__tests__/ranker.test.js +93 -0
  168. package/dist/reasoning/proof-mining/__tests__/ranker.test.js.map +1 -0
  169. package/dist/reasoning/proof-mining/extractor.d.ts +73 -0
  170. package/dist/reasoning/proof-mining/extractor.d.ts.map +1 -0
  171. package/dist/reasoning/proof-mining/extractor.js +170 -0
  172. package/dist/reasoning/proof-mining/extractor.js.map +1 -0
  173. package/dist/reasoning/proof-mining/generalizer.d.ts +46 -0
  174. package/dist/reasoning/proof-mining/generalizer.d.ts.map +1 -0
  175. package/dist/reasoning/proof-mining/generalizer.js +245 -0
  176. package/dist/reasoning/proof-mining/generalizer.js.map +1 -0
  177. package/dist/reasoning/proof-mining/index.d.ts +62 -0
  178. package/dist/reasoning/proof-mining/index.d.ts.map +1 -0
  179. package/dist/reasoning/proof-mining/index.js +235 -0
  180. package/dist/reasoning/proof-mining/index.js.map +1 -0
  181. package/dist/reasoning/proof-mining/persistence.d.ts +35 -0
  182. package/dist/reasoning/proof-mining/persistence.d.ts.map +1 -0
  183. package/dist/reasoning/proof-mining/persistence.js +126 -0
  184. package/dist/reasoning/proof-mining/persistence.js.map +1 -0
  185. package/dist/reasoning/proof-mining/ranker.d.ts +29 -0
  186. package/dist/reasoning/proof-mining/ranker.d.ts.map +1 -0
  187. package/dist/reasoning/proof-mining/ranker.js +71 -0
  188. package/dist/reasoning/proof-mining/ranker.js.map +1 -0
  189. package/dist/reasoning/proof-mining/statistics.d.ts +11 -0
  190. package/dist/reasoning/proof-mining/statistics.d.ts.map +1 -0
  191. package/dist/reasoning/proof-mining/statistics.js +44 -0
  192. package/dist/reasoning/proof-mining/statistics.js.map +1 -0
  193. package/dist/reasoning/proof-mining/types.d.ts +117 -0
  194. package/dist/reasoning/proof-mining/types.d.ts.map +1 -0
  195. package/dist/reasoning/proof-mining/types.js +24 -0
  196. package/dist/reasoning/proof-mining/types.js.map +1 -0
  197. package/package.json +26 -1
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Mining — Barrel + orquestador
4
+ // ============================================================
5
+ //
6
+ // API pública del módulo. La pipeline es:
7
+ //
8
+ // mineLemmas(corpus, options)
9
+ // → extractor.extractAuxiliaryLemmas
10
+ // → para cada grupo: generalizer.generalizeLemma
11
+ // → ranker.rankLemmas
12
+ // → (opcional) persistence.persistLemmas
13
+ //
14
+ // `ProofMiner` es una fachada stateful que mantiene un cache
15
+ // interno entre llamadas (útil si se procesa el corpus en batches).
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ProofMiner = exports.statsToString = exports.computeStats = exports.MINED_LEMMA_PROVER = exports.recoverLemmaFromCache = exports.recoverLemmas = exports.persistLemmas = exports.topK = exports.scoreLemma = exports.rankLemmas = exports.generalizeTerms = exports.generalizeFormulas = exports.generalizeLemma = exports.extractAuxiliaryLemmas = exports.subtreeKey = exports.groupSubtrees = exports.extractSubtrees = void 0;
18
+ exports.mineLemmas = mineLemmas;
19
+ const crypto_1 = require("crypto");
20
+ const theorem_cache_1 = require("../../runtime/theorem-cache");
21
+ const extractor_1 = require("./extractor");
22
+ const generalizer_1 = require("./generalizer");
23
+ const persistence_1 = require("./persistence");
24
+ const ranker_1 = require("./ranker");
25
+ const statistics_1 = require("./statistics");
26
+ var extractor_2 = require("./extractor");
27
+ Object.defineProperty(exports, "extractSubtrees", { enumerable: true, get: function () { return extractor_2.extractSubtrees; } });
28
+ Object.defineProperty(exports, "groupSubtrees", { enumerable: true, get: function () { return extractor_2.groupSubtrees; } });
29
+ Object.defineProperty(exports, "subtreeKey", { enumerable: true, get: function () { return extractor_2.subtreeKey; } });
30
+ Object.defineProperty(exports, "extractAuxiliaryLemmas", { enumerable: true, get: function () { return extractor_2.extractAuxiliaryLemmas; } });
31
+ var generalizer_2 = require("./generalizer");
32
+ Object.defineProperty(exports, "generalizeLemma", { enumerable: true, get: function () { return generalizer_2.generalizeLemma; } });
33
+ Object.defineProperty(exports, "generalizeFormulas", { enumerable: true, get: function () { return generalizer_2.generalizeFormulas; } });
34
+ Object.defineProperty(exports, "generalizeTerms", { enumerable: true, get: function () { return generalizer_2.generalizeTerms; } });
35
+ var ranker_2 = require("./ranker");
36
+ Object.defineProperty(exports, "rankLemmas", { enumerable: true, get: function () { return ranker_2.rankLemmas; } });
37
+ Object.defineProperty(exports, "scoreLemma", { enumerable: true, get: function () { return ranker_2.scoreLemma; } });
38
+ Object.defineProperty(exports, "topK", { enumerable: true, get: function () { return ranker_2.topK; } });
39
+ var persistence_2 = require("./persistence");
40
+ Object.defineProperty(exports, "persistLemmas", { enumerable: true, get: function () { return persistence_2.persistLemmas; } });
41
+ Object.defineProperty(exports, "recoverLemmas", { enumerable: true, get: function () { return persistence_2.recoverLemmas; } });
42
+ Object.defineProperty(exports, "recoverLemmaFromCache", { enumerable: true, get: function () { return persistence_2.recoverLemmaFromCache; } });
43
+ Object.defineProperty(exports, "MINED_LEMMA_PROVER", { enumerable: true, get: function () { return persistence_2.MINED_LEMMA_PROVER; } });
44
+ var statistics_2 = require("./statistics");
45
+ Object.defineProperty(exports, "computeStats", { enumerable: true, get: function () { return statistics_2.computeStats; } });
46
+ Object.defineProperty(exports, "statsToString", { enumerable: true, get: function () { return statistics_2.statsToString; } });
47
+ // ── Orquestador funcional ───────────────────────────────────
48
+ function hashStatement(profile, statement) {
49
+ return (0, crypto_1.createHash)('sha1').update(`${profile}::${statement}`).digest('hex');
50
+ }
51
+ /**
52
+ * Construye un MinedLemma a partir de un grupo. La conclusión
53
+ * generalizada se obtiene del generalizer; el proof representativo
54
+ * es el del primer member (estructura idéntica al resto módulo
55
+ * renombre).
56
+ */
57
+ function buildLemmaFromGroup(group, options) {
58
+ if (group.members.length === 0)
59
+ return undefined;
60
+ const conclusions = group.members.map((m) => m.conclusion);
61
+ const gen = (0, generalizer_1.generalizeLemma)(conclusions, {
62
+ maxAbstractionLevel: options.maxAbstractionLevel,
63
+ preserveSemantic: options.preserveSemantic,
64
+ });
65
+ // Stat representativo: usamos el statement generalizado si
66
+ // nonTrivial, si no el canonical de la primera conclusión.
67
+ const statement = gen.statement || group.canonicalConclusion;
68
+ const distinctProofs = new Set(group.members.map((m) => m.proofId));
69
+ const usageCount = distinctProofs.size;
70
+ const repMember = group.members[0];
71
+ if (repMember === undefined)
72
+ return undefined;
73
+ const subproofCost = repMember.cost;
74
+ // Saving total: cost del sub-proof × (usageCount - 1) — la 1ª
75
+ // ocurrencia no se ahorra, solo las subsecuentes.
76
+ const savings = subproofCost * Math.max(0, usageCount - 1);
77
+ // Re-armamos un ProofTrace independiente para el lemma. Los
78
+ // pasos se normalizan al subtree del primer member; las hojas
79
+ // (deepest steps que no tienen children) se interpretan como
80
+ // premises del lemma.
81
+ const steps = repMember.steps.map((s) => ({ ...s }));
82
+ // Premises: outputs de pasos cuya depth es la máxima dentro del
83
+ // sub-tree (hojas en el árbol).
84
+ let maxDepth = -1;
85
+ for (const s of steps)
86
+ if (s.depth > maxDepth)
87
+ maxDepth = s.depth;
88
+ const premises = [];
89
+ for (const s of steps) {
90
+ if (s.depth === maxDepth) {
91
+ // Los inputs del nivel más profundo se consideran hojas.
92
+ for (const inp of s.inputs) {
93
+ if (!premises.includes(inp))
94
+ premises.push(inp);
95
+ }
96
+ }
97
+ }
98
+ const proof = {
99
+ conclusion: repMember.conclusion,
100
+ premises,
101
+ profile: repMember.profile,
102
+ steps,
103
+ cost: subproofCost,
104
+ };
105
+ const id = hashStatement(repMember.profile, statement);
106
+ return {
107
+ id,
108
+ statement,
109
+ proof,
110
+ abstractionLevel: gen.abstractionLevel,
111
+ usageCount,
112
+ savings,
113
+ sourceProofs: Array.from(distinctProofs).sort(),
114
+ };
115
+ }
116
+ function resolveOptions(o) {
117
+ return {
118
+ minReuseThreshold: o?.minReuseThreshold ?? 2,
119
+ minSubtreeSize: o?.minSubtreeSize ?? 2,
120
+ maxAbstractionLevel: o?.maxAbstractionLevel ?? 3,
121
+ preserveSemantic: o?.preserveSemantic ?? true,
122
+ };
123
+ }
124
+ /**
125
+ * Mina lemmas del corpus de proofs. Devuelve los lemmas ordenados
126
+ * por score descendente + stats agregadas.
127
+ *
128
+ * Esta es la entrada principal del módulo. No persiste por defecto;
129
+ * para meter al cache, pasar `cache` o usar `ProofMiner`.
130
+ */
131
+ function mineLemmas(corpus, options) {
132
+ const opts = resolveOptions(options);
133
+ const groups = (0, extractor_1.extractAuxiliaryLemmas)(corpus, {
134
+ minReuseThreshold: opts.minReuseThreshold,
135
+ minSubtreeSize: opts.minSubtreeSize,
136
+ });
137
+ // Candidates count: cuántos sub-trees pasaron el primer filtro,
138
+ // antes del ranking final.
139
+ let candidatesFound = 0;
140
+ for (const g of groups)
141
+ candidatesFound += g.members.length;
142
+ const lemmas = [];
143
+ for (const g of groups) {
144
+ const l = buildLemmaFromGroup(g, opts);
145
+ if (l !== undefined)
146
+ lemmas.push(l);
147
+ }
148
+ const ranked = (0, ranker_1.rankLemmas)(lemmas, options?.weights);
149
+ const stats = (0, statistics_1.computeStats)(corpus.length, candidatesFound, ranked);
150
+ if (options?.cache !== undefined) {
151
+ (0, persistence_1.persistLemmas)(ranked, options.cache);
152
+ }
153
+ return { lemmas: ranked, stats };
154
+ }
155
+ // ── Fachada stateful ────────────────────────────────────────
156
+ /**
157
+ * `ProofMiner` es una clase fachada con estado interno: acumula
158
+ * lemmas a través de múltiples corpus, los persiste en un cache
159
+ * común, y expone consultas.
160
+ */
161
+ class ProofMiner {
162
+ cache;
163
+ options;
164
+ weights;
165
+ seen = new Map();
166
+ totalProofsAnalyzed = 0;
167
+ totalCandidatesFound = 0;
168
+ constructor(opts) {
169
+ this.options = resolveOptions(opts);
170
+ this.weights = opts?.weights;
171
+ this.cache = opts?.cache ?? new theorem_cache_1.TheoremCache();
172
+ }
173
+ /**
174
+ * Procesa un corpus de proofs y acumula los lemmas en estado.
175
+ * Lemmas con el mismo `id` se mergean: usageCount += new, savings
176
+ * += new, sourceProofs se unifican.
177
+ */
178
+ mine(corpus) {
179
+ const single = mineLemmas(corpus, {
180
+ ...this.options,
181
+ weights: this.weights,
182
+ });
183
+ this.totalProofsAnalyzed += corpus.length;
184
+ this.totalCandidatesFound += single.stats.candidatesFound;
185
+ for (const l of single.lemmas) {
186
+ const existing = this.seen.get(l.id);
187
+ if (existing === undefined) {
188
+ this.seen.set(l.id, l);
189
+ continue;
190
+ }
191
+ // Merge: unión de sourceProofs y suma de usage/savings.
192
+ const merged = {
193
+ ...existing,
194
+ usageCount: existing.usageCount + l.usageCount,
195
+ savings: existing.savings + l.savings,
196
+ sourceProofs: Array.from(new Set([...existing.sourceProofs, ...l.sourceProofs])).sort(),
197
+ };
198
+ this.seen.set(l.id, merged);
199
+ }
200
+ // Persistir lo nuevo en el cache.
201
+ (0, persistence_1.persistLemmas)(Array.from(this.seen.values()), this.cache);
202
+ const all = (0, ranker_1.rankLemmas)(Array.from(this.seen.values()), this.weights);
203
+ const stats = (0, statistics_1.computeStats)(this.totalProofsAnalyzed, this.totalCandidatesFound, all);
204
+ return { lemmas: all, stats };
205
+ }
206
+ /**
207
+ * Devuelve los lemmas acumulados, rankeados.
208
+ */
209
+ all() {
210
+ return (0, ranker_1.rankLemmas)(Array.from(this.seen.values()), this.weights);
211
+ }
212
+ /**
213
+ * Top-k del catálogo acumulado.
214
+ */
215
+ top(k) {
216
+ return (0, ranker_1.topK)(Array.from(this.seen.values()), k, this.weights);
217
+ }
218
+ /**
219
+ * Stats agregadas.
220
+ */
221
+ stats() {
222
+ return (0, statistics_1.computeStats)(this.totalProofsAnalyzed, this.totalCandidatesFound, Array.from(this.seen.values()));
223
+ }
224
+ /** Cache subyacente (lectura). */
225
+ getCache() {
226
+ return this.cache;
227
+ }
228
+ clear() {
229
+ this.seen.clear();
230
+ this.totalProofsAnalyzed = 0;
231
+ this.totalCandidatesFound = 0;
232
+ }
233
+ }
234
+ exports.ProofMiner = ProofMiner;
235
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { TheoremCache, type CachedTheorem } from '../../runtime/theorem-cache';
2
+ import type { MinedLemma } from './types';
3
+ /**
4
+ * Marca metadata.provedBy que identifica un lemma como minado.
5
+ */
6
+ export declare const MINED_LEMMA_PROVER = "proof-mining";
7
+ /**
8
+ * Guarda una lista de lemmas minados en el cache. Devuelve los ids
9
+ * (post-hash del cache, que puede diferir si el cache normaliza la
10
+ * fórmula de forma distinta).
11
+ *
12
+ * `now` es inyectable para tests deterministas (default `Date.now()`).
13
+ */
14
+ export declare function persistLemmas(lemmas: MinedLemma[], cache: TheoremCache, now?: () => number): string[];
15
+ /**
16
+ * Reconstruye un MinedLemma desde una entry cacheada (best-effort).
17
+ * Si la entry no fue persistida vía `persistLemmas`, devuelve
18
+ * `undefined`.
19
+ */
20
+ export declare function recoverLemmaFromCache(theorem: CachedTheorem): MinedLemma | undefined;
21
+ /**
22
+ * Recupera lemmas minados desde el cache a partir de una lista de
23
+ * statements canónicos esperados. Para cada `(statement, profile)`
24
+ * que efectivamente esté cacheado por `persistLemmas`, devuelve el
25
+ * MinedLemma reconstruido.
26
+ *
27
+ * Esta API existe porque `TheoremCache` no expone iteración total
28
+ * por design (LRU + persistencia). El caller que persistió los
29
+ * lemmas conoce sus statements; los pasa aquí para recuperarlos.
30
+ */
31
+ export declare function recoverLemmas(cache: TheoremCache, entries: Array<{
32
+ statement: string;
33
+ profile: string;
34
+ }>): MinedLemma[];
35
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/persistence.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAAE,EACpB,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,MAAM,MAAiB,GAC3B,MAAM,EAAE,CA4BV;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS,CAwCpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,UAAU,EAAE,CASd"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Mining — Persistencia en theorem-cache
4
+ // ============================================================
5
+ //
6
+ // Bridge entre los MinedLemma y el TheoremCache existente. La idea:
7
+ // los lemmas extraídos viven con primera clase en el cache, igual
8
+ // que cualquier teorema probado, y se benefician del α-canonical
9
+ // hashing + LRU + persistencia a disco.
10
+ //
11
+ // El mapping es directo:
12
+ //
13
+ // MinedLemma.id ← TheoremCache id (recalculado)
14
+ // MinedLemma.statement → CachedTheorem.formula
15
+ // MinedLemma.proof → CachedTheorem.proof (estructura completa)
16
+ // profile → CachedTheorem.profile
17
+ // metadata.provedBy = 'proof-mining'
18
+ // metadata.ms = subproof.cost
19
+ //
20
+ // `persistLemmas(lemmas, cache)` guarda. `recoverLemmas(cache,
21
+ // profile)` recupera todos los mined-lemmas de ese profile.
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.MINED_LEMMA_PROVER = void 0;
24
+ exports.persistLemmas = persistLemmas;
25
+ exports.recoverLemmaFromCache = recoverLemmaFromCache;
26
+ exports.recoverLemmas = recoverLemmas;
27
+ /**
28
+ * Marca metadata.provedBy que identifica un lemma como minado.
29
+ */
30
+ exports.MINED_LEMMA_PROVER = 'proof-mining';
31
+ /**
32
+ * Guarda una lista de lemmas minados en el cache. Devuelve los ids
33
+ * (post-hash del cache, que puede diferir si el cache normaliza la
34
+ * fórmula de forma distinta).
35
+ *
36
+ * `now` es inyectable para tests deterministas (default `Date.now()`).
37
+ */
38
+ function persistLemmas(lemmas, cache, now = Date.now) {
39
+ const ids = [];
40
+ for (const l of lemmas) {
41
+ const cached = {
42
+ formula: l.statement,
43
+ normalizedFormula: cache.canonicalize(l.statement),
44
+ profile: l.proof.profile,
45
+ proof: {
46
+ // Estructura del proof completo, sin perder metadata de mining.
47
+ steps: l.proof.steps,
48
+ conclusion: l.proof.conclusion,
49
+ premises: l.proof.premises,
50
+ abstractionLevel: l.abstractionLevel,
51
+ usageCount: l.usageCount,
52
+ savings: l.savings,
53
+ sourceProofs: l.sourceProofs,
54
+ },
55
+ verifier: undefined,
56
+ metadata: {
57
+ provedAt: new Date(now()).toISOString(),
58
+ ms: Math.round(l.proof.cost),
59
+ provedBy: exports.MINED_LEMMA_PROVER,
60
+ },
61
+ };
62
+ const id = cache.store(cached);
63
+ ids.push(id);
64
+ }
65
+ return ids;
66
+ }
67
+ /**
68
+ * Reconstruye un MinedLemma desde una entry cacheada (best-effort).
69
+ * Si la entry no fue persistida vía `persistLemmas`, devuelve
70
+ * `undefined`.
71
+ */
72
+ function recoverLemmaFromCache(theorem) {
73
+ if (theorem.metadata.provedBy !== exports.MINED_LEMMA_PROVER)
74
+ return undefined;
75
+ const proof = theorem.proof;
76
+ if (!proof ||
77
+ typeof proof !== 'object' ||
78
+ !Array.isArray(proof.steps) ||
79
+ typeof proof.conclusion !== 'string' ||
80
+ !Array.isArray(proof.premises) ||
81
+ typeof proof.abstractionLevel !== 'number' ||
82
+ typeof proof.usageCount !== 'number' ||
83
+ typeof proof.savings !== 'number' ||
84
+ !Array.isArray(proof.sourceProofs)) {
85
+ return undefined;
86
+ }
87
+ return {
88
+ id: theorem.id,
89
+ statement: theorem.formula,
90
+ proof: {
91
+ id: theorem.id,
92
+ conclusion: proof.conclusion,
93
+ premises: proof.premises,
94
+ profile: theorem.profile,
95
+ steps: proof.steps,
96
+ cost: theorem.metadata.ms,
97
+ },
98
+ abstractionLevel: proof.abstractionLevel,
99
+ usageCount: proof.usageCount,
100
+ savings: proof.savings,
101
+ sourceProofs: proof.sourceProofs,
102
+ };
103
+ }
104
+ /**
105
+ * Recupera lemmas minados desde el cache a partir de una lista de
106
+ * statements canónicos esperados. Para cada `(statement, profile)`
107
+ * que efectivamente esté cacheado por `persistLemmas`, devuelve el
108
+ * MinedLemma reconstruido.
109
+ *
110
+ * Esta API existe porque `TheoremCache` no expone iteración total
111
+ * por design (LRU + persistencia). El caller que persistió los
112
+ * lemmas conoce sus statements; los pasa aquí para recuperarlos.
113
+ */
114
+ function recoverLemmas(cache, entries) {
115
+ const out = [];
116
+ for (const e of entries) {
117
+ const th = cache.retrieve(e.statement, e.profile);
118
+ if (th === undefined)
119
+ continue;
120
+ const recovered = recoverLemmaFromCache(th);
121
+ if (recovered !== undefined)
122
+ out.push(recovered);
123
+ }
124
+ return out;
125
+ }
126
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/persistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { MinedLemma } from './types';
2
+ export interface RankingWeights {
3
+ /** Peso del saving total. Default 0.5. */
4
+ savings?: number;
5
+ /** Peso del usage count (normalizado log). Default 0.3. */
6
+ usage?: number;
7
+ /** Peso del abstraction level. Default 0.2. */
8
+ generality?: number;
9
+ }
10
+ /**
11
+ * Score numérico de un lemma según los pesos. Mayor = mejor.
12
+ *
13
+ * Normalizaciones:
14
+ * - savings: log(1 + savings)
15
+ * - usage: log(1 + usageCount)
16
+ * - generality: abstractionLevel (raw)
17
+ */
18
+ export declare function scoreLemma(lemma: MinedLemma, weights?: RankingWeights): number;
19
+ /**
20
+ * Ordena los lemmas de mayor a menor score. NO muta el array
21
+ * original. En empates: usageCount desc, luego id asc para
22
+ * determinismo.
23
+ */
24
+ export declare function rankLemmas(lemmas: MinedLemma[], weights?: RankingWeights): MinedLemma[];
25
+ /**
26
+ * Filtra los top-K lemmas por score.
27
+ */
28
+ export declare function topK(lemmas: MinedLemma[], k: number, weights?: RankingWeights): MinedLemma[];
29
+ //# sourceMappingURL=ranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranker.d.ts","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/ranker.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgBD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAM9E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,EAAE,CASvF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,EAAE,CAE5F"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Mining — Ranking de lemmas extraídos
4
+ // ============================================================
5
+ //
6
+ // Score de un lemma = combinación lineal de:
7
+ // - usefulness : usageCount (cuánto se reusa)
8
+ // - savings : sum(cost) ahorrado por reusos
9
+ // - generality : abstractionLevel (cuán abstracto es)
10
+ //
11
+ // Default weights privilegian savings (impacto directo en tiempo),
12
+ // luego frecuencia (señal de reuso real), luego generalidad
13
+ // (un lemma muy abstracto es valioso aunque su saving inmediato
14
+ // sea bajo, porque admite más instancias).
15
+ //
16
+ // El caller puede sobreescribir pesos para experimentar.
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.scoreLemma = scoreLemma;
19
+ exports.rankLemmas = rankLemmas;
20
+ exports.topK = topK;
21
+ const DEFAULT_WEIGHTS = {
22
+ savings: 0.5,
23
+ usage: 0.3,
24
+ generality: 0.2,
25
+ };
26
+ function resolveWeights(w) {
27
+ return {
28
+ savings: w?.savings ?? DEFAULT_WEIGHTS.savings,
29
+ usage: w?.usage ?? DEFAULT_WEIGHTS.usage,
30
+ generality: w?.generality ?? DEFAULT_WEIGHTS.generality,
31
+ };
32
+ }
33
+ /**
34
+ * Score numérico de un lemma según los pesos. Mayor = mejor.
35
+ *
36
+ * Normalizaciones:
37
+ * - savings: log(1 + savings)
38
+ * - usage: log(1 + usageCount)
39
+ * - generality: abstractionLevel (raw)
40
+ */
41
+ function scoreLemma(lemma, weights) {
42
+ const w = resolveWeights(weights);
43
+ const sv = Math.log1p(Math.max(0, lemma.savings));
44
+ const uc = Math.log1p(Math.max(0, lemma.usageCount));
45
+ const ab = Math.max(0, lemma.abstractionLevel);
46
+ return w.savings * sv + w.usage * uc + w.generality * ab;
47
+ }
48
+ /**
49
+ * Ordena los lemmas de mayor a menor score. NO muta el array
50
+ * original. En empates: usageCount desc, luego id asc para
51
+ * determinismo.
52
+ */
53
+ function rankLemmas(lemmas, weights) {
54
+ const w = resolveWeights(weights);
55
+ const decorated = lemmas.map((l) => ({ l, s: scoreLemma(l, w) }));
56
+ decorated.sort((a, b) => {
57
+ if (b.s !== a.s)
58
+ return b.s - a.s;
59
+ if (b.l.usageCount !== a.l.usageCount)
60
+ return b.l.usageCount - a.l.usageCount;
61
+ return a.l.id.localeCompare(b.l.id);
62
+ });
63
+ return decorated.map((d) => d.l);
64
+ }
65
+ /**
66
+ * Filtra los top-K lemmas por score.
67
+ */
68
+ function topK(lemmas, k, weights) {
69
+ return rankLemmas(lemmas, weights).slice(0, Math.max(0, k));
70
+ }
71
+ //# sourceMappingURL=ranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/ranker.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;AAC/D,EAAE;AACF,6CAA6C;AAC7C,iDAAiD;AACjD,kDAAkD;AAClD,yDAAyD;AACzD,EAAE;AACF,mEAAmE;AACnE,4DAA4D;AAC5D,gEAAgE;AAChE,2CAA2C;AAC3C,EAAE;AACF,yDAAyD;;AAmCzD,gCAMC;AAOD,gCASC;AAKD,oBAEC;AAnDD,MAAM,eAAe,GAA6B;IAChD,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,SAAS,cAAc,CAAC,CAAkB;IACxC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,OAAO,IAAI,eAAe,CAAC,OAAO;QAC9C,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,eAAe,CAAC,KAAK;QACxC,UAAU,EAAE,CAAC,EAAE,UAAU,IAAI,eAAe,CAAC,UAAU;KACxD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAC,KAAiB,EAAE,OAAwB;IACpE,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,MAAoB,EAAE,OAAwB;IACvE,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9E,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,IAAI,CAAC,MAAoB,EAAE,CAAS,EAAE,OAAwB;IAC5E,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { MinedLemma, UsageStats } from './types';
2
+ /**
3
+ * Computa las stats agregadas dado el corpus original y la lista
4
+ * final de lemmas extraídos.
5
+ */
6
+ export declare function computeStats(proofsAnalyzed: number, candidatesFound: number, lemmas: MinedLemma[]): UsageStats;
7
+ /**
8
+ * Render textual de las stats (para logs / debugging).
9
+ */
10
+ export declare function statsToString(s: UsageStats): string;
11
+ //# sourceMappingURL=statistics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/statistics.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,UAAU,EAAE,GACnB,UAAU,CAiBZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CASnD"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Mining — Estadísticas
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.computeStats = computeStats;
7
+ exports.statsToString = statsToString;
8
+ /**
9
+ * Computa las stats agregadas dado el corpus original y la lista
10
+ * final de lemmas extraídos.
11
+ */
12
+ function computeStats(proofsAnalyzed, candidatesFound, lemmas) {
13
+ let totalSavings = 0;
14
+ let totalUsage = 0;
15
+ let generalizedCount = 0;
16
+ for (const l of lemmas) {
17
+ totalSavings += l.savings;
18
+ totalUsage += l.usageCount;
19
+ if (l.abstractionLevel > 0)
20
+ generalizedCount++;
21
+ }
22
+ return {
23
+ proofsAnalyzed,
24
+ candidatesFound,
25
+ lemmasExtracted: lemmas.length,
26
+ totalSavings,
27
+ averageUsage: lemmas.length === 0 ? 0 : totalUsage / lemmas.length,
28
+ generalizedCount,
29
+ };
30
+ }
31
+ /**
32
+ * Render textual de las stats (para logs / debugging).
33
+ */
34
+ function statsToString(s) {
35
+ return [
36
+ `proofsAnalyzed=${s.proofsAnalyzed}`,
37
+ `candidates=${s.candidatesFound}`,
38
+ `extracted=${s.lemmasExtracted}`,
39
+ `totalSavings=${s.totalSavings.toFixed(2)}`,
40
+ `avgUsage=${s.averageUsage.toFixed(2)}`,
41
+ `generalized=${s.generalizedCount}`,
42
+ ].join(' ');
43
+ }
44
+ //# sourceMappingURL=statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../../src/reasoning/proof-mining/statistics.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;;AAQ/D,oCAqBC;AAKD,sCASC;AAvCD;;;GAGG;AACH,SAAgB,YAAY,CAC1B,cAAsB,EACtB,eAAuB,EACvB,MAAoB;IAEpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC;QAC1B,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;QAC3B,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC;YAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IACD,OAAO;QACL,cAAc;QACd,eAAe;QACf,eAAe,EAAE,MAAM,CAAC,MAAM;QAC9B,YAAY;QACZ,YAAY,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM;QAClE,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,CAAa;IACzC,OAAO;QACL,kBAAkB,CAAC,CAAC,cAAc,EAAE;QACpC,cAAc,CAAC,CAAC,eAAe,EAAE;QACjC,aAAa,CAAC,CAAC,eAAe,EAAE;QAChC,gBAAgB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3C,YAAY,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvC,eAAe,CAAC,CAAC,gBAAgB,EAAE;KACpC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}