@stevenvo780/st-lang 4.4.0 → 4.5.1

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 (158) hide show
  1. package/README.md +78 -37
  2. package/dist/coinduction/index.d.ts +136 -0
  3. package/dist/coinduction/index.d.ts.map +1 -0
  4. package/dist/coinduction/index.js +318 -0
  5. package/dist/coinduction/index.js.map +1 -0
  6. package/dist/combinators-ski/abstract.d.ts +5 -0
  7. package/dist/combinators-ski/abstract.d.ts.map +1 -0
  8. package/dist/combinators-ski/abstract.js +88 -0
  9. package/dist/combinators-ski/abstract.js.map +1 -0
  10. package/dist/combinators-ski/index.d.ts +6 -0
  11. package/dist/combinators-ski/index.d.ts.map +1 -0
  12. package/dist/combinators-ski/index.js +30 -0
  13. package/dist/combinators-ski/index.js.map +1 -0
  14. package/dist/combinators-ski/reduce.d.ts +10 -0
  15. package/dist/combinators-ski/reduce.d.ts.map +1 -0
  16. package/dist/combinators-ski/reduce.js +118 -0
  17. package/dist/combinators-ski/reduce.js.map +1 -0
  18. package/dist/combinators-ski/types.d.ts +23 -0
  19. package/dist/combinators-ski/types.d.ts.map +1 -0
  20. package/dist/combinators-ski/types.js +102 -0
  21. package/dist/combinators-ski/types.js.map +1 -0
  22. package/dist/constructive-reals/index.d.ts +132 -0
  23. package/dist/constructive-reals/index.d.ts.map +1 -0
  24. package/dist/constructive-reals/index.js +723 -0
  25. package/dist/constructive-reals/index.js.map +1 -0
  26. package/dist/game-semantics/convert.d.ts +4 -0
  27. package/dist/game-semantics/convert.d.ts.map +1 -0
  28. package/dist/game-semantics/convert.js +28 -0
  29. package/dist/game-semantics/convert.js.map +1 -0
  30. package/dist/game-semantics/index.d.ts +6 -0
  31. package/dist/game-semantics/index.d.ts.map +1 -0
  32. package/dist/game-semantics/index.js +28 -0
  33. package/dist/game-semantics/index.js.map +1 -0
  34. package/dist/game-semantics/strategy.d.ts +34 -0
  35. package/dist/game-semantics/strategy.d.ts.map +1 -0
  36. package/dist/game-semantics/strategy.js +336 -0
  37. package/dist/game-semantics/strategy.js.map +1 -0
  38. package/dist/game-semantics/types.d.ts +64 -0
  39. package/dist/game-semantics/types.d.ts.map +1 -0
  40. package/dist/game-semantics/types.js +78 -0
  41. package/dist/game-semantics/types.js.map +1 -0
  42. package/dist/higher-order-unify/index.d.ts +5 -0
  43. package/dist/higher-order-unify/index.d.ts.map +1 -0
  44. package/dist/higher-order-unify/index.js +27 -0
  45. package/dist/higher-order-unify/index.js.map +1 -0
  46. package/dist/higher-order-unify/normalize.d.ts +14 -0
  47. package/dist/higher-order-unify/normalize.d.ts.map +1 -0
  48. package/dist/higher-order-unify/normalize.js +191 -0
  49. package/dist/higher-order-unify/normalize.js.map +1 -0
  50. package/dist/higher-order-unify/pattern.d.ts +4 -0
  51. package/dist/higher-order-unify/pattern.d.ts.map +1 -0
  52. package/dist/higher-order-unify/pattern.js +70 -0
  53. package/dist/higher-order-unify/pattern.js.map +1 -0
  54. package/dist/higher-order-unify/types.d.ts +19 -0
  55. package/dist/higher-order-unify/types.d.ts.map +1 -0
  56. package/dist/higher-order-unify/types.js +14 -0
  57. package/dist/higher-order-unify/types.js.map +1 -0
  58. package/dist/higher-order-unify/unify.d.ts +5 -0
  59. package/dist/higher-order-unify/unify.d.ts.map +1 -0
  60. package/dist/higher-order-unify/unify.js +306 -0
  61. package/dist/higher-order-unify/unify.js.map +1 -0
  62. package/dist/index.d.ts +10 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +40 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/nbe/index.d.ts +3 -0
  67. package/dist/nbe/index.d.ts.map +1 -0
  68. package/dist/nbe/index.js +25 -0
  69. package/dist/nbe/index.js.map +1 -0
  70. package/dist/nbe/nbe.d.ts +7 -0
  71. package/dist/nbe/nbe.d.ts.map +1 -0
  72. package/dist/nbe/nbe.js +118 -0
  73. package/dist/nbe/nbe.js.map +1 -0
  74. package/dist/nbe/types.d.ts +54 -0
  75. package/dist/nbe/types.d.ts.map +1 -0
  76. package/dist/nbe/types.js +117 -0
  77. package/dist/nbe/types.js.map +1 -0
  78. package/dist/profile-bridge/index.d.ts +64 -0
  79. package/dist/profile-bridge/index.d.ts.map +1 -0
  80. package/dist/profile-bridge/index.js +328 -0
  81. package/dist/profile-bridge/index.js.map +1 -0
  82. package/dist/proof-nets/construct.d.ts +3 -0
  83. package/dist/proof-nets/construct.d.ts.map +1 -0
  84. package/dist/proof-nets/construct.js +85 -0
  85. package/dist/proof-nets/construct.js.map +1 -0
  86. package/dist/proof-nets/correctness.d.ts +3 -0
  87. package/dist/proof-nets/correctness.d.ts.map +1 -0
  88. package/dist/proof-nets/correctness.js +213 -0
  89. package/dist/proof-nets/correctness.js.map +1 -0
  90. package/dist/proof-nets/cut-elim.d.ts +9 -0
  91. package/dist/proof-nets/cut-elim.d.ts.map +1 -0
  92. package/dist/proof-nets/cut-elim.js +149 -0
  93. package/dist/proof-nets/cut-elim.js.map +1 -0
  94. package/dist/proof-nets/index.d.ts +6 -0
  95. package/dist/proof-nets/index.d.ts.map +1 -0
  96. package/dist/proof-nets/index.js +33 -0
  97. package/dist/proof-nets/index.js.map +1 -0
  98. package/dist/proof-nets/types.d.ts +36 -0
  99. package/dist/proof-nets/types.d.ts.map +1 -0
  100. package/dist/proof-nets/types.js +89 -0
  101. package/dist/proof-nets/types.js.map +1 -0
  102. package/dist/tableau-framework/TableauProver.d.ts +10 -0
  103. package/dist/tableau-framework/TableauProver.d.ts.map +1 -0
  104. package/dist/tableau-framework/TableauProver.js +118 -0
  105. package/dist/tableau-framework/TableauProver.js.map +1 -0
  106. package/dist/tableau-framework/index.d.ts +5 -0
  107. package/dist/tableau-framework/index.d.ts.map +1 -0
  108. package/dist/tableau-framework/index.js +11 -0
  109. package/dist/tableau-framework/index.js.map +1 -0
  110. package/dist/tableau-framework/propositional.d.ts +11 -0
  111. package/dist/tableau-framework/propositional.d.ts.map +1 -0
  112. package/dist/tableau-framework/propositional.js +143 -0
  113. package/dist/tableau-framework/propositional.js.map +1 -0
  114. package/dist/tableau-framework/types.d.ts +32 -0
  115. package/dist/tableau-framework/types.d.ts.map +1 -0
  116. package/dist/tableau-framework/types.js +6 -0
  117. package/dist/tableau-framework/types.js.map +1 -0
  118. package/dist/tests/coinduction/coinduction.test.d.ts +2 -0
  119. package/dist/tests/coinduction/coinduction.test.d.ts.map +1 -0
  120. package/dist/tests/coinduction/coinduction.test.js +217 -0
  121. package/dist/tests/coinduction/coinduction.test.js.map +1 -0
  122. package/dist/tests/combinators-ski/combinators-ski.test.d.ts +2 -0
  123. package/dist/tests/combinators-ski/combinators-ski.test.d.ts.map +1 -0
  124. package/dist/tests/combinators-ski/combinators-ski.test.js +211 -0
  125. package/dist/tests/combinators-ski/combinators-ski.test.js.map +1 -0
  126. package/dist/tests/constructive-reals/constructive-reals.test.d.ts +2 -0
  127. package/dist/tests/constructive-reals/constructive-reals.test.d.ts.map +1 -0
  128. package/dist/tests/constructive-reals/constructive-reals.test.js +357 -0
  129. package/dist/tests/constructive-reals/constructive-reals.test.js.map +1 -0
  130. package/dist/tests/game-semantics/game-semantics.test.d.ts +2 -0
  131. package/dist/tests/game-semantics/game-semantics.test.d.ts.map +1 -0
  132. package/dist/tests/game-semantics/game-semantics.test.js +143 -0
  133. package/dist/tests/game-semantics/game-semantics.test.js.map +1 -0
  134. package/dist/tests/higher-order-unify/ho-unify.test.d.ts +2 -0
  135. package/dist/tests/higher-order-unify/ho-unify.test.d.ts.map +1 -0
  136. package/dist/tests/higher-order-unify/ho-unify.test.js +264 -0
  137. package/dist/tests/higher-order-unify/ho-unify.test.js.map +1 -0
  138. package/dist/tests/integration/cross-modules.test.d.ts +8 -0
  139. package/dist/tests/integration/cross-modules.test.d.ts.map +1 -0
  140. package/dist/tests/integration/cross-modules.test.js +668 -0
  141. package/dist/tests/integration/cross-modules.test.js.map +1 -0
  142. package/dist/tests/nbe/nbe.test.d.ts +2 -0
  143. package/dist/tests/nbe/nbe.test.d.ts.map +1 -0
  144. package/dist/tests/nbe/nbe.test.js +121 -0
  145. package/dist/tests/nbe/nbe.test.js.map +1 -0
  146. package/dist/tests/profile-bridge/translations.test.d.ts +2 -0
  147. package/dist/tests/profile-bridge/translations.test.d.ts.map +1 -0
  148. package/dist/tests/profile-bridge/translations.test.js +266 -0
  149. package/dist/tests/profile-bridge/translations.test.js.map +1 -0
  150. package/dist/tests/proof-nets/proof-nets.test.d.ts +2 -0
  151. package/dist/tests/proof-nets/proof-nets.test.d.ts.map +1 -0
  152. package/dist/tests/proof-nets/proof-nets.test.js +263 -0
  153. package/dist/tests/proof-nets/proof-nets.test.js.map +1 -0
  154. package/dist/tests/tableau-framework/tableau.test.d.ts +2 -0
  155. package/dist/tests/tableau-framework/tableau.test.d.ts.map +1 -0
  156. package/dist/tests/tableau-framework/tableau.test.js +196 -0
  157. package/dist/tests/tableau-framework/tableau.test.js.map +1 -0
  158. package/package.json +2 -1
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Higher-order unification — Algoritmo de unificación Miller
4
+ // ============================================================
5
+ //
6
+ // Implementa el fragmento de patrón de la unificación de orden superior.
7
+ // Referencia: Dale Miller, "A Logic Programming Language with Lambda
8
+ // Abstraction, Function Variables, and Simple Unification", 1991.
9
+ //
10
+ // Garantías del fragmento de patrón:
11
+ // - Decidible (siempre termina).
12
+ // - Unicidad: si existe unificador, existe un único MGU (most general
13
+ // unifier) módulo α-equivalencia.
14
+ //
15
+ // Manejo de terms no-patrón:
16
+ // Los pares que involucran meta-variables aplicadas a no-variables o
17
+ // variables repetidas/libres se rechazan (retornan null) para mantener
18
+ // la decidibilidad. Ver `isPattern` en pattern.ts.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.unifyPattern = unifyPattern;
21
+ exports.buildLambdaBinding = buildLambdaBinding;
22
+ exports.unifyMetaApp = unifyMetaApp;
23
+ const normalize_1 = require("./normalize");
24
+ const pattern_1 = require("./pattern");
25
+ // Unifica dos HOTerms usando el algoritmo de patrón Miller.
26
+ // Devuelve la sustitución de meta-variables (MGU) o null si no unifican.
27
+ function unifyPattern(t1, t2) {
28
+ const subst = {};
29
+ const ok = unify((0, normalize_1.normalize)(t1), (0, normalize_1.normalize)(t2), subst, new Map(), new Map());
30
+ return ok ? subst : null;
31
+ }
32
+ // Función recursiva de unificación.
33
+ // `envL` / `envR` mapean nombres de variables ligadas a índices de De Bruijn
34
+ // para comparación α-invariante de variables ligadas.
35
+ function unify(t1, t2, subst, envL, envR) {
36
+ // Expandir meta-variables si ya tienen binding
37
+ const s1 = deref(t1, subst);
38
+ const s2 = deref(t2, subst);
39
+ // Ambas son meta iguales sin binding → trivialmente iguales
40
+ if (s1.kind === 'meta' && s2.kind === 'meta' && s1.name === s2.name)
41
+ return true;
42
+ // Meta del lado izquierdo
43
+ if (s1.kind === 'meta') {
44
+ return bindMeta(s1.name, s2, subst, envR);
45
+ }
46
+ // Meta del lado derecho
47
+ if (s2.kind === 'meta') {
48
+ return bindMeta(s2.name, s1, subst, envL);
49
+ }
50
+ // Variables libres/ligadas
51
+ if (s1.kind === 'var' && s2.kind === 'var') {
52
+ const i1 = envL.get(s1.name);
53
+ const i2 = envR.get(s2.name);
54
+ if (i1 !== undefined && i2 !== undefined)
55
+ return i1 === i2; // ambas ligadas
56
+ if (i1 === undefined && i2 === undefined)
57
+ return s1.name === s2.name; // ambas libres
58
+ return false; // una ligada, una libre
59
+ }
60
+ // Abstracciones: introducir binder fresco para comparación
61
+ if (s1.kind === 'abs' && s2.kind === 'abs') {
62
+ const idx = envL.size; // índice único para este nivel de ligado
63
+ const newEnvL = new Map(envL);
64
+ newEnvL.set(s1.param, idx);
65
+ const newEnvR = new Map(envR);
66
+ newEnvR.set(s2.param, idx);
67
+ return unify(s1.body, s2.body, subst, newEnvL, newEnvR);
68
+ }
69
+ // Aplicaciones: detectar el caso Miller (meta aplicada a vars ligadas)
70
+ if (s1.kind === 'app' || s2.kind === 'app') {
71
+ const f1 = s1.kind === 'app' ? flatHead(s1) : { fn: s1, args: [] };
72
+ const f2 = s2.kind === 'app' ? flatHead(s2) : { fn: s2, args: [] };
73
+ // Caso Miller: meta en cabeza de una app
74
+ // Verificamos la condición de patrón: args deben ser variables ligadas distintas
75
+ if (f1.fn.kind === 'meta' && f1.fn !== f2.fn) {
76
+ if (!isMetaPatternApp(f1.args, envL))
77
+ return false;
78
+ return bindMetaApp(f1.fn.name, f1.args, s2, subst, envL, envR);
79
+ }
80
+ if (f2.fn.kind === 'meta' && f2.fn !== f1.fn) {
81
+ if (!isMetaPatternApp(f2.args, envR))
82
+ return false;
83
+ return bindMetaApp(f2.fn.name, f2.args, s1, subst, envR, envL);
84
+ }
85
+ // Caso rigid-rigid: ambas cabezas son constructores concretos
86
+ if (s1.kind === 'app' && s2.kind === 'app') {
87
+ if (!unify(f1.fn, f2.fn, subst, envL, envR))
88
+ return false;
89
+ if (f1.args.length !== f2.args.length)
90
+ return false;
91
+ for (let i = 0; i < f1.args.length; i++) {
92
+ if (!unify(f1.args[i], f2.args[i], subst, envL, envR))
93
+ return false;
94
+ }
95
+ return true;
96
+ }
97
+ }
98
+ return false; // kinds distintos, no se unifican
99
+ }
100
+ // Verifica que los args de una app con cabeza meta son todas variables
101
+ // ligadas y distintas (condición de patrón Miller).
102
+ function isMetaPatternApp(args, env) {
103
+ const seen = new Set();
104
+ for (const a of args) {
105
+ if (a.kind !== 'var')
106
+ return false;
107
+ const idx = env.get(a.name);
108
+ if (idx === undefined)
109
+ return false; // variable libre, no ligada
110
+ if (seen.has(idx))
111
+ return false; // repetida
112
+ seen.add(idx);
113
+ }
114
+ return true;
115
+ }
116
+ // Resuelve el caso Miller: metaName aplicado a [y₁…yₙ] (vars ligadas distintas)
117
+ // debe unificar con `rhs`. Construye M ↦ λy₁…yₙ. rhs' donde rhs' es rhs
118
+ // expresado en términos de los parámetros formales.
119
+ // envMeta es el entorno del lado donde vive la meta; envRhs es el del rhs.
120
+ function bindMetaApp(metaName, metaArgs, rhs, subst, envMeta, envRhs) {
121
+ // Los parámetros formales de la lambda que vamos a construir son
122
+ // los nombres reales de las vars ligadas (de izquierda a derecha).
123
+ const params = metaArgs.map((a) => a.name);
124
+ // Para construir el binding correcto de M, necesitamos reescribir `rhs`
125
+ // sustituyendo las variables del envRhs que corresponden a los params
126
+ // de envMeta por los mismos nombres que usaremos en la lambda.
127
+ // En el caso más simple (mismo conjunto de binders) es la identidad.
128
+ // Construimos: M ↦ λp₁…pₙ. rhs_reescrito
129
+ const lambda = buildLambdaForMeta(params, rhs, envMeta, envRhs);
130
+ if (lambda === null)
131
+ return false;
132
+ // Occurs check
133
+ if (metaOccurs(metaName, lambda, subst))
134
+ return false;
135
+ subst[metaName] = lambda;
136
+ return true;
137
+ }
138
+ // Construye λp₁…pₙ. body donde body es `rhs` con las variables ligadas
139
+ // de envRhs que tienen el mismo índice que los params en envMeta
140
+ // renombradas a p₁…pₙ.
141
+ function buildLambdaForMeta(params, rhs, envMeta, envRhs) {
142
+ // Mapeamos índices de De Bruijn del meta → nombre de param formal
143
+ const idxToParam = new Map();
144
+ for (const p of params) {
145
+ const idx = envMeta.get(p);
146
+ if (idx === undefined)
147
+ return null;
148
+ idxToParam.set(idx, p);
149
+ }
150
+ // Renombramos en rhs las variables ligadas cuyos índices correspondan
151
+ // a los parámetros de la meta.
152
+ const body = renameByIndex(rhs, envRhs, idxToParam);
153
+ if (body === null)
154
+ return null;
155
+ // Construir λp₁. λp₂. … body
156
+ let result = body;
157
+ for (let i = params.length - 1; i >= 0; i--) {
158
+ result = { kind: 'abs', param: params[i], body: result };
159
+ }
160
+ return result;
161
+ }
162
+ // Renombra las variables libres de `t` (en el sentido de `env`) que tienen
163
+ // un índice en `idxToParam` con el nombre param correspondiente.
164
+ // Devuelve null si alguna variable ligada del scope local no está en
165
+ // idxToParam (implicaría que rhs menciona una variable local que no es
166
+ // argumento del meta → escapa de scope).
167
+ function renameByIndex(t, env, idxToParam) {
168
+ switch (t.kind) {
169
+ case 'meta':
170
+ return t;
171
+ case 'var': {
172
+ const idx = env.get(t.name);
173
+ if (idx === undefined)
174
+ return t; // variable libre del objeto-lenguaje: OK
175
+ const param = idxToParam.get(idx);
176
+ if (param === undefined)
177
+ return null; // ligada local no en scope del meta: escapa
178
+ return { kind: 'var', name: param };
179
+ }
180
+ case 'abs': {
181
+ // El param del abs introduce un índice nuevo; no lo incluimos en env
182
+ // (o usamos un índice negativo para "más interno")
183
+ const newEnv = new Map(env);
184
+ // Damos un índice fresco negativo para indicar "ligada más internamente"
185
+ // que todas las del contexto actual → nunca está en idxToParam.
186
+ const innerIdx = -(newEnv.size + 1);
187
+ newEnv.set(t.param, innerIdx);
188
+ const b = renameByIndex(t.body, newEnv, idxToParam);
189
+ if (b === null)
190
+ return null;
191
+ return { kind: 'abs', param: t.param, body: b };
192
+ }
193
+ case 'app': {
194
+ const fn = renameByIndex(t.fn, env, idxToParam);
195
+ if (fn === null)
196
+ return null;
197
+ const args = [];
198
+ for (const a of t.args) {
199
+ const a2 = renameByIndex(a, env, idxToParam);
200
+ if (a2 === null)
201
+ return null;
202
+ args.push(a2);
203
+ }
204
+ return { kind: 'app', fn, args };
205
+ }
206
+ }
207
+ }
208
+ // Aplana app anidadas para facilitar comparación cabeza-argumentos.
209
+ function flatHead(t) {
210
+ if (t.kind !== 'app')
211
+ return { fn: t, args: [] };
212
+ const inner = flatHead(t.fn);
213
+ return { fn: inner.fn, args: [...inner.args, ...t.args] };
214
+ }
215
+ // Expande una meta-variable si tiene binding en subst.
216
+ function deref(t, subst) {
217
+ if (t.kind === 'meta') {
218
+ const binding = subst[t.name];
219
+ if (binding !== undefined)
220
+ return deref((0, normalize_1.normalize)((0, normalize_1.applyHOSubst)(binding, subst)), subst);
221
+ }
222
+ return t;
223
+ }
224
+ // Intenta ligar la meta-variable `metaName` al término `value`.
225
+ // `env` es el entorno de variables ligadas del lado donde vive `value`.
226
+ function bindMeta(metaName, value, subst, env) {
227
+ // Occurs check: la meta no puede aparecer en su propio binding
228
+ if (metaOccurs(metaName, value, subst))
229
+ return false;
230
+ // Verificar que el valor es un pattern en el contexto dado
231
+ // (necesitamos reconstruir el scope de variables ligadas desde `env`)
232
+ const boundScope = new Set(env.keys());
233
+ if (!(0, pattern_1.isPattern)(value, boundScope))
234
+ return false;
235
+ // El binding debe ser cerrado: las variables libres del valor deben
236
+ // estar disponibles en el scope del meta (conservador: aceptamos si
237
+ // las FV son todas libres en el objeto-lenguaje, no ligadas locales
238
+ // que no estarán en scope del meta).
239
+ // Para el fragmento de patrón el check de scope es:
240
+ // FV(value) ∩ bound_vars_local = ∅ (variables ligadas localmente
241
+ // no pueden escapar a través del meta).
242
+ // En nuestro caso `env` contiene exactamente las variables ligadas del
243
+ // lado donde nace `value`; las FV del value que NO están en `env` son
244
+ // variables libres del objeto-lenguaje, que sí pueden aparecer en el
245
+ // binding del meta.
246
+ const fv = (0, normalize_1.freeVarsHO)(value);
247
+ for (const v of fv) {
248
+ if (env.has(v))
249
+ return false; // variable ligada local escapa → rechazar
250
+ }
251
+ subst[metaName] = value;
252
+ return true;
253
+ }
254
+ // ¿La meta `name` aparece (directa o transitivamente) en `t`?
255
+ function metaOccurs(name, t, subst) {
256
+ switch (t.kind) {
257
+ case 'var':
258
+ return false;
259
+ case 'meta': {
260
+ if (t.name === name)
261
+ return true;
262
+ const binding = subst[t.name];
263
+ return binding !== undefined ? metaOccurs(name, binding, subst) : false;
264
+ }
265
+ case 'abs':
266
+ return metaOccurs(name, t.body, subst);
267
+ case 'app':
268
+ if (metaOccurs(name, t.fn, subst))
269
+ return true;
270
+ for (const a of t.args) {
271
+ if (metaOccurs(name, a, subst))
272
+ return true;
273
+ }
274
+ return false;
275
+ }
276
+ }
277
+ // ---- Utilidad: proyección inversa para meta aplicada a variables ----
278
+ //
279
+ // Cuando se une M[y₁…yₙ] ≈ body (pattern case), el MGU es
280
+ // M ↦ λy₁…yₙ. body
281
+ // Esta función construye ese lambda dado el binding encontrado.
282
+ function buildLambdaBinding(params, body, avoidNames) {
283
+ // Usamos los params tal cual; si hay conflictos de nombres en body,
284
+ // la sustitución capture-avoiding de applyHOSubst se encarga.
285
+ let result = body;
286
+ for (let i = params.length - 1; i >= 0; i--) {
287
+ const p = params[i];
288
+ result = { kind: 'abs', param: p, body: result };
289
+ }
290
+ void avoidNames; // reservado para extensión
291
+ return result;
292
+ }
293
+ // Unifica M aplicada a variables ligadas con un cuerpo.
294
+ // Caso central del fragmento Miller: (M y₁ … yₙ) ≈ body
295
+ // donde yᵢ son variables ligadas distintas.
296
+ // Retorna HOSubst con M ↦ λy₁…yₙ. body, o null si no es patrón.
297
+ function unifyMetaApp(metaName, boundVars, body) {
298
+ // Verificar que boundVars son distintos
299
+ if (new Set(boundVars).size !== boundVars.length)
300
+ return null;
301
+ // Construir la abstracción
302
+ const avoid = (0, normalize_1.allNamesHO)(body);
303
+ const lambda = buildLambdaBinding(boundVars, body, avoid);
304
+ return { [metaName]: lambda };
305
+ }
306
+ //# sourceMappingURL=unify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unify.js","sourceRoot":"","sources":["../../src/higher-order-unify/unify.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -61,4 +61,14 @@ export { mVar, mUniverse, mPi, mLam, mApp, mSigma, mPair, mFst, mSnd, mId, mRefl
61
61
  export type { MLTTTerm, InferContext as MLTTInferContext, InferResult as MLTTInferResult, } from './mltt';
62
62
  export { v as lcVar, lam as lcLam, ap as lcAp, apN as lcApN, alphaEq as lcAlphaEq, termToString as lcTermToString, freeVars as lcFreeVars, substitute as lcSubstitute, alphaRename as lcAlphaRename, makeFreshSupply as lcMakeFreshSupply, betaStep as lcBetaStep, etaStep as lcEtaStep, normalize as lcNormalize, isNormalForm as lcIsNormalForm, isWeakHeadNormalForm as lcIsWHNF, I as lcI, K as lcK, S as lcS, Y as lcY, omega as lcOmega, omegaSmall as lcOmegaSmall, churchNumeral as lcChurchNumeral, decodeChurch as lcDecodeChurch, evalChurch as lcEvalChurch, churchSucc as lcChurchSucc, churchAdd as lcChurchAdd, churchMul as lcChurchMul, } from './lambda-calc';
63
63
  export type { Term as LCTerm, BetaStrategy as LCBetaStrategy, NormalStrategy as LCNormalStrategy, NormalizeOpts as LCNormalizeOpts, NormalizeResult as LCNormalizeResult, } from './lambda-calc';
64
+ export { glivenkoTranslation, godelTranslation, ltlToCTL, ctlToLTL, findTranslationPath, translateFormula, TRANSLATIONS, } from './profile-bridge';
65
+ export type { Profile, GenericFormula, Translation } from './profile-bridge';
66
+ export { TableauProver, createPropositionalProver } from './tableau-framework';
67
+ export type { TableauNode, TableauBranch, Tableau, Rule, ClosureCondition, } from './tableau-framework';
68
+ export { winningStrategy, play, ipcAtom, ipcAnd, ipcOr, ipcImplies, ipcNot, ipcBottom, } from './game-semantics';
69
+ export type { IPCFormula, Player, Move, GameState } from './game-semantics';
70
+ export { take as streamTake, repeat as streamRepeat, iterate as streamIterate, map as streamMap, zipWith as streamZipWith, naturals, fibonacci, isBisimilar, } from './coinduction';
71
+ export type { Stream, BisimulationProof } from './coinduction';
72
+ export { isPattern as hoIsPattern, isHigherOrderPattern, unifyPattern as hoUnifyPattern, applyHOSubst, } from './higher-order-unify';
73
+ export type { HOTerm, HOSubst } from './higher-order-unify';
64
74
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.TypeChecker = exports.typeCheck = exports.REPL = exports.ProtocolHandler = exports.Interpreter = exports.CycleError = exports.ClaimGraph = exports.registerInterpretation = exports.registerSource = exports.registerDefinition = exports.compileClaimsToTheory = exports.registerContext = exports.registerConfidence = exports.registerSupport = exports.registerClaim = exports.registerFormalization = exports.registerPassage = exports.parseAnchorPath = exports.createTextLayerState = exports.detectFallacies = exports.formulaToLaTeX = exports.formulaToUnicode = exports.PARALLEL_THRESHOLD = exports.workersAvailable = exports.dpllAsync = exports.dpll = exports.cdclAsync = exports.cdcl = exports.ParaconsistentBelnap = exports.ModalK = exports.ClassicalFirstOrder = exports.formulaToString = exports.ClassicalPropositional = exports.registry = exports.ProfileRegistry = exports.Parser = exports.KEYWORDS = exports.TokenType = exports.Lexer = exports.render = exports.completion = exports.gotoDefinition = exports.symbols = exports.hover = exports.listProfiles = exports.createInterpreter = exports.quickEval = exports.check = exports.parse = exports.evaluate = void 0;
21
21
  exports.proofIsConsistent = exports.proofToTerm = exports.termToProof = exports.isNormal = exports.normalize = exports.reduceBeta = exports.isInferError = exports.inferType = exports.explainProof = exports.deriveWithCitations = exports.detectAvailableSMT = exports.SubprocessSMTBackend = exports.MockSMTBackend = exports.toSMTLIB = exports.generateLessonPath = exports.checkAnswer = exports.generateExercise = exports.SnapshotStore = exports.captureSnapshot = exports.generateKeyPair = exports.verifyProof = exports.signProof = exports.hashProof = exports.canonicalize = exports.toCNF = exports.skolemize = exports.unify = exports.proveFOL = exports.dotExport = exports.defends = exports.isConflictFree = exports.isAdmissible = exports.computeExtensions = exports.exportProofToCoq = exports.exportToCoq = exports.removeUnusedSubproofs = exports.compactModusPonensChain = exports.minifyProof = exports.minimizeCountermodel = exports.streamEval = exports.tryReuseProof = exports.TheoremCache = exports.hashFormula = exports.DerivationCache = exports.shutdownPool = exports.evalParallel = exports.solveCDCLv2 = exports.BaseASTVisitor = exports.visitProgram = exports.visit = void 0;
22
22
  exports.lcY = exports.lcS = exports.lcK = exports.lcI = exports.lcIsWHNF = exports.lcIsNormalForm = exports.lcNormalize = exports.lcEtaStep = exports.lcBetaStep = exports.lcMakeFreshSupply = exports.lcAlphaRename = exports.lcSubstitute = exports.lcFreeVars = exports.lcTermToString = exports.lcAlphaEq = exports.lcApN = exports.lcAp = exports.lcLam = exports.lcVar = exports.mlttTermToString = exports.mlttOccursFree = exports.mlttFreeVars = exports.mlttSubstitute = exports.mlttAlphaBetaEq = exports.mlttAlphaEq = exports.mlttIsNormal = exports.mlttReduceStep = exports.mlttNormalize = exports.mlttIsInferError = exports.mlttCheckType = exports.mlttInferType = exports.mArrow = exports.mSucc = exports.mZero = exports.mNat = exports.mRefl = exports.mId = exports.mSnd = exports.mFst = exports.mPair = exports.mSigma = exports.mApp = exports.mLam = exports.mPi = exports.mUniverse = exports.mVar = exports.chEqType = exports.chTermToString = exports.chTypeToString = exports.ProofConversionError = void 0;
23
- exports.lcChurchMul = exports.lcChurchAdd = exports.lcChurchSucc = exports.lcEvalChurch = exports.lcDecodeChurch = exports.lcChurchNumeral = exports.lcOmegaSmall = exports.lcOmega = void 0;
23
+ exports.applyHOSubst = exports.hoUnifyPattern = exports.isHigherOrderPattern = exports.hoIsPattern = exports.isBisimilar = exports.fibonacci = exports.naturals = exports.streamZipWith = exports.streamMap = exports.streamIterate = exports.streamRepeat = exports.streamTake = exports.ipcBottom = exports.ipcNot = exports.ipcImplies = exports.ipcOr = exports.ipcAnd = exports.ipcAtom = exports.play = exports.winningStrategy = exports.createPropositionalProver = exports.TableauProver = exports.TRANSLATIONS = exports.translateFormula = exports.findTranslationPath = exports.ctlToLTL = exports.ltlToCTL = exports.godelTranslation = exports.glivenkoTranslation = exports.lcChurchMul = exports.lcChurchAdd = exports.lcChurchSucc = exports.lcEvalChurch = exports.lcDecodeChurch = exports.lcChurchNumeral = exports.lcOmegaSmall = exports.lcOmega = void 0;
24
24
  // API programática (uso recomendado para integración)
25
25
  var api_1 = require("./api");
26
26
  Object.defineProperty(exports, "evaluate", { enumerable: true, get: function () { return api_1.evaluate; } });
@@ -254,4 +254,43 @@ Object.defineProperty(exports, "lcEvalChurch", { enumerable: true, get: function
254
254
  Object.defineProperty(exports, "lcChurchSucc", { enumerable: true, get: function () { return lambda_calc_1.churchSucc; } });
255
255
  Object.defineProperty(exports, "lcChurchAdd", { enumerable: true, get: function () { return lambda_calc_1.churchAdd; } });
256
256
  Object.defineProperty(exports, "lcChurchMul", { enumerable: true, get: function () { return lambda_calc_1.churchMul; } });
257
+ // profile-bridge — traducciones entre perfiles lógicos
258
+ var profile_bridge_1 = require("./profile-bridge");
259
+ Object.defineProperty(exports, "glivenkoTranslation", { enumerable: true, get: function () { return profile_bridge_1.glivenkoTranslation; } });
260
+ Object.defineProperty(exports, "godelTranslation", { enumerable: true, get: function () { return profile_bridge_1.godelTranslation; } });
261
+ Object.defineProperty(exports, "ltlToCTL", { enumerable: true, get: function () { return profile_bridge_1.ltlToCTL; } });
262
+ Object.defineProperty(exports, "ctlToLTL", { enumerable: true, get: function () { return profile_bridge_1.ctlToLTL; } });
263
+ Object.defineProperty(exports, "findTranslationPath", { enumerable: true, get: function () { return profile_bridge_1.findTranslationPath; } });
264
+ Object.defineProperty(exports, "translateFormula", { enumerable: true, get: function () { return profile_bridge_1.translateFormula; } });
265
+ Object.defineProperty(exports, "TRANSLATIONS", { enumerable: true, get: function () { return profile_bridge_1.TRANSLATIONS; } });
266
+ // tableau-framework — probador semántico por tableau
267
+ var tableau_framework_1 = require("./tableau-framework");
268
+ Object.defineProperty(exports, "TableauProver", { enumerable: true, get: function () { return tableau_framework_1.TableauProver; } });
269
+ Object.defineProperty(exports, "createPropositionalProver", { enumerable: true, get: function () { return tableau_framework_1.createPropositionalProver; } });
270
+ // game-semantics — juegos dialógicos IPC (Lorenzen-Felscher)
271
+ var game_semantics_1 = require("./game-semantics");
272
+ Object.defineProperty(exports, "winningStrategy", { enumerable: true, get: function () { return game_semantics_1.winningStrategy; } });
273
+ Object.defineProperty(exports, "play", { enumerable: true, get: function () { return game_semantics_1.play; } });
274
+ Object.defineProperty(exports, "ipcAtom", { enumerable: true, get: function () { return game_semantics_1.ipcAtom; } });
275
+ Object.defineProperty(exports, "ipcAnd", { enumerable: true, get: function () { return game_semantics_1.ipcAnd; } });
276
+ Object.defineProperty(exports, "ipcOr", { enumerable: true, get: function () { return game_semantics_1.ipcOr; } });
277
+ Object.defineProperty(exports, "ipcImplies", { enumerable: true, get: function () { return game_semantics_1.ipcImplies; } });
278
+ Object.defineProperty(exports, "ipcNot", { enumerable: true, get: function () { return game_semantics_1.ipcNot; } });
279
+ Object.defineProperty(exports, "ipcBottom", { enumerable: true, get: function () { return game_semantics_1.ipcBottom; } });
280
+ // coinduction — streams coinductivos y bisimulación
281
+ var coinduction_1 = require("./coinduction");
282
+ Object.defineProperty(exports, "streamTake", { enumerable: true, get: function () { return coinduction_1.take; } });
283
+ Object.defineProperty(exports, "streamRepeat", { enumerable: true, get: function () { return coinduction_1.repeat; } });
284
+ Object.defineProperty(exports, "streamIterate", { enumerable: true, get: function () { return coinduction_1.iterate; } });
285
+ Object.defineProperty(exports, "streamMap", { enumerable: true, get: function () { return coinduction_1.map; } });
286
+ Object.defineProperty(exports, "streamZipWith", { enumerable: true, get: function () { return coinduction_1.zipWith; } });
287
+ Object.defineProperty(exports, "naturals", { enumerable: true, get: function () { return coinduction_1.naturals; } });
288
+ Object.defineProperty(exports, "fibonacci", { enumerable: true, get: function () { return coinduction_1.fibonacci; } });
289
+ Object.defineProperty(exports, "isBisimilar", { enumerable: true, get: function () { return coinduction_1.isBisimilar; } });
290
+ // higher-order-unify — unificación de orden superior
291
+ var higher_order_unify_1 = require("./higher-order-unify");
292
+ Object.defineProperty(exports, "hoIsPattern", { enumerable: true, get: function () { return higher_order_unify_1.isPattern; } });
293
+ Object.defineProperty(exports, "isHigherOrderPattern", { enumerable: true, get: function () { return higher_order_unify_1.isHigherOrderPattern; } });
294
+ Object.defineProperty(exports, "hoUnifyPattern", { enumerable: true, get: function () { return higher_order_unify_1.unifyPattern; } });
295
+ Object.defineProperty(exports, "applyHOSubst", { enumerable: true, get: function () { return higher_order_unify_1.applyHOSubst; } });
257
296
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { type Env, type Neutral, type Term, type Type, type Value, alphaEq, ap, apN, lam, tArr, tBase, termToString, typeEq, typeToString, v, vClosure, vNeutral, vNeutralVar, } from './types';
2
+ export { apply, evaluate, makeFreshSupply, normalize, reify } from './nbe';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nbe/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,KAAK,EACV,OAAO,EACP,EAAE,EACF,GAAG,EACH,GAAG,EACH,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,CAAC,EACD,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // Punto de entrada público del módulo NbE.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.reify = exports.normalize = exports.makeFreshSupply = exports.evaluate = exports.apply = exports.vNeutralVar = exports.vNeutral = exports.vClosure = exports.v = exports.typeToString = exports.typeEq = exports.termToString = exports.tBase = exports.tArr = exports.lam = exports.apN = exports.ap = exports.alphaEq = void 0;
5
+ var types_1 = require("./types");
6
+ Object.defineProperty(exports, "alphaEq", { enumerable: true, get: function () { return types_1.alphaEq; } });
7
+ Object.defineProperty(exports, "ap", { enumerable: true, get: function () { return types_1.ap; } });
8
+ Object.defineProperty(exports, "apN", { enumerable: true, get: function () { return types_1.apN; } });
9
+ Object.defineProperty(exports, "lam", { enumerable: true, get: function () { return types_1.lam; } });
10
+ Object.defineProperty(exports, "tArr", { enumerable: true, get: function () { return types_1.tArr; } });
11
+ Object.defineProperty(exports, "tBase", { enumerable: true, get: function () { return types_1.tBase; } });
12
+ Object.defineProperty(exports, "termToString", { enumerable: true, get: function () { return types_1.termToString; } });
13
+ Object.defineProperty(exports, "typeEq", { enumerable: true, get: function () { return types_1.typeEq; } });
14
+ Object.defineProperty(exports, "typeToString", { enumerable: true, get: function () { return types_1.typeToString; } });
15
+ Object.defineProperty(exports, "v", { enumerable: true, get: function () { return types_1.v; } });
16
+ Object.defineProperty(exports, "vClosure", { enumerable: true, get: function () { return types_1.vClosure; } });
17
+ Object.defineProperty(exports, "vNeutral", { enumerable: true, get: function () { return types_1.vNeutral; } });
18
+ Object.defineProperty(exports, "vNeutralVar", { enumerable: true, get: function () { return types_1.vNeutralVar; } });
19
+ var nbe_1 = require("./nbe");
20
+ Object.defineProperty(exports, "apply", { enumerable: true, get: function () { return nbe_1.apply; } });
21
+ Object.defineProperty(exports, "evaluate", { enumerable: true, get: function () { return nbe_1.evaluate; } });
22
+ Object.defineProperty(exports, "makeFreshSupply", { enumerable: true, get: function () { return nbe_1.makeFreshSupply; } });
23
+ Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return nbe_1.normalize; } });
24
+ Object.defineProperty(exports, "reify", { enumerable: true, get: function () { return nbe_1.reify; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nbe/index.ts"],"names":[],"mappings":";AAAA,2CAA2C;;;AAE3C,iCAmBiB;AAbf,gGAAA,OAAO,OAAA;AACP,2FAAA,EAAE,OAAA;AACF,4FAAA,GAAG,OAAA;AACH,4FAAA,GAAG,OAAA;AACH,6FAAA,IAAI,OAAA;AACJ,8FAAA,KAAK,OAAA;AACL,qGAAA,YAAY,OAAA;AACZ,+FAAA,MAAM,OAAA;AACN,qGAAA,YAAY,OAAA;AACZ,0FAAA,CAAC,OAAA;AACD,iGAAA,QAAQ,OAAA;AACR,iGAAA,QAAQ,OAAA;AACR,oGAAA,WAAW,OAAA;AAGb,6BAA2E;AAAlE,4FAAA,KAAK,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,gGAAA,SAAS,OAAA;AAAE,4FAAA,KAAK,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { type Env, type Term, type Type, type Value } from './types';
2
+ export declare function makeFreshSupply(prefix?: string): () => string;
3
+ export declare function apply(fn: Value, arg: Value): Value;
4
+ export declare function evaluate(t: Term, env: Env): Value;
5
+ export declare function reify(value: Value, type: Type, freshSupply: () => string): Term;
6
+ export declare function normalize(t: Term, type: Type, freshSupply?: () => string): Term;
7
+ //# sourceMappingURL=nbe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nbe.d.ts","sourceRoot":"","sources":["../../src/nbe/nbe.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,GAAG,EAER,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,KAAK,EAIX,MAAM,SAAS,CAAC;AAKjB,wBAAgB,eAAe,CAAC,MAAM,SAAO,GAAG,MAAM,MAAM,CAG3D;AAMD,wBAAgB,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,CASlD;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAiBjD;AAKD,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,CAgB/E;AA8BD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAI/E"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // NbE — Normalization by Evaluation para STLC
4
+ // ============================================================
5
+ //
6
+ // Idea:
7
+ // - evaluate :: Term × Env → Value
8
+ // interpreta el término en el dominio semántico, donde las
9
+ // variables libres y aplicaciones atascadas viven como
10
+ // "neutrales" y las λ se vuelven clausuras nativas de TS.
11
+ // - reify :: Value × Type → Term
12
+ // baja un valor a un término en β-normal forma η-larga,
13
+ // guiándose por el tipo. La η-expansión emerge de "aplicar"
14
+ // el valor a una variable fresca cuando el tipo es flecha.
15
+ // - normalize = reify ∘ evaluate
16
+ //
17
+ // Resultado: forma normal única (β-corta η-larga) por término bien
18
+ // tipado, sin enumerar reducciones explícitas.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.makeFreshSupply = makeFreshSupply;
21
+ exports.apply = apply;
22
+ exports.evaluate = evaluate;
23
+ exports.reify = reify;
24
+ exports.normalize = normalize;
25
+ const types_1 = require("./types");
26
+ // ---------- Generador de nombres frescos ----------
27
+ // Generador determinístico: dado el mismo input, mismo output.
28
+ // El estado vive en el closure devuelto.
29
+ function makeFreshSupply(prefix = '_x') {
30
+ let n = 0;
31
+ return () => `${prefix}${n++}`;
32
+ }
33
+ // ---------- Aplicación semántica ----------
34
+ // Aplica un Value a otro Value. Si la cabeza es una clausura,
35
+ // β-reduce ahora mismo (extiende el entorno). Si es un neutral,
36
+ // queda atascado como aplicación neutral.
37
+ function apply(fn, arg) {
38
+ if (fn.kind === 'closure') {
39
+ const newEnv = new Map(fn.env);
40
+ newEnv.set(fn.param, arg);
41
+ return evaluate(fn.body, newEnv);
42
+ }
43
+ // fn.kind === 'neutral'
44
+ const head = { kind: 'app', head: fn.head, arg };
45
+ return (0, types_1.vNeutral)(head);
46
+ }
47
+ // ---------- Evaluador ----------
48
+ function evaluate(t, env) {
49
+ switch (t.kind) {
50
+ case 'var': {
51
+ const bound = env.get(t.name);
52
+ // Variable libre → neutral. Variable ligada → valor del entorno.
53
+ if (bound === undefined)
54
+ return (0, types_1.vNeutralVar)(t.name);
55
+ return bound;
56
+ }
57
+ case 'abs':
58
+ // Captura del entorno en clausura — la β-reducción se hará al aplicar.
59
+ return (0, types_1.vClosure)(env, t.param, t.paramType, t.body);
60
+ case 'app': {
61
+ const fnV = evaluate(t.fn, env);
62
+ const argV = evaluate(t.arg, env);
63
+ return apply(fnV, argV);
64
+ }
65
+ }
66
+ }
67
+ // ---------- Reificación ----------
68
+ // Trae el valor de vuelta a la sintaxis en forma normal η-larga.
69
+ // El tipo dirige la reificación: en cada arrow type η-expandimos.
70
+ function reify(value, type, freshSupply) {
71
+ if (type.kind === 'arrow') {
72
+ // η-expansión: λy:A. reify (apply value (var y)) : B
73
+ const y = freshSupply();
74
+ const body = reify(apply(value, (0, types_1.vNeutralVar)(y)), type.to, freshSupply);
75
+ return { kind: 'abs', param: y, paramType: type.from, body };
76
+ }
77
+ // type.kind === 'base'
78
+ if (value.kind === 'neutral') {
79
+ return reifyNeutral(value.head, freshSupply);
80
+ }
81
+ // Inalcanzable bajo tipado correcto: una clausura debería tener
82
+ // tipo flecha. Si esto pasa, el caller pasó un tipo equivocado.
83
+ throw new Error('NbE.reify: clausura encontrada en tipo base — el tipo no corresponde al término');
84
+ }
85
+ function reifyNeutral(n, freshSupply) {
86
+ if (n.kind === 'var')
87
+ return { kind: 'var', name: n.name };
88
+ // Aplicación neutral: el argumento se reifica sin saber su tipo
89
+ // exacto, pero como construimos siempre desde apply(...) sobre
90
+ // valores η-largos, basta con bajar recursivamente.
91
+ return {
92
+ kind: 'app',
93
+ fn: reifyNeutral(n.head, freshSupply),
94
+ arg: reifyValueUntyped(n.arg, freshSupply),
95
+ };
96
+ }
97
+ // Reificación sin tipo, usada dentro de spines neutrales donde el
98
+ // argumento ya está en forma normal por construcción (vino de
99
+ // evaluar un subtérmino y de aplicarse a neutrales). En el peor caso
100
+ // devuelve la forma "honesta" del valor.
101
+ function reifyValueUntyped(value, freshSupply) {
102
+ if (value.kind === 'neutral')
103
+ return reifyNeutral(value.head, freshSupply);
104
+ // Clausura sin tipo conocido: la bajamos β-normal honestamente
105
+ // aplicándola a una variable fresca (η-1 expansión local).
106
+ const y = freshSupply();
107
+ const body = reifyValueUntyped(apply(value, (0, types_1.vNeutralVar)(y)), freshSupply);
108
+ return { kind: 'abs', param: y, paramType: value.paramType, body };
109
+ }
110
+ // ---------- Normalización ----------
111
+ // NbE clásico: evalúa, luego reifica al tipo objetivo.
112
+ // Si no se pasa supply, se crea uno determinístico fresco por llamada.
113
+ function normalize(t, type, freshSupply) {
114
+ const supply = freshSupply ?? makeFreshSupply();
115
+ const v = evaluate(t, new Map());
116
+ return reify(v, type, supply);
117
+ }
118
+ //# sourceMappingURL=nbe.js.map