@stevenvo780/st-lang 4.7.0 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/namespaces/reasoning.d.ts +2 -1
  2. package/dist/namespaces/reasoning.d.ts.map +1 -1
  3. package/dist/namespaces/reasoning.js +3 -1
  4. package/dist/namespaces/reasoning.js.map +1 -1
  5. package/dist/reasoning/combinatorial-games/index.d.ts +105 -0
  6. package/dist/reasoning/combinatorial-games/index.d.ts.map +1 -0
  7. package/dist/reasoning/combinatorial-games/index.js +377 -0
  8. package/dist/reasoning/combinatorial-games/index.js.map +1 -0
  9. package/dist/reasoning/mechanism-design/auctions.d.ts +49 -0
  10. package/dist/reasoning/mechanism-design/auctions.d.ts.map +1 -0
  11. package/dist/reasoning/mechanism-design/auctions.js +179 -0
  12. package/dist/reasoning/mechanism-design/auctions.js.map +1 -0
  13. package/dist/reasoning/mechanism-design/index.d.ts +5 -0
  14. package/dist/reasoning/mechanism-design/index.d.ts.map +1 -0
  15. package/dist/reasoning/mechanism-design/index.js +39 -0
  16. package/dist/reasoning/mechanism-design/index.js.map +1 -0
  17. package/dist/reasoning/mechanism-design/myerson.d.ts +64 -0
  18. package/dist/reasoning/mechanism-design/myerson.d.ts.map +1 -0
  19. package/dist/reasoning/mechanism-design/myerson.js +253 -0
  20. package/dist/reasoning/mechanism-design/myerson.js.map +1 -0
  21. package/dist/reasoning/mechanism-design/types.d.ts +44 -0
  22. package/dist/reasoning/mechanism-design/types.d.ts.map +1 -0
  23. package/dist/reasoning/mechanism-design/types.js +22 -0
  24. package/dist/reasoning/mechanism-design/types.js.map +1 -0
  25. package/dist/reasoning/mechanism-design/vcg.d.ts +29 -0
  26. package/dist/reasoning/mechanism-design/vcg.d.ts.map +1 -0
  27. package/dist/reasoning/mechanism-design/vcg.js +305 -0
  28. package/dist/reasoning/mechanism-design/vcg.js.map +1 -0
  29. package/dist/reasoning/probabilistic/distributions.d.ts +44 -0
  30. package/dist/reasoning/probabilistic/distributions.d.ts.map +1 -0
  31. package/dist/reasoning/probabilistic/distributions.js +207 -0
  32. package/dist/reasoning/probabilistic/distributions.js.map +1 -0
  33. package/dist/reasoning/probabilistic/examples.d.ts +31 -0
  34. package/dist/reasoning/probabilistic/examples.d.ts.map +1 -0
  35. package/dist/reasoning/probabilistic/examples.js +85 -0
  36. package/dist/reasoning/probabilistic/examples.js.map +1 -0
  37. package/dist/reasoning/probabilistic/index.d.ts +6 -0
  38. package/dist/reasoning/probabilistic/index.d.ts.map +1 -0
  39. package/dist/reasoning/probabilistic/index.js +42 -0
  40. package/dist/reasoning/probabilistic/index.js.map +1 -0
  41. package/dist/reasoning/probabilistic/inference.d.ts +45 -0
  42. package/dist/reasoning/probabilistic/inference.d.ts.map +1 -0
  43. package/dist/reasoning/probabilistic/inference.js +579 -0
  44. package/dist/reasoning/probabilistic/inference.js.map +1 -0
  45. package/dist/reasoning/probabilistic/types.d.ts +153 -0
  46. package/dist/reasoning/probabilistic/types.d.ts.map +1 -0
  47. package/dist/reasoning/probabilistic/types.js +37 -0
  48. package/dist/reasoning/probabilistic/types.js.map +1 -0
  49. package/dist/solver/smt-z3/index.d.ts +3 -0
  50. package/dist/solver/smt-z3/index.d.ts.map +1 -0
  51. package/dist/solver/smt-z3/index.js +11 -0
  52. package/dist/solver/smt-z3/index.js.map +1 -0
  53. package/dist/solver/smt-z3/types.d.ts +52 -0
  54. package/dist/solver/smt-z3/types.d.ts.map +1 -0
  55. package/dist/solver/smt-z3/types.js +6 -0
  56. package/dist/solver/smt-z3/types.js.map +1 -0
  57. package/dist/solver/smt-z3/z3-wasm-backend.d.ts +88 -0
  58. package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -0
  59. package/dist/solver/smt-z3/z3-wasm-backend.js +437 -0
  60. package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -0
  61. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts +2 -0
  62. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts.map +1 -0
  63. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js +203 -0
  64. package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js.map +1 -0
  65. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts +2 -0
  66. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts.map +1 -0
  67. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js +290 -0
  68. package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js.map +1 -0
  69. package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts +2 -0
  70. package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts.map +1 -0
  71. package/dist/tests/reasoning/probabilistic/probabilistic.test.js +370 -0
  72. package/dist/tests/reasoning/probabilistic/probabilistic.test.js.map +1 -0
  73. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts +2 -0
  74. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts.map +1 -0
  75. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js +394 -0
  76. package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -0
  77. package/dist/tests/tooling/proof-guidance/features.test.d.ts +2 -0
  78. package/dist/tests/tooling/proof-guidance/features.test.d.ts.map +1 -0
  79. package/dist/tests/tooling/proof-guidance/features.test.js +72 -0
  80. package/dist/tests/tooling/proof-guidance/features.test.js.map +1 -0
  81. package/dist/tests/tooling/proof-guidance/model.test.d.ts +2 -0
  82. package/dist/tests/tooling/proof-guidance/model.test.d.ts.map +1 -0
  83. package/dist/tests/tooling/proof-guidance/model.test.js +165 -0
  84. package/dist/tests/tooling/proof-guidance/model.test.js.map +1 -0
  85. package/dist/tests/tooling/proof-guidance/search.test.d.ts +2 -0
  86. package/dist/tests/tooling/proof-guidance/search.test.d.ts.map +1 -0
  87. package/dist/tests/tooling/proof-guidance/search.test.js +238 -0
  88. package/dist/tests/tooling/proof-guidance/search.test.js.map +1 -0
  89. package/dist/tests/type-theory/cubical/cubical.test.d.ts +2 -0
  90. package/dist/tests/type-theory/cubical/cubical.test.d.ts.map +1 -0
  91. package/dist/tests/type-theory/cubical/cubical.test.js +207 -0
  92. package/dist/tests/type-theory/cubical/cubical.test.js.map +1 -0
  93. package/dist/tooling/proof-guidance/features.d.ts +10 -0
  94. package/dist/tooling/proof-guidance/features.d.ts.map +1 -0
  95. package/dist/tooling/proof-guidance/features.js +97 -0
  96. package/dist/tooling/proof-guidance/features.js.map +1 -0
  97. package/dist/tooling/proof-guidance/index.d.ts +5 -0
  98. package/dist/tooling/proof-guidance/index.d.ts.map +1 -0
  99. package/dist/tooling/proof-guidance/index.js +25 -0
  100. package/dist/tooling/proof-guidance/index.js.map +1 -0
  101. package/dist/tooling/proof-guidance/model.d.ts +42 -0
  102. package/dist/tooling/proof-guidance/model.d.ts.map +1 -0
  103. package/dist/tooling/proof-guidance/model.js +149 -0
  104. package/dist/tooling/proof-guidance/model.js.map +1 -0
  105. package/dist/tooling/proof-guidance/search.d.ts +7 -0
  106. package/dist/tooling/proof-guidance/search.d.ts.map +1 -0
  107. package/dist/tooling/proof-guidance/search.js +102 -0
  108. package/dist/tooling/proof-guidance/search.js.map +1 -0
  109. package/dist/tooling/proof-guidance/types.d.ts +77 -0
  110. package/dist/tooling/proof-guidance/types.d.ts.map +1 -0
  111. package/dist/tooling/proof-guidance/types.js +8 -0
  112. package/dist/tooling/proof-guidance/types.js.map +1 -0
  113. package/dist/type-theory/cubical/equality.d.ts +4 -0
  114. package/dist/type-theory/cubical/equality.d.ts.map +1 -0
  115. package/dist/type-theory/cubical/equality.js +78 -0
  116. package/dist/type-theory/cubical/equality.js.map +1 -0
  117. package/dist/type-theory/cubical/index.d.ts +14 -0
  118. package/dist/type-theory/cubical/index.d.ts.map +1 -0
  119. package/dist/type-theory/cubical/index.js +71 -0
  120. package/dist/type-theory/cubical/index.js.map +1 -0
  121. package/dist/type-theory/cubical/infer.d.ts +18 -0
  122. package/dist/type-theory/cubical/infer.d.ts.map +1 -0
  123. package/dist/type-theory/cubical/infer.js +241 -0
  124. package/dist/type-theory/cubical/infer.js.map +1 -0
  125. package/dist/type-theory/cubical/interval.d.ts +12 -0
  126. package/dist/type-theory/cubical/interval.d.ts.map +1 -0
  127. package/dist/type-theory/cubical/interval.js +118 -0
  128. package/dist/type-theory/cubical/interval.js.map +1 -0
  129. package/dist/type-theory/cubical/normalize.d.ts +5 -0
  130. package/dist/type-theory/cubical/normalize.d.ts.map +1 -0
  131. package/dist/type-theory/cubical/normalize.js +191 -0
  132. package/dist/type-theory/cubical/normalize.js.map +1 -0
  133. package/dist/type-theory/cubical/path-algebra.d.ts +12 -0
  134. package/dist/type-theory/cubical/path-algebra.d.ts.map +1 -0
  135. package/dist/type-theory/cubical/path-algebra.js +109 -0
  136. package/dist/type-theory/cubical/path-algebra.js.map +1 -0
  137. package/dist/type-theory/cubical/substitute.d.ts +3 -0
  138. package/dist/type-theory/cubical/substitute.d.ts.map +1 -0
  139. package/dist/type-theory/cubical/substitute.js +109 -0
  140. package/dist/type-theory/cubical/substitute.js.map +1 -0
  141. package/dist/type-theory/cubical/types.d.ts +77 -0
  142. package/dist/type-theory/cubical/types.d.ts.map +1 -0
  143. package/dist/type-theory/cubical/types.js +258 -0
  144. package/dist/type-theory/cubical/types.js.map +1 -0
  145. package/package.json +1 -1
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const cubical_1 = require("../../../type-theory/cubical");
5
+ function unwrap(r) {
6
+ if ((0, cubical_1.isInferErrorCubical)(r))
7
+ throw new Error(`unexpected error: ${r.error}`);
8
+ return r;
9
+ }
10
+ (0, vitest_1.describe)('CTT-Lite / interval algebra', () => {
11
+ (0, vitest_1.it)('isIntervalExpr reconoce i0, i1, iVar', () => {
12
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cI0)())).toBe(true);
13
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cI1)())).toBe(true);
14
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cIVar)('i'))).toBe(true);
15
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cIMin)((0, cubical_1.cI0)(), (0, cubical_1.cIVar)('i')))).toBe(true);
16
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cIMax)((0, cubical_1.cI1)(), (0, cubical_1.cIVar)('i')))).toBe(true);
17
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cINeg)((0, cubical_1.cIVar)('i')))).toBe(true);
18
+ });
19
+ (0, vitest_1.it)('isIntervalExpr rechaza términos no interválicos', () => {
20
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cVar)('x'))).toBe(false);
21
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cUniverse)(0))).toBe(false);
22
+ (0, vitest_1.expect)((0, cubical_1.isIntervalExpr)((0, cubical_1.cLam)('x', (0, cubical_1.cUniverse)(0), (0, cubical_1.cVar)('x')))).toBe(false);
23
+ });
24
+ (0, vitest_1.it)('evalInterval: extremos y leyes 1 - 0 ≡ 1, 1 - 1 ≡ 0', () => {
25
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cI0)())).toBe(0);
26
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cI1)())).toBe(1);
27
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cINeg)((0, cubical_1.cI0)()))).toBe(1);
28
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cINeg)((0, cubical_1.cI1)()))).toBe(0);
29
+ });
30
+ (0, vitest_1.it)('evalInterval: 0 ∧ i ≡ 0, 1 ∧ i ≡ i, 0 ∨ i ≡ i, 1 ∨ i ≡ 1', () => {
31
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMin)((0, cubical_1.cI0)(), (0, cubical_1.cIVar)('i')))).toBe(0);
32
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMin)((0, cubical_1.cI1)(), (0, cubical_1.cI0)()))).toBe(0);
33
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMin)((0, cubical_1.cI1)(), (0, cubical_1.cI1)()))).toBe(1);
34
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMax)((0, cubical_1.cI1)(), (0, cubical_1.cIVar)('i')))).toBe(1);
35
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMax)((0, cubical_1.cI0)(), (0, cubical_1.cI1)()))).toBe(1);
36
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMax)((0, cubical_1.cI0)(), (0, cubical_1.cI0)()))).toBe(0);
37
+ });
38
+ (0, vitest_1.it)('evalInterval: variable libre devuelve gen', () => {
39
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIVar)('i'))).toBe('gen');
40
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMin)((0, cubical_1.cIVar)('i'), (0, cubical_1.cIVar)('j')))).toBe('gen');
41
+ });
42
+ (0, vitest_1.it)('evalInterval: environment {i ↦ 1} resuelve i a 1', () => {
43
+ const env = new Map([['i', 1]]);
44
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIVar)('i'), env)).toBe(1);
45
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cINeg)((0, cubical_1.cIVar)('i')), env)).toBe(0);
46
+ (0, vitest_1.expect)((0, cubical_1.evalInterval)((0, cubical_1.cIMin)((0, cubical_1.cIVar)('i'), (0, cubical_1.cI1)()), env)).toBe(1);
47
+ });
48
+ (0, vitest_1.it)('normalizeInterval: ~ ~ i ≡ i (involución)', () => {
49
+ const t = (0, cubical_1.cINeg)((0, cubical_1.cINeg)((0, cubical_1.cIVar)('i')));
50
+ const n = (0, cubical_1.normalizeInterval)(t);
51
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(n, (0, cubical_1.cIVar)('i'))).toBe(true);
52
+ });
53
+ (0, vitest_1.it)('normalizeInterval: 1 ∧ (0 ∨ i) ≡ i', () => {
54
+ const t = (0, cubical_1.cIMin)((0, cubical_1.cI1)(), (0, cubical_1.cIMax)((0, cubical_1.cI0)(), (0, cubical_1.cIVar)('i')));
55
+ const n = (0, cubical_1.normalizeInterval)(t);
56
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(n, (0, cubical_1.cIVar)('i'))).toBe(true);
57
+ });
58
+ });
59
+ (0, vitest_1.describe)('CTT-Lite / pLam y pApp (β del intervalo)', () => {
60
+ (0, vitest_1.it)('(λi. x) @ i0 ≡ x', () => {
61
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cVar)('x'));
62
+ const reduced = (0, cubical_1.normalize)((0, cubical_1.cPApp)(p, (0, cubical_1.cI0)()));
63
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(reduced, (0, cubical_1.cVar)('x'))).toBe(true);
64
+ });
65
+ (0, vitest_1.it)('(λi. x) @ i1 ≡ x', () => {
66
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cVar)('x'));
67
+ const reduced = (0, cubical_1.normalize)((0, cubical_1.cPApp)(p, (0, cubical_1.cI1)()));
68
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(reduced, (0, cubical_1.cVar)('x'))).toBe(true);
69
+ });
70
+ (0, vitest_1.it)('(λi. i) @ i0 ≡ i0 y @ i1 ≡ i1 (path variable identidad)', () => {
71
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cIVar)('i'));
72
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)((0, cubical_1.normalize)((0, cubical_1.cPApp)(p, (0, cubical_1.cI0)())), (0, cubical_1.cI0)())).toBe(true);
73
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)((0, cubical_1.normalize)((0, cubical_1.cPApp)(p, (0, cubical_1.cI1)())), (0, cubical_1.cI1)())).toBe(true);
74
+ });
75
+ });
76
+ (0, vitest_1.describe)('CTT-Lite / reflPath y boundary', () => {
77
+ (0, vitest_1.it)('reflPath(x) @ i0 ≡ x', () => {
78
+ const p = (0, cubical_1.reflPath)((0, cubical_1.cVar)('x'));
79
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)((0, cubical_1.normalize)((0, cubical_1.cPApp)(p, (0, cubical_1.cI0)())), (0, cubical_1.cVar)('x'))).toBe(true);
80
+ });
81
+ (0, vitest_1.it)('reflPath(x) @ i1 ≡ x', () => {
82
+ const p = (0, cubical_1.reflPath)((0, cubical_1.cVar)('x'));
83
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)((0, cubical_1.normalize)((0, cubical_1.cPApp)(p, (0, cubical_1.cI1)())), (0, cubical_1.cVar)('x'))).toBe(true);
84
+ });
85
+ (0, vitest_1.it)('pathInverse(reflPath(x)) ≡ reflPath(x) (porque i no ocurre)', () => {
86
+ const r = (0, cubical_1.reflPath)((0, cubical_1.cVar)('x'));
87
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)((0, cubical_1.pathInverse)(r), r)).toBe(true);
88
+ });
89
+ });
90
+ (0, vitest_1.describe)('CTT-Lite / composición (identidades sintácticas)', () => {
91
+ (0, vitest_1.it)('pathCompose(reflPath(x), p) ≡ p (identidad izquierda)', () => {
92
+ // path no-trivial: λi. f i (depende de i)
93
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cPApp)((0, cubical_1.cVar)('q'), (0, cubical_1.cIVar)('i')));
94
+ const c = (0, cubical_1.pathCompose)((0, cubical_1.reflPath)((0, cubical_1.cVar)('x')), p);
95
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(c, p)).toBe(true);
96
+ });
97
+ (0, vitest_1.it)('pathCompose(p, reflPath(x)) ≡ p (identidad derecha)', () => {
98
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cPApp)((0, cubical_1.cVar)('q'), (0, cubical_1.cIVar)('i')));
99
+ const c = (0, cubical_1.pathCompose)(p, (0, cubical_1.reflPath)((0, cubical_1.cVar)('x')));
100
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(c, p)).toBe(true);
101
+ });
102
+ (0, vitest_1.it)('composición asociativa (sintáctica) con dos reflPath', () => {
103
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cPApp)((0, cubical_1.cVar)('q'), (0, cubical_1.cIVar)('i')));
104
+ const r1 = (0, cubical_1.reflPath)((0, cubical_1.cVar)('a'));
105
+ const r2 = (0, cubical_1.reflPath)((0, cubical_1.cVar)('b'));
106
+ // (p · r1) · r2 ≡ p ≡ p · (r1 · r2)
107
+ const lhs = (0, cubical_1.pathCompose)((0, cubical_1.pathCompose)(p, r1), r2);
108
+ const rhs = (0, cubical_1.pathCompose)(p, (0, cubical_1.pathCompose)(r1, r2));
109
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(lhs, rhs)).toBe(true);
110
+ });
111
+ });
112
+ (0, vitest_1.describe)('CTT-Lite / inferencia de tipos', () => {
113
+ (0, vitest_1.it)('i0 : I e i1 : I', () => {
114
+ const t0 = unwrap((0, cubical_1.inferType)((0, cubical_1.cI0)()));
115
+ const t1 = unwrap((0, cubical_1.inferType)((0, cubical_1.cI1)()));
116
+ (0, vitest_1.expect)(t0.kind === 'var' && t0.name === '__I__').toBe(true);
117
+ (0, vitest_1.expect)(t1.kind === 'var' && t1.name === '__I__').toBe(true);
118
+ });
119
+ (0, vitest_1.it)('~ i0 : I', () => {
120
+ const t = unwrap((0, cubical_1.inferType)((0, cubical_1.cINeg)((0, cubical_1.cI0)())));
121
+ (0, vitest_1.expect)(t.kind === 'var' && t.name === '__I__').toBe(true);
122
+ });
123
+ (0, vitest_1.it)('iMin/iMax sobre extremos: bien tipados', () => {
124
+ (0, vitest_1.expect)((0, cubical_1.isInferErrorCubical)((0, cubical_1.inferType)((0, cubical_1.cIMin)((0, cubical_1.cI0)(), (0, cubical_1.cI1)())))).toBe(false);
125
+ (0, vitest_1.expect)((0, cubical_1.isInferErrorCubical)((0, cubical_1.inferType)((0, cubical_1.cIMax)((0, cubical_1.cI0)(), (0, cubical_1.cI1)())))).toBe(false);
126
+ });
127
+ (0, vitest_1.it)('reflPath(x) infiere PathP _ x x cuando x es tipado', () => {
128
+ // Construimos λi. x dentro de un contexto donde x : Type 0
129
+ // (no usamos contexto: x es libre y refl no exige tipar la base si el
130
+ // body es independiente del intervalo)
131
+ const r = (0, cubical_1.reflPath)((0, cubical_1.cVar)('x'));
132
+ // No exigimos tipar (variable libre); sólo verificamos forma normal
133
+ // y β. La inferencia falla limpiamente al pedir el tipo de la variable.
134
+ const t = (0, cubical_1.inferType)(r);
135
+ (0, vitest_1.expect)((0, cubical_1.isInferErrorCubical)(t)).toBe(true);
136
+ });
137
+ (0, vitest_1.it)('λi. i0 : PathP _ i0 i0 (path en I, constante en los extremos)', () => {
138
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cI0)());
139
+ const t = unwrap((0, cubical_1.inferType)(p));
140
+ (0, vitest_1.expect)(t.kind).toBe('pathP');
141
+ if (t.kind !== 'pathP')
142
+ throw new Error('expected pathP');
143
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(t.left, (0, cubical_1.cI0)())).toBe(true);
144
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(t.right, (0, cubical_1.cI0)())).toBe(true);
145
+ });
146
+ (0, vitest_1.it)('p @ r requiere PathP en p', () => {
147
+ // p no es PathP → error
148
+ const bad = (0, cubical_1.cPApp)((0, cubical_1.cVar)('p'), (0, cubical_1.cI0)());
149
+ (0, vitest_1.expect)((0, cubical_1.isInferErrorCubical)((0, cubical_1.inferType)(bad))).toBe(true);
150
+ });
151
+ (0, vitest_1.it)('p @ r requiere I en r (no Type)', () => {
152
+ const p = (0, cubical_1.cPLam)('i', (0, cubical_1.cI0)()); // : PathP _ i0 i0
153
+ const bad = (0, cubical_1.cPApp)(p, (0, cubical_1.cUniverse)(0));
154
+ (0, vitest_1.expect)((0, cubical_1.isInferErrorCubical)((0, cubical_1.inferType)(bad))).toBe(true);
155
+ });
156
+ });
157
+ (0, vitest_1.describe)('CTT-Lite / glue', () => {
158
+ (0, vitest_1.it)('glue(e, partial) construye un término sintáctico', () => {
159
+ const g = (0, cubical_1.glue)((0, cubical_1.cVar)('e'), (0, cubical_1.cVar)('p'));
160
+ (0, vitest_1.expect)(g.kind).toBe('glue');
161
+ if (g.kind !== 'glue')
162
+ throw new Error('expected glue');
163
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(g.equiv, (0, cubical_1.cVar)('e'))).toBe(true);
164
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(g.partial, (0, cubical_1.cVar)('p'))).toBe(true);
165
+ });
166
+ });
167
+ (0, vitest_1.describe)('CTT-Lite / αβ-equivalencia bajo normalización', () => {
168
+ (0, vitest_1.it)('λi. (λi. x) @ i ≡ λi. x por β interválica', () => {
169
+ const lhs = (0, cubical_1.cPLam)('i', (0, cubical_1.cPApp)((0, cubical_1.cPLam)('i', (0, cubical_1.cVar)('x')), (0, cubical_1.cIVar)('i')));
170
+ const rhs = (0, cubical_1.cPLam)('i', (0, cubical_1.cVar)('x'));
171
+ (0, vitest_1.expect)((0, cubical_1.alphaBetaEq)(lhs, rhs)).toBe(true);
172
+ });
173
+ (0, vitest_1.it)('PathP estructural: alphaEq distingue argumentos', () => {
174
+ const p1 = (0, cubical_1.cPathP)((0, cubical_1.cPLam)('i', (0, cubical_1.cUniverse)(0)), (0, cubical_1.cVar)('a'), (0, cubical_1.cVar)('b'));
175
+ const p2 = (0, cubical_1.cPathP)((0, cubical_1.cPLam)('i', (0, cubical_1.cUniverse)(0)), (0, cubical_1.cVar)('a'), (0, cubical_1.cVar)('c'));
176
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(p1, p1)).toBe(true);
177
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)(p1, p2)).toBe(false);
178
+ });
179
+ });
180
+ (0, vitest_1.describe)('CTT-Lite / serialización', () => {
181
+ (0, vitest_1.it)('termToString incluye conectores ∧ ∨ ~ y @', () => {
182
+ const s = (0, cubical_1.termToString)((0, cubical_1.cIMin)((0, cubical_1.cIVar)('i'), (0, cubical_1.cINeg)((0, cubical_1.cIVar)('j'))));
183
+ (0, vitest_1.expect)(s).toContain('∧');
184
+ (0, vitest_1.expect)(s).toContain('~');
185
+ const s2 = (0, cubical_1.termToString)((0, cubical_1.cPApp)((0, cubical_1.cPLam)('i', (0, cubical_1.cVar)('x')), (0, cubical_1.cI0)()));
186
+ (0, vitest_1.expect)(s2).toContain('@');
187
+ });
188
+ });
189
+ (0, vitest_1.describe)('CTT-Lite / consistencia tipo-término en arrow type', () => {
190
+ (0, vitest_1.it)('cArrow construye Π con bind = _', () => {
191
+ const t = (0, cubical_1.cArrow)((0, cubical_1.cUniverse)(0), (0, cubical_1.cUniverse)(0));
192
+ (0, vitest_1.expect)(t.kind).toBe('pi');
193
+ if (t.kind !== 'pi')
194
+ throw new Error('expected pi');
195
+ (0, vitest_1.expect)(t.bind).toBe('_');
196
+ });
197
+ (0, vitest_1.it)('cPi/cLam/cApp respetan β en aplicación normal', () => {
198
+ // (λx:Type. x) (Type 0) ↦ Type 0
199
+ const lam = (0, cubical_1.cLam)('x', (0, cubical_1.cUniverse)(0), (0, cubical_1.cVar)('x'));
200
+ const app = (0, cubical_1.cApp)(lam, (0, cubical_1.cUniverse)(0));
201
+ (0, vitest_1.expect)((0, cubical_1.alphaEq)((0, cubical_1.normalize)(app), (0, cubical_1.cUniverse)(0))).toBe(true);
202
+ // Y el chequeo de tipos no explota
203
+ const piT = (0, cubical_1.cPi)('x', (0, cubical_1.cUniverse)(0), (0, cubical_1.cUniverse)(0));
204
+ (0, vitest_1.expect)(piT.kind).toBe('pi');
205
+ });
206
+ });
207
+ //# sourceMappingURL=cubical.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cubical.test.js","sourceRoot":"","sources":["../../../../src/tests/type-theory/cubical/cubical.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Feature, ProofState } from './types';
2
+ /**
3
+ * Extrae features del estado. Estabilidad:
4
+ * - mismo state → mismo array (orden, nombres, valores).
5
+ * - todos los valores son números finitos.
6
+ */
7
+ export declare function extractFeatures(state: ProofState): Feature[];
8
+ /** Lista cerrada de feature names — útil para inicializar el modelo. */
9
+ export declare function featureNames(): string[];
10
+ //# sourceMappingURL=features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/features.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAgDnD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,EAAE,CAkC5D;AAED,wEAAwE;AACxE,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAMvC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Guidance — Feature extraction
4
+ //
5
+ // Features simples y baratas (sin embeddings). El extractor es
6
+ // determinístico: para el mismo state siempre devuelve los mismos
7
+ // (name, value). Los tests de `extractFeatures determinístico'
8
+ // dependen de esa propiedad.
9
+ // ============================================================
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.extractFeatures = extractFeatures;
12
+ exports.featureNames = featureNames;
13
+ /**
14
+ * Símbolos top-level que reconocemos como features one-hot.
15
+ * El orden es estable — esos son los nombres de feature usados por
16
+ * el modelo.
17
+ */
18
+ const TOP_LEVEL_SYMBOLS = ['→', '∧', '∨', '¬', '↔', '∀', '∃', '='];
19
+ /**
20
+ * Operadores que cuentan para "depth" del goal — cualquier ocurrencia
21
+ * de uno de estos (no solo top-level) suma 1.
22
+ */
23
+ const DEPTH_OPERATORS = ['→', '∧', '∨', '¬', '↔', '∀', '∃', '⊥', '⊤'];
24
+ function countOperators(s) {
25
+ let n = 0;
26
+ for (const op of DEPTH_OPERATORS) {
27
+ let idx = 0;
28
+ while ((idx = s.indexOf(op, idx)) !== -1) {
29
+ n++;
30
+ idx += op.length;
31
+ }
32
+ }
33
+ return n;
34
+ }
35
+ /** ¿el goal contiene el símbolo? (no necesariamente top-level). */
36
+ function containsSymbol(goal, sym) {
37
+ return goal.includes(sym);
38
+ }
39
+ /** ¿alguna hipótesis aparece textualmente dentro del goal? */
40
+ function hypInGoal(state) {
41
+ if (state.hypotheses.length === 0)
42
+ return false;
43
+ for (const h of state.hypotheses) {
44
+ const trimmed = h.trim();
45
+ if (trimmed.length > 0 && state.goal.includes(trimmed))
46
+ return true;
47
+ }
48
+ return false;
49
+ }
50
+ /** ¿alguna hipótesis es exactamente el goal? (caso trivial de assumption). */
51
+ function hypEqualsGoal(state) {
52
+ const goal = state.goal.trim();
53
+ return state.hypotheses.some((h) => h.trim() === goal);
54
+ }
55
+ /**
56
+ * Extrae features del estado. Estabilidad:
57
+ * - mismo state → mismo array (orden, nombres, valores).
58
+ * - todos los valores son números finitos.
59
+ */
60
+ function extractFeatures(state) {
61
+ const goal = state.goal;
62
+ const features = [];
63
+ // Conteo de hipótesis (saturado en 10 para evitar dominio del feature).
64
+ features.push({ name: 'numHypotheses', value: Math.min(state.hypotheses.length, 10) });
65
+ // Profundidad del goal (saturada en 20).
66
+ features.push({ name: 'goalDepth', value: Math.min(countOperators(goal), 20) });
67
+ // Longitud del goal en chars / 10 (proxy de complejidad sintáctica).
68
+ features.push({ name: 'goalLength', value: Math.min(goal.length / 10, 20) });
69
+ // One-hot de símbolos presentes en el goal.
70
+ for (const sym of TOP_LEVEL_SYMBOLS) {
71
+ features.push({
72
+ name: `hasSymbol:${sym}`,
73
+ value: containsSymbol(goal, sym) ? 1 : 0,
74
+ });
75
+ }
76
+ // Booleanos derivados.
77
+ features.push({ name: 'hypInGoal', value: hypInGoal(state) ? 1 : 0 });
78
+ features.push({ name: 'hypEqualsGoal', value: hypEqualsGoal(state) ? 1 : 0 });
79
+ features.push({ name: 'goalIsEmpty', value: goal.trim().length === 0 ? 1 : 0 });
80
+ // Goal contiene `→`, `∧`, `∨` ya está cubierto arriba pero los
81
+ // duplicamos con nombres explícitos del spec para legibilidad y
82
+ // para que los tests que buscan estos nombres pasen.
83
+ features.push({ name: 'goalHasArrow', value: containsSymbol(goal, '→') ? 1 : 0 });
84
+ features.push({ name: 'goalHasAnd', value: containsSymbol(goal, '∧') ? 1 : 0 });
85
+ features.push({ name: 'goalHasOr', value: containsSymbol(goal, '∨') ? 1 : 0 });
86
+ return features;
87
+ }
88
+ /** Lista cerrada de feature names — útil para inicializar el modelo. */
89
+ function featureNames() {
90
+ const names = ['numHypotheses', 'goalDepth', 'goalLength'];
91
+ for (const sym of TOP_LEVEL_SYMBOLS)
92
+ names.push(`hasSymbol:${sym}`);
93
+ names.push('hypInGoal', 'hypEqualsGoal', 'goalIsEmpty');
94
+ names.push('goalHasArrow', 'goalHasAnd', 'goalHasOr');
95
+ return names;
96
+ }
97
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/features.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { ApplyTactic, Feature, ProofState, RankedTactic, RankingModel, SearchOptions, SearchResult, TacticRecord, } from './types';
2
+ export { extractFeatures, featureNames } from './features';
3
+ export { createEmptyModel, rankTactics, tacticSuccessProbability, trainModel, updateModel, } from './model';
4
+ export { guidedSearch } from './search';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/index.ts"],"names":[],"mappings":"AAWA,YAAY,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Guidance — ML-guided proof search
4
+ //
5
+ // Sistema de ranking de tácticas/lemas con feature extraction
6
+ // simple + logistic regression + beam search guiada.
7
+ //
8
+ // Sin dependencias externas, sin embeddings — todo deterministic
9
+ // y barato. Pensado para integrarse al agente IA del Agora como
10
+ // heurística previa a aplicar tácticas reales sobre ST.
11
+ // ============================================================
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.guidedSearch = exports.updateModel = exports.trainModel = exports.tacticSuccessProbability = exports.rankTactics = exports.createEmptyModel = exports.featureNames = exports.extractFeatures = void 0;
14
+ var features_1 = require("./features");
15
+ Object.defineProperty(exports, "extractFeatures", { enumerable: true, get: function () { return features_1.extractFeatures; } });
16
+ Object.defineProperty(exports, "featureNames", { enumerable: true, get: function () { return features_1.featureNames; } });
17
+ var model_1 = require("./model");
18
+ Object.defineProperty(exports, "createEmptyModel", { enumerable: true, get: function () { return model_1.createEmptyModel; } });
19
+ Object.defineProperty(exports, "rankTactics", { enumerable: true, get: function () { return model_1.rankTactics; } });
20
+ Object.defineProperty(exports, "tacticSuccessProbability", { enumerable: true, get: function () { return model_1.tacticSuccessProbability; } });
21
+ Object.defineProperty(exports, "trainModel", { enumerable: true, get: function () { return model_1.trainModel; } });
22
+ Object.defineProperty(exports, "updateModel", { enumerable: true, get: function () { return model_1.updateModel; } });
23
+ var search_1 = require("./search");
24
+ Object.defineProperty(exports, "guidedSearch", { enumerable: true, get: function () { return search_1.guidedSearch; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,6CAA6C;AAC7C,EAAE;AACF,8DAA8D;AAC9D,qDAAqD;AACrD,EAAE;AACF,iEAAiE;AACjE,gEAAgE;AAChE,wDAAwD;AACxD,+DAA+D;;;AAa/D,uCAA2D;AAAlD,2GAAA,eAAe,OAAA;AAAE,wGAAA,YAAY,OAAA;AAEtC,iCAMiB;AALf,yGAAA,gBAAgB,OAAA;AAChB,oGAAA,WAAW,OAAA;AACX,iHAAA,wBAAwB,OAAA;AACxB,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AAGb,mCAAwC;AAA/B,sGAAA,YAAY,OAAA"}
@@ -0,0 +1,42 @@
1
+ import type { ProofState, RankedTactic, RankingModel, TacticRecord } from './types';
2
+ /**
3
+ * Inicializa modelo vacío con feature names canónicos.
4
+ * Los pesos arrancan en 0 — equivalente a "uniform prior".
5
+ */
6
+ export declare function createEmptyModel(): RankingModel;
7
+ interface TrainOptions {
8
+ /** Pasadas sobre el dataset. Default: 50. */
9
+ epochs?: number;
10
+ /** Learning rate. Default: 0.1. */
11
+ learningRate?: number;
12
+ /** L2 regularization. Default: 0.001 — leve, evita pesos enormes. */
13
+ l2?: number;
14
+ }
15
+ /**
16
+ * Entrena un `RankingModel` via logistic regression mini-batch full-epoch.
17
+ *
18
+ * Para cada record: target = `successful ? 1 : 0`, ponderado por
19
+ * `1 / (1 + proofDepthRemaining ?? 0)` cuando está presente — tácticas
20
+ * que dejan menos profundidad pesan más.
21
+ *
22
+ * Las features son las de `extractFeatures(record.beforeState)`.
23
+ */
24
+ export declare function trainModel(records: TacticRecord[], opts?: TrainOptions): RankingModel;
25
+ /**
26
+ * Rankea candidatas por score descendente. Las tácticas sin pesos
27
+ * aprendidos reciben score 0 (bias 0 + features × 0) y quedan al
28
+ * final establemente (sort estable por index).
29
+ */
30
+ export declare function rankTactics(state: ProofState, model: RankingModel, candidates: string[]): RankedTactic[];
31
+ /**
32
+ * Update online: 1 paso de gradient descent con el record nuevo.
33
+ * Devuelve un modelo nuevo (no mutación in-place del Map original).
34
+ *
35
+ * Útil cuando el agente IA acaba de probar una táctica y queremos
36
+ * incorporar la señal sin re-entrenar desde cero.
37
+ */
38
+ export declare function updateModel(model: RankingModel, record: TacticRecord, learningRate?: number): RankingModel;
39
+ /** Probabilidad calibrada [0,1] de éxito según el modelo. */
40
+ export declare function tacticSuccessProbability(state: ProofState, model: RankingModel, tactic: string): number;
41
+ export {};
42
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/model.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAW,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgC7F;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAM/C;AAED,UAAU,YAAY;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,GAAE,YAAiB,GAAG,YAAY,CAuCzF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAAE,GACnB,YAAY,EAAE,CAchB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,EACpB,YAAY,SAAM,GACjB,YAAY,CA2Bd;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Proof Guidance — Modelo de ranking
4
+ //
5
+ // Aprende un peso por par (tactic, feature) via logistic regression
6
+ // con descenso por gradiente. Sin embeddings, sin librerías externas
7
+ // — todo en memoria, vectorizable a mano.
8
+ // ============================================================
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createEmptyModel = createEmptyModel;
11
+ exports.trainModel = trainModel;
12
+ exports.rankTactics = rankTactics;
13
+ exports.updateModel = updateModel;
14
+ exports.tacticSuccessProbability = tacticSuccessProbability;
15
+ const features_1 = require("./features");
16
+ const KEY_SEP = '::';
17
+ function weightKey(tactic, featureName) {
18
+ return `${tactic}${KEY_SEP}${featureName}`;
19
+ }
20
+ function sigmoid(z) {
21
+ // Clamp para evitar overflow numérico en exp().
22
+ if (z > 30)
23
+ return 1;
24
+ if (z < -30)
25
+ return 0;
26
+ return 1 / (1 + Math.exp(-z));
27
+ }
28
+ /**
29
+ * Score lineal de una táctica para un set de features.
30
+ * z = bias[tactic] + Σ_f weights[tactic, f] * featureValue.
31
+ */
32
+ function linearScore(tactic, features, model) {
33
+ let z = model.bias.get(tactic) ?? 0;
34
+ for (const f of features) {
35
+ const w = model.weights.get(weightKey(tactic, f.name));
36
+ if (w !== undefined)
37
+ z += w * f.value;
38
+ }
39
+ return z;
40
+ }
41
+ /**
42
+ * Inicializa modelo vacío con feature names canónicos.
43
+ * Los pesos arrancan en 0 — equivalente a "uniform prior".
44
+ */
45
+ function createEmptyModel() {
46
+ return {
47
+ features: (0, features_1.featureNames)(),
48
+ weights: new Map(),
49
+ bias: new Map(),
50
+ };
51
+ }
52
+ /**
53
+ * Entrena un `RankingModel` via logistic regression mini-batch full-epoch.
54
+ *
55
+ * Para cada record: target = `successful ? 1 : 0`, ponderado por
56
+ * `1 / (1 + proofDepthRemaining ?? 0)` cuando está presente — tácticas
57
+ * que dejan menos profundidad pesan más.
58
+ *
59
+ * Las features son las de `extractFeatures(record.beforeState)`.
60
+ */
61
+ function trainModel(records, opts = {}) {
62
+ const epochs = opts.epochs ?? 50;
63
+ const lr = opts.learningRate ?? 0.1;
64
+ const l2 = opts.l2 ?? 0.001;
65
+ const model = createEmptyModel();
66
+ if (records.length === 0)
67
+ return model;
68
+ // Pre-extraemos features por record (1 vez, no por epoch).
69
+ const extracted = records.map((r) => ({
70
+ tactic: r.tactic,
71
+ features: (0, features_1.extractFeatures)(r.beforeState),
72
+ target: r.successful ? 1 : 0,
73
+ weight: r.proofDepthRemaining !== undefined ? 1 / (1 + Math.max(0, r.proofDepthRemaining)) : 1,
74
+ }));
75
+ for (let epoch = 0; epoch < epochs; epoch++) {
76
+ for (const sample of extracted) {
77
+ const z = linearScore(sample.tactic, sample.features, model);
78
+ const p = sigmoid(z);
79
+ const error = (p - sample.target) * sample.weight;
80
+ // Gradiente por feature.
81
+ for (const f of sample.features) {
82
+ const key = weightKey(sample.tactic, f.name);
83
+ const w = model.weights.get(key) ?? 0;
84
+ const grad = error * f.value + l2 * w;
85
+ model.weights.set(key, w - lr * grad);
86
+ }
87
+ // Gradiente del bias.
88
+ const b = model.bias.get(sample.tactic) ?? 0;
89
+ const gradB = error + l2 * b;
90
+ model.bias.set(sample.tactic, b - lr * gradB);
91
+ }
92
+ }
93
+ return model;
94
+ }
95
+ /**
96
+ * Rankea candidatas por score descendente. Las tácticas sin pesos
97
+ * aprendidos reciben score 0 (bias 0 + features × 0) y quedan al
98
+ * final establemente (sort estable por index).
99
+ */
100
+ function rankTactics(state, model, candidates) {
101
+ const features = (0, features_1.extractFeatures)(state);
102
+ const scored = candidates.map((tactic, idx) => ({
103
+ tactic,
104
+ score: linearScore(tactic, features, model),
105
+ idx,
106
+ }));
107
+ scored.sort((a, b) => {
108
+ if (b.score !== a.score)
109
+ return b.score - a.score;
110
+ return a.idx - b.idx; // tie-break determinístico.
111
+ });
112
+ return scored.map(({ tactic, score }) => ({ tactic, score }));
113
+ }
114
+ /**
115
+ * Update online: 1 paso de gradient descent con el record nuevo.
116
+ * Devuelve un modelo nuevo (no mutación in-place del Map original).
117
+ *
118
+ * Útil cuando el agente IA acaba de probar una táctica y queremos
119
+ * incorporar la señal sin re-entrenar desde cero.
120
+ */
121
+ function updateModel(model, record, learningRate = 0.1) {
122
+ const next = {
123
+ features: model.features,
124
+ weights: new Map(model.weights),
125
+ bias: new Map(model.bias),
126
+ };
127
+ const features = (0, features_1.extractFeatures)(record.beforeState);
128
+ const target = record.successful ? 1 : 0;
129
+ const sampleWeight = record.proofDepthRemaining !== undefined
130
+ ? 1 / (1 + Math.max(0, record.proofDepthRemaining))
131
+ : 1;
132
+ const z = linearScore(record.tactic, features, next);
133
+ const p = sigmoid(z);
134
+ const error = (p - target) * sampleWeight;
135
+ for (const f of features) {
136
+ const key = weightKey(record.tactic, f.name);
137
+ const w = next.weights.get(key) ?? 0;
138
+ next.weights.set(key, w - learningRate * error * f.value);
139
+ }
140
+ const b = next.bias.get(record.tactic) ?? 0;
141
+ next.bias.set(record.tactic, b - learningRate * error);
142
+ return next;
143
+ }
144
+ /** Probabilidad calibrada [0,1] de éxito según el modelo. */
145
+ function tacticSuccessProbability(state, model, tactic) {
146
+ const features = (0, features_1.extractFeatures)(state);
147
+ return sigmoid(linearScore(tactic, features, model));
148
+ }
149
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ApplyTactic, ProofState, RankingModel, SearchOptions, SearchResult } from './types';
2
+ /**
3
+ * Beam search guiado por el modelo. `applyTactic` define la semántica
4
+ * de cada táctica — el módulo no asume nada sobre la lógica de fondo.
5
+ */
6
+ export declare function guidedSearch(initialState: ProofState, applyTactic: ApplyTactic, model: RankingModel, candidates: string[], opts?: SearchOptions): SearchResult;
7
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tooling/proof-guidance/search.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EAEb,MAAM,SAAS,CAAC;AA+BjB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,UAAU,EACxB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,GAAE,aAAkB,GACvB,YAAY,CAyEd"}